暗号化されたストレージ バケットを管理する

このページでは、暗号化されたストレージ バケットを管理する方法について説明します。特に、v2 暗号化の AEADKey の更新とローテーションに焦点を当てています。ここでは、kubectl コマンドを使用して AEADKeys と kekRef シークレットを管理するための前提条件と手順について説明します。この情報により、堅牢なデータ セキュリティを適用し、効果的なライフサイクル管理を通じて暗号鍵の侵害リスクを最小限に抑えることができます。

このページは、Google Distributed Cloud(GDC)エアギャップ環境でストレージ バケットの暗号化設定を管理するインフラストラクチャ オペレーター グループ内の IT 管理者やアプリケーション オペレーター グループ内のデベロッパーなどのユーザーを対象としています。詳細については、GDC エアギャップ ドキュメントの対象読者をご覧ください。

始める前に

ストレージ バケットは、特定のプロジェクトを対象とするリソースです。プロジェクトはコンテナとして機能し、バケットをグループ化して、Management API サーバーを介して管理できるようにします。このページで操作を行う前に、新しいプロジェクトを作成するか、十分な権限を持つ既存のプロジェクトを選択する必要があります。

必要な IAM のロール

IAM プロジェクト管理者に連絡して、プロジェクトの名前空間で次のロールをリクエストします。

  • バケット プロジェクト管理者(project-bucket-admin): ストレージ バケットを作成、更新、削除します。
  • バケット オブジェクト プロジェクト閲覧者(project-bucket-object-viewer): ストレージ バケットとオブジェクトの詳細を表示して確認します。

詳細については、バケットへのアクセス権を付与するをご覧ください。

環境を準備する

Management API サーバーまたはグローバル API サーバーに対してコマンドを実行するには、次の操作を行います。

  1. ゾーン管理 API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。
  2. デュアルゾーン バケットの場合は、次の操作を行います。
    • ペア設定されたゾーンに BucketLocationConfig カスタム リソースが作成されていることをインフラストラクチャ オペレーター(IO)に確認します。
    • グローバル API サーバーの kubeconfig ファイルを生成します。

暗号化リソースを管理する

v2 暗号化を使用するバケットには、シークレット kekRef と複数の AEADKeys が作成されます。kekRef は、使用されているアクティブなデフォルトの AEADKeys を参照するために使用されます。AEADKeys には、バケットに属するアクティブな AEADKeys とアーカイブされた AEADKeys が含まれます。

バケットのアクティブなデフォルト AEADKeys を更新する

ベスト プラクティスとして、約 420 億回のオブジェクト書き込み後にバケットのデフォルトの AEADKey を更新します。この事前対策により、セキュリティが強化され、鍵の枯渇を防ぐことができます。更新プロセスでは、新しい kekRef が作成され、以前の AEADKeys が無効になります。更新プロセスを開始するには、バケットに関連付けられている kekRef シークレットを削除します。

以前の kekRef は、次のコマンドを実行して取得できます。

kubectl get secrets -n NAMESPACE_NAME -l  object.gdc.goog/bucket-name=BUCKET_NAME

次に、以下を実行して既存の kekRef を削除します。

kubectl delete secrets OLD_KEKREF_NAME -n  NAMESPACE_NAME

削除が成功したら、次のコマンドを実行して、AGE に基づいて新しい kekRef が作成されたことを確認します。

kubectl get secrets -n NAMESPACE_NAME -l  object.gdc.goog/bucket-name=BUCKET_NAME

AGE に基づいて新しいデフォルトの AEADKeys が作成されたことを確認します。

kubectl get aeadkeys -n NAMESPACE_NAME -l  cmek.security.gdc.goog/resource-name=BUCKET_NAME

バケットのデフォルトの AEADKey をローテーションする

バケットの AEADKey が不正使用された場合は、バケットに関連付けられている鍵暗号鍵を手動でローテーションする必要があります。

このプロセスを開始するには、まずアクティブなデフォルト鍵を更新する必要があります。これにより、新しいアクティブなデフォルトの AEADKey が作成され、以前の鍵暗号鍵は無効としてマークされます。デフォルトの鍵が更新されると、それ以降のオブジェクトのアップロードでは、新しい AEADKeys が鍵暗号鍵として使用されます。以前の AEADKeys は破棄されないため、以前にそれらの鍵を使用して暗号化された既存のオブジェクトを復号できます。

次に、バケット内のオブジェクトをダウンロードして再アップロードし、古いオブジェクトを削除する手順に沿って操作します。

バケット内のすべてのオブジェクトを再アップロードしたら、非アクティブな AEADKey と古いオブジェクトをクリーンアップできます。AGE に基づいて、無効化された AEADKeys を特定します。

kubectl get aeadkeys -n NAMESPACE_NAME -l  cmek.security.gdc.goog/resource-name=BUCKET_NAME

最後に、AEADKeys を削除する手順に沿って操作します。