【正解】D
【0からの解説】
①前提知識:
・Cloud Storage のデータは、何も設定しなくても Google が管理する暗号鍵で保存時に自動的に暗号化されています。
・顧客管理の暗号鍵(CMEK):Cloud Key Management Service(Cloud KMS)で自社が作成・管理する鍵を使って暗号化する方式です。鍵のローテーション周期、無効化・破棄、鍵へのアクセス権を自社で制御でき、規制対応でよく求められます。Cloud Storage で使うには、Cloud Storage のサービス エージェントに鍵の暗号化/復号のロール(Cloud KMS 暗号鍵の暗号化/復号)を付与します。
・バケットのデフォルトの鍵(default KMS key):バケットに CMEK をデフォルトの鍵として設定できます。ただしこの設定が適用されるのは「設定後に新しく書き込まれるオブジェクト」で、既存のオブジェクトは自動では再暗号化されません。既存のオブジェクトを CMEK に切り替えるには、オブジェクトを書き換える(rewrite する。例:gcloud storage objects update に --encryption-key を指定する)必要があります。
②要件の整理:求められているのは「既存のデータ」を CMEK で暗号化された状態に更新することです。あわせて、今後書き込まれるデータも CMEK で暗号化されることが望まれます。
③正解の理由:(1) Cloud KMS で CMEK を作成し、(2) 各バケットのデフォルトの暗号鍵をその CMEK に変更して今後の書き込みを CMEK で暗号化し、(3) 既存のオブジェクトに書き込み(書き換え)操作を行って CMEK で再暗号化する、という手順で既存データと新規データの両方が CMEK で保護されます。D はこの必要な手順をすべて含んでいます。
【誤りの選択肢】
A:バケットのデフォルトの鍵を変更するだけでは、変更後に書き込まれるオブジェクトにしか CMEK が適用されません。既存のオブジェクトは Google 管理の鍵のままなので、「既存のデータを更新する」という要件を満たしません。
B:restrictNonCmekServices(constraints/gcp.restrictNonCmekServices)は、指定したサービスで CMEK を使わないリソースの「新規作成」を禁止する予防的な組織のポリシーの制約です。既存のバケットやオブジェクトを再暗号化する効果はないため、要件を満たしません。
C:鍵を作成しても、バケットのデフォルトの鍵として設定しておらず、書き込み時にも鍵を指定していないため、既存オブジェクトを書き換えても再び Google 管理の鍵で暗号化されるだけです。CMEK への切り替えが行われません。
【参考】
顧客管理の暗号鍵を使用する | Cloud Storage顧客管理の暗号鍵 | Cloud Storage