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