このページでは、暗号化されたストレージ バケットを管理する方法について説明します。特に、v2 暗号化の AEADKey の更新とローテーションに焦点を当てています。このドキュメントでは、kubectl コマンドを使用して AEADKeys と kekRef シークレットを管理するための前提条件と手順について説明します。この情報により、堅牢なデータ セキュリティを適用し、効果的なライフサイクル管理を通じて暗号鍵が漏洩するリスクを最小限に抑えることができます。
このページは、Google Distributed Cloud(GDC)のエアギャップ環境でストレージ バケットの暗号化設定を管理する、インフラストラクチャ オペレーター グループの IT 管理者やアプリケーション オペレーター グループのデベロッパーなどのユーザーを対象としています。詳細については、GDC エアギャップの対象読者に関するドキュメントをご覧ください。
始める前に
プロジェクト名前空間は、Management API サーバーのバケット リソースを管理します。バケットとオブジェクトを操作するには、プロジェクトが必要です。
次のオペレーションを実行するには、適切なバケット権限も必要です。バケットへのアクセス権を付与するをご覧ください。
暗号化リソースを管理する
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 を削除します。