データ暗号化

デフォルトでは、次のデータは暗号化された状態でハイブリッド ランタイム プレーンに保存されます。

  • キャッシュ データ
  • 契約鍵データ
  • 鍵管理システム(KMS)データ
  • Key-Value マップ(KVM)データ

データ暗号化のために、ユーザーが特別な構成を行う必要はありません。ただし、なんらかの理由で(デフォルトの鍵の代わりに)独自の暗号鍵を使用したい場合は、このトピックの説明に従ってください。

暗号鍵のスコープ

Apigee ハイブリッド暗号鍵にはスコープがあります。たとえば、KMS 鍵のスコープは組織です。つまり、鍵は組織全体での KMS データの暗号化に使用されます。次の表に、各タイプの鍵のスコープを示します。

暗号鍵 範囲
契約 組織のみ
KMS 組織のみ
KVM 組織または環境

KVM ポリシーapiproxyによって policy または (API プロキシ リビジョン)のスコープが指定されている場合、組織レベルの鍵がデータの暗号化に使用されます。Apigee Edge で KVM がどのように使用されるかについては、Key-Value マップの使い方をご覧ください。

キャッシュ 環境のみ

デフォルトの暗号鍵について

デフォルトでは、Apigee ハイブリッドには、契約、KVM、KMS、キャッシュ データの暗号化に使用される一連の Base64 エンコード鍵が用意されています。Apigee ハイブリッド インストーラはランタイム プレーンに鍵を Kubernetes Secret として保存し、AES-128 標準暗号化を使用してデータを暗号化するときにこれらの鍵を使用します。このような鍵はユーザーの管理下にあります。つまり、ハイブリッド管理プレーンがこれらの鍵を認識することはありません。

デフォルトの鍵は、新しい Apigee ハイブリッド コンポーネントの作成時にそれらすべてのコンポーネントに適用されます。

デフォルトの暗号鍵の変更

必要に応じてデフォルトの暗号鍵を変更できます。これは必須ではありません。複数のデフォルトの鍵を置き換える手順は次のとおりです。

  1. 次のスタンザをオーバーライド ファイルにコピーします。この構成によって、KMS と KVM の暗号鍵を組織レベルで、KVM とキャッシュの暗号鍵を環境レベルで変更できます。
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
        contractEncryptionKey: base64-encoded-key
    
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. 置き換える鍵ごとに新しい鍵を生成します。各鍵は、16、24、32 バイト長の Base64 エンコード文字列である必要があります。エンコードされた鍵の作成方法もご覧ください。
  3. デフォルトの鍵を新しい鍵に置き換えます。この例では、すべてのデフォルトの鍵が鍵に置き換えられます。
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
        contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="

デフォルトの鍵をオーバーライドする

オーバーライド ファイルで指定された組織または特定の環境のキーをオーバーライドできます。コンポーネントを作成するときに、組織または個々の環境に指定したキーがデフォルトをオーバーライドします。

  1. 次のスタンザをオーバーライド ファイルにコピーします。この構成によって、KMS と KVM の暗号鍵を組織レベルで、KVM とキャッシュの暗号鍵を環境レベルで変更できます。
    org:YOUR_ORG_NAME
    
    kmsEncryptionKey: base64-encoded-key
    kvmEncryptionKey: base64-encoded-key
    contractEncryptionKey: base64-encoded-key
    
    envs
      - name: ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
    
      - name: 2ND_ENV_NAME
        kvmEncryptionKey: base64-encoded-key
        kmsEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. オーバーライドする鍵ごとに新しい鍵を生成します。各鍵は、16、24、32 バイト長の Base64 エンコード文字列である必要があります。エンコードされた鍵の作成方法もご覧ください。
  3. オーバーライドする鍵を指定します。この例では、すべてのデフォルトの鍵が鍵に置き換えられます。
    org:hybrid-org
    
    kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
    kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
    contractEncryptionKey: "RDEyMzQ1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: prod
        kvmEncryptionKey: "QzEyM2c3Njc4OTAxMjM0NQ=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "QjEyAvC1Njc4OTAxMjM0NQ=="
    
    envs:
      - name: test
        kvmEncryptionKey: "A1b2C3d4E5f6G7h8I9j10K=="
        kmsEncryptionKey: "QTEyMz1b2jc4OTAxMjM0NQ=="
        cacheEncryptionKey: "B1c2D3e4F5f6H7i8J9k10L=="
    

鍵の変更を適用する

次の Helm コマンドを使用して、オーバーライド ファイルをクラスタに適用します。
  • 組織の契約鍵または KVM 鍵を変更する場合は、組織を更新します。
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
  • 環境のキャッシュ鍵または KVM 鍵を変更する場合は、環境を更新します。
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE.yaml
    
  • KMS 鍵を変更する場合は、組織と環境の両方を更新します。
    helm upgrade ORG_NAME apigee-org/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    
    helm upgrade ENV_NAME apigee-env/ \
      --namespace apigee \
      --set env=ENV_NAME \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

下位互換性に関する注意事項

Apigee ハイブリッドを初めてインストールするときにオーバーライド ファイルから暗号鍵を削除すると、暗号化が実質的に無効になり、値は暗号化されていない状態で保存されます。インストール後に鍵を提供して暗号化を有効にした場合、既存のデータは暗号化されていない状態ですが、その後に追加されたデータは暗号化されます。システムは引き続き、暗号化されていないデータと新しい暗号化データを通常の方法で処理します。

また、ランタイム データが暗号化された後に暗号鍵を変更することはできないのでご注意ください。

エンコードされた鍵の作成方法

KVM、KMS、キャッシュの暗号化には、適切な形式の Base-64 エンコード鍵が必要です。この目的で使用される鍵は、以下で説明するように、16、24、または 32 バイト長の Base-64 エンコード鍵でなければなりません。

次の例のコマンドでは、ランダム生成の適切な 32 文字の Base64 エンコード文字列が生成されます。

head -c 32 /dev/random | openssl base64