Key Management Framework (KMF) による Password2 暗号化

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む5読むのに数分
  • Key Management Frameworkでサポートされており、Password2 (双方向暗号化) フィールドタイプを使用して、職務の分離、キー保護、およびライフサイクル管理でカスタムフィールドを暗号化および復号化します。この暗号化と復号化は NIST 800-57 ガイドラインに従って行われ、FIPS 140-2-L3 保護を提供します。

    Password2 は、双方向暗号化でパスワードを格納するテキストフィールドです。双方向暗号化では、インスタンス内で復号化できるセキュアな暗号化された値としてデータを格納します。

    ヒント:
    Vancouver リリース以降、管理者は password2 フィールドの 3DES 暗号化を廃止して、新しい Advanced Encryption Standard (AES) を導入できます。詳細については、「password2 フィールドの GlideEncrypter を廃止」を参照してください。

    アクティベーション

    Password2 機能はデフォルトでアクティブにされています。この機能は glide.kmf.encrypter.enabled プロパティで制御され、すべての新しいインスタンスとアップグレードに対して true に設定されます。Password2 を使用するために 列レベル暗号化エンタープライズ を有効にする必要はありません。

    Password2 の仕組み

    Key Management Frameworkでは、基本システムの親暗号化モジュール cm_glide_encrypter が提供されます。このモジュールは、暗号化仕様と が従来の Password2 フィールドを復号化できるキーを提供します。

    図 : 1. Password2 の暗号化モジュール
    Password2 の暗号化モジュール。

    この cm_glide_encrypter モジュールにはサブモジュールを含めることができ、それぞれに独自のモジュールキーと仕様があります。Password2 フィールドがあるアプリケーションと同じアプリケーションスコープにサブモジュールが存在する場合、そのサブモジュールが使用されます。たとえば、ServiceNow® カスタマーサービス アプリケーションのテーブルにサブモジュールがあり、カスタマーサービス アプリケーションスコープのテーブルの Password2 フィールドに情報を書き込むと、暗号化プロセスは カスタマーサービス サブモジュールを呼び出します。プロセスでは、一意の AES 256 GCM 暗号化キーによる暗号化と復号化にもそのサブモジュールのキーが使用されます。アプリケーションスコープごとに 1 つのサブモジュールが許可されます。親モジュールは常にグローバルスコープに使用されるわけではありません。通常、新しいフィールドでは instance_level_glide_encrypter が使用されます。

    注:
    Washington DC で独自のサブモジュールを作成することはできません。サブモジュールは、Now Platform のさまざまなアプリケーションプラグインで提供されます。サブモジュールのキーはローテーションできますが、親の cm_glide_encrypter モジュールのキーはローテーションできません。

    ドメイン分離とオンプレミスの顧客

    KMF Password2 では Domain Separation はサポートされていません。Password2 はオンプレミスインスタンスで使用できます。

    従来の Password2 と現在の Password2

    Washington DCで、既存の Password2 フィールドがアップグレードされました。

    Password2 の現在の実装:
    • NIST 800-57 キーラッピングガイドラインに従って Key Management Framework を使用し、キー階層全体に FIPS 140-2-L3 保護を提供します。
    • 特定のアプリケーション専用の一意の KMF Password2 サブモジュールを作成し、アプリケーションスコープ全体を制御する機能が含まれています。各サブモジュールには、独自の AES 256 GCM 暗号化キーがあります。

    スクリプトの Password2 フィールド

    スクリプトを使用して Password2 フィールドにアクセスする場合は、テーブルスコープと同じスコープでスクリプトを実行します。setDisplayValue() を使用して Password2 値を暗号化し、getDecryptedValue() を使用して値を復号化して読み取ります。

    注:
    Password2 フィールドで GlideEncrypter() API を使用しないでください。
    このサンプルスクリプトは、「table_xyz」テーブルの password2 列の my@Password を暗号化する方法を示しています。
    
    var  gr =  new GlideRecord(‘table_xyz’);
    gr.setDisplayValue(‘pwd2column_name’, ‘my@Password’); 
    gr.insert();
    
    重要:
    Password2 フィールドに setValue() API を使用することはできません。

    このサンプルスクリプトは、同じフィールドを復号化して値を取得する方法を示しています。

    
    var  gr =  new GlideRecord(‘table_xyz’);
    gr.query();
    gr.next();
    var ge=gr.getElement('pwd2column_name');
    var ged1 = ge.getDecryptedValue(); 
    
    重要:
    getDecryptedValue() API はスコープ対象ではありません。グローバルに利用可能です。
    1. Password2 フィールドのデータを暗号化すると、Password2 フィールドが存在するアプリケーションのスコープが決定されます。
    2. プロパティが true に設定されている場合、アプリケーションと同じスコープを持つ cm_glide_encrypter 親モジュールのサブモジュールが検索されます。
      注:
      同じスコープのサブモジュールが存在する場合は、サブモジュール仕様とキーを使用して暗号化が実行されます。

    この図は、インスタンスが Password2 フィールドのデータを復号化する方法を説明しています。

    図 : 2. Password2 復号化フロー
    Password2 復号化フロー。

    KMF Password2 移行ジョブ

    以前のリリースからアップグレードする顧客向けに、移行ジョブが提供されています。従来の Password2 暗号化で暗号化されたデータを KMF Password2 サブモジュールキーで再暗号化します。再暗号化は、アプリケーションスコープ内に Password2 フィールドがあり、そのスコープ用に作成されたサブモジュールもあるテーブルにのみ適用されます。たとえば、XYZ_example アプリケーション (XYZ_example アプリケーションスコープを持つ) の従来の Password2 フィールドは、XYZ_example アプリケーションスコープのサブモジュールが cm_glide_encrypter 親モジュールの下に存在する場合にのみ再暗号化されます。

    サブモジュール内の KMF Password2 暗号化キーは、KMF キー階層で保護されます (エンベロープ暗号化)。