このページでは、暗号化されたストレージ バケットを管理する方法について説明します。特に、v2 暗号化の AEADKey の更新とローテーションに焦点を当てています。ここでは、kubectl コマンドを使用して AEADKey と kekRef シークレットを管理するための前提条件と手順について説明します。この情報を使用すると、堅牢なデータ セキュリティを適用し、効果的なライフサイクル管理を通じて暗号鍵が漏洩するリスクを最小限に抑えることができます。
このページは、Google Distributed Cloud(GDC)のエアギャップ環境でストレージ バケットの暗号化設定を管理する、インフラストラクチャ オペレーター グループの IT 管理者やアプリケーション オペレーター グループのデベロッパーなどのユーザーを対象としています。詳細については、GDC エアギャップの対象読者に関するドキュメントをご覧ください。
始める前に
ストレージ バケットは、特定プロジェクトにスコープ設定されたリソースです。プロジェクトはコンテナとして機能し、バケットをグループ化して、Management API サーバーを介した管理を可能にします。このページでオペレーションを実行する前に、新しいプロジェクトを作成するか、十分な権限を持つ既存のプロジェクトを選択する必要があります。
必要な IAM のロール
IAM プロジェクト管理者に連絡して、プロジェクトの Namespace で次のロールをリクエストします。
- プロジェクト バケット管理者(
project-bucket-admin): ストレージ バケットの作成、更新、削除。 - プロジェクト バケット オブジェクト閲覧者(
project-bucket-object-viewer): ストレージ バケットとオブジェクトの詳細を表示して確認します。
詳細については、バケットへのアクセス権を付与するをご覧ください。
環境を準備する
管理 API サーバーまたはグローバル API サーバーに対してコマンドを実行するには、次の操作を行います。
- ゾーン管理 API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。
- デュアルゾーン バケットの場合は、次の操作を行います。
- インフラストラクチャ オペレーター(IO)に、ペア設定されたゾーンの
BucketLocationConfigカスタム リソースが作成されていることを確認します。 - グローバル API サーバーの kubeconfig ファイルを生成します。
- インフラストラクチャ オペレーター(IO)に、ペア設定されたゾーンの
暗号化リソースを管理する
v2 暗号化を使用するバケットには、シークレット kekRef と複数の AEADKey が作成されます。kekRef は、使用されているアクティブなデフォルトの AEADKey を参照するために使用され、AEADKey には、バケットに属するアクティブな AEADKey とアーカイブされた AEADKey が含まれます。
バケットのアクティブなデフォルト AEADKey を更新する
ベスト プラクティスとして、約 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 に基づいて新しいデフォルトの AEADKey が作成されたことを確認します。
kubectl get aeadkeys -n NAMESPACE_NAME -l cmek.security.gdc.goog/resource-name=BUCKET_NAME
バケットのデフォルトの AEADKey をローテーションする
バケットの AEADKey が不正使用された場合は、バケットに関連付けられている鍵暗号鍵を手動でローテーションする必要があります。
プロセスを開始するには、まずアクティブなデフォルト鍵を更新する必要があります。これにより、新しいアクティブなデフォルト AEADKey が作成され、以前の鍵暗号鍵が無効としてマークされます。デフォルトの鍵が更新されると、後続のオブジェクト アップロードでは、新しい AEADKeys が鍵暗号鍵として使用されます。以前の AEADKey は破棄されないため、以前にこれらの鍵を使用して暗号化された既存のオブジェクトを引き続き復号できます。
次に、手順に沿ってバケット内のオブジェクトをダウンロードして再アップロードし、古いオブジェクトを削除します。
バケット内のすべてのオブジェクトを再アップロードしたら、非アクティブな AEADKey と古いオブジェクトをクリーンアップできます。AGE に基づいて、無効化された AEADKey を特定します。
kubectl get aeadkeys -n NAMESPACE_NAME -l cmek.security.gdc.goog/resource-name=BUCKET_NAME
最後に、手順に沿って AEADKeys を削除します。