コード署名の概要
コード署名は、機密性の高いアプリケーション構成データとスクリプトを使用する前に検証することで、セキュリティの強化に役立ちます。
コード署名は、データの信頼性と整合性を確認するために後でチェックされるデータのデジタル署名を作成します。コード署名は、ServiceNow Vault のコンポーネントとしてライセンスされるモジュールです。
コード署名は、実行されている操作の背後にある意図を宣言し、リソースまたはレコードを、意図した目的で使用できるかどうかを検証します。コード署名を容易にするために、キー管理フレームワーク (KMF) は、デジタル署名のためにデジタル証明書と業界標準の非対称暗号化を使用します。 プラットフォームとインフラストラクチャ側で内部的にコード署名を使用します。コード署名は、特定のテーブルのコンテンツや、特定のメタデータテーブルにあるレコードのサブセットのコンテンツに署名する方法を提供します。 |
コード署名は、信頼できるインスタンスと保護されたインスタンスの間で安全な 信頼の輪 (Circle of Trust) (COT) を使用して、承認された安全な信頼できるインスタンスのみがコード署名機能にアクセスできるようにします。
ユースケース
コード署名の一般的なユースケースを次に示します。
- 許可されていないコード変更を防止:許可されたスクリプト、統合、およびワークフローのみがインスタンスに展開されていることを確認します。これにより、悪意のある変更や偶発的な変更からインスタンスが保護され、運用リスクとコストが削減されます。
- MID サーバーおよび統合ハブの安全な操作:許可されていない、または改ざんされた ECC キューレコードが MID サーバーまたは 統合ハブによって処理されるのを防ぎます。これにより、ServiceNow と外部システム間の安全な統合が維持されます。
- 信頼の輪の確立:信頼できるインスタンスと保護されたインスタンスの間に信頼の輪を設定します。これにより、他のセキュリティ対策が侵害された場合でも、保護されたインスタンスで実行されているコードの整合性は損なわれません。
- 安全なプラグインの展開:インスタンスにインストールされているプラグインの信頼性を検証し、サードパーティのプラグインからの悪意のあるコードや改ざんされたコードの導入を防止します。
- 安全なソフトウェア開発ライフサイクル (SDLC):コード署名を SDLC に統合して、署名およびテスト済みのコードのみが開発インスタンスから保護されたインスタンスに移動されるようにします。
信頼の輪が悪意のある攻撃を防ぐ方法の例を次に示します。
攻撃者が一連のレコードにアクセスし、顧客の保護されたインスタンスで構造化照会言語 (SQL) ステートメントを変更すると仮定します。MID サーバーはデータソース要求を検出し、悪意のある SQL の変更を実行します。これにより、その健全性が損なわれる可能性があります。ただし、信頼の輪 (CoT) を実装することで、システム管理者は次のシナリオの脆弱性を効果的に軽減できます。
- アドミニストレーターは、信頼できるインスタンスのデータソースを更新し、統合レコードにデジタル署名します。
- 更新されたデータは、信頼できるインスタンスから保護されたインスタンスに安全にプッシュされます。
- 攻撃者が悪意のある SQL クエリを使用して保護されたインスタンスを更新しようとします。
- MID サーバーは、悪意のあるデータソース要求を識別します。
- 有効なデジタル署名がないため、要求が却下されました。
- メッセージが顧客の保護されたインスタンスに返送され、デジタル署名の問題が通知され、それ以上のアクションは必要ないことを確認するメッセージが表示されます。
コード署名の検証とジョブ
有効な構成を持つすべてのメタデータテーブルは、コード署名メタデータプラグイン (com.glide.code_signing) を使用してビルド時に署名されます。テーブルに署名することを選択した場合、セキュリティアドミニストレーターロールを持つ admin ユーザーは、コード署名暗号化ジョブにアクセスできます。
- 更新セットに署名する。
- レコードに一括署名する。
- 添付ファイルに一括署名する。
- 更新セットに署名する。
- このジョブでは、更新セット内の署名構成に一致するレコードに署名します。このジョブでは、すべての新しい署名レコードと検証証明書も更新セットに追加します。
図 : 1. 更新セットの KMF 署名レコード - レコードに一括署名する
このジョブでは、特定のメタデータテーブルに適用される署名構成に一致するすべてのレコードに署名します。
- 添付ファイルに一括署名する
- このジョブでは、指定された署名構成に一致するテーブルに添付されているすべての添付ファイルレコードに署名します。
図 : 2. レコードに一括署名する暗号化ジョブ