コード署名の概要
コード署名は、許可されたスクリプトのみが MID サーバーで実行できることを保証するための暗号化検証を提供します。コード署名は、不正または改ざんされた ECC キューレコードが MID サーバーによって処理されるのを防ぎ、ServiceNow と外部システム間の統合の整合性を維持します。
コード署名は、データの信頼性と整合性を確認するために後でチェックされるデータのデジタル署名を作成します。コード署名は、ServiceNow Vault のコンポーネントとしてライセンスされるモジュールです。
|
コード署名は、実行されている操作の背後にある意図を宣言し、リソースまたはレコードを、意図した目的で使用できるかどうかを検証します。コード署名を容易にするために、キー管理フレームワーク (KMF) は、デジタル署名のためにデジタル証明書と業界標準の非対称暗号化を使用します。 プラットフォームとインフラストラクチャ側で内部的にコード署名を使用します。コード署名は、特定のテーブルのコンテンツや、特定のメタデータテーブルにあるレコードのサブセットのコンテンツに署名する方法を提供します。 |
コード署名では、信頼できるインスタンスと保護されたインスタンスの間で安全な信頼の輪 (Circle of Trust) (COT) を使用して、承認された安全な信頼インスタンスのみがコード署名機能にアクセスできるようにします。
コード署名が環境を保護する方法
コード署名がないと、 ServiceNow レコードにアクセスした攻撃者は、保護されたインスタンスの SQL ステートメントを変更できます。MID サーバーは、このデータソース要求を処理するときに悪意のある SQL コマンドを実行し、システムの整合性とセキュリティを侵害する可能性があります。
コード署名を使用して Circle of Trust アーキテクチャを実装する場合、MID サーバーへのデータ転送は次の検証プロセスに従います。このプロセスにより、信頼できるインスタンスから生成された許可されたコードのみが MID サーバーで実行できるようになります。このプロセスにより、システムを侵害する可能性のある潜在的な攻撃ベクトルが削減されます。
- デジタル署名は、信頼できるインスタンス内で作成または更新されたデータソースに適用されます。
- コード署名プロセスを使用して、署名されたデータを信頼できるインスタンスから保護されたインスタンスに転送します
- MID サーバーは、すべての受信要求でデジタル署名を検証し、有効な署名がない要求は自動的に却下します。
- MID サーバーが要求を却下すると、その却下がログに記録され、保護されたインスタンスに通知が送信されます。
コード署名を実装するメリット
コード署名には、いくつかの重要な利点があります。
- 実行コントロール
- MID サーバーでは、暗号化で検証されたスクリプトのみを実行できます
- 改ざん検出
- 署名されたレコードに対する変更は直ちに識別され、ブロックされます。
- 自動保護
- システムは、手動による介入を必要とせずにセキュリティの適用を処理します。
- 包括的なログ記録
- 署名検証が失敗すると、詳細な監査レコードが生成されます。
コード署名の検証とジョブ
有効な構成を持つすべてのメタデータテーブルは、コード署名メタデータプラグイン (com.glide.code_signing) を使用してビルド時に署名されます。テーブルに署名することを選択した場合、セキュリティアドミニストレーターロールを持つ admin ユーザーは、コード署名暗号化ジョブにアクセスできます。
- 更新セットに署名する。
- レコードに一括署名する。
- 添付ファイルに一括署名する。
- 更新セットに署名する。
- このジョブでは、更新セット内の署名構成に一致するレコードに署名します。このジョブでは、すべての新しい署名レコードと検証証明書も更新セットに追加します。
図 : 1. 更新セットの KMF 署名レコード - レコードに一括署名する
-
このジョブでは、特定のメタデータテーブルに適用される署名構成に一致するすべてのレコードに署名します。
- 添付ファイルに一括署名する
- このジョブでは、指定された署名構成に一致するテーブルに添付されているすべての添付ファイルレコードに署名します。
図 : 2. レコードに一括署名する暗号化ジョブ