3.4.7.1 暗号化キーのKubernetesシークレットの生成

非同期コールをサポートするために、MicroTxは認可トークンとリフレッシュ・トークンを格納します。トークンを格納するには、トークンを暗号化する必要があります。トークンを直接格納することはできないためです。トークンを暗号化するには、暗号化キーを作成します。

MicroTxは、指定した暗号化キーを使用してトークンを暗号化します。MicroTxから参加側サービスへの非同期コールがある場合、MicroTxは、暗号化されたトークンをフェッチして復号化してから、そのトークンを認可ヘッダーに添付します。
authorizationauthTokenPropagationEnabledプロパティを有効化した場合は、暗号化キーを生成し、そのキーをDockerシークレットに追加する必要があります。生成する暗号化キーには、次の属性が必要です。
  • 対称アルゴリズム: AES-256
  • 暗号モード: GCMモードのAES
  • キーの長さ: 32バイト
  • 初期化ベクトルの長さ: 96ビット

MicroTxは、アクセス・トークンおよびリフレッシュ・トークンを暗号化し、後で参加側サービスへのコール時に使用します。MicroTxは、トランザクションごとに初期化ベクトルの新しい値を生成します。各トランザクション・レコードには、キー・バージョンや初期化ベクトル値などの暗号化されたメタデータ情報が含まれます。

  1. 次のコマンドを実行して、キーの長さが32バイトの暗号化キーを生成します。
    openssl rand -hex 16
    生成された値を書き留めます。たとえば、e9f0adab17c0180425147166c2ff1cd3です。
  2. 生成した暗号化キーを値として使用して、Kubernetesシークレットを作成します。このシークレットは、MicroTxをインストールするネームスペースに作成する必要があります。

    次のサンプル・コマンドでは、encryption-secret-key1という名前のKubernetesシークレットがotmmネームスペースに作成されます。

    kubectl create secret generic encryption-secret-key1 \ --from-literal=secret='e9f0adab17c0180425147166c2ff1cd3' -n otmm
  3. Kubernetesシークレットの名前とそのバージョンを書き留めます。これらの値は、values.yamlファイルのsecretKeyNameフィールドおよびversionフィールドに指定します。

    次のコード・スニペットは、values.yamlファイルのencryptionフィールドのサンプル値を示しています。この例のサンプル値は、このトピックのサンプル・コマンドで使用された値に基づいています。

    encryption:
      encryptionSecretKeyVersion: "1"
      encryptionSecretKeys:
          - secretKeyName: "encryption-secret-key0"
            version: "0"
          - secretKeyName: " encryption-secret-key1"
            version: "1"