このページでは、Storage Intelligence アドバイザーを使用して、バケットのデフォルトの顧客管理の暗号鍵(CMEK)ポリシーに違反するオブジェクトを特定して再暗号化する方法について説明します。
バケットにデフォルトの Cloud KMS 鍵を設定すると、アップロード リクエストで別の鍵が指定されていない限り、Cloud Storage はその鍵で新しいオブジェクトを暗号化します。ただし、デフォルトの鍵を設定する前にアップロードした既存のオブジェクトは、Cloud Storage によって自動的に再暗号化されることはありません。これらのオブジェクトは、元の暗号化方法で暗号化されたままになります。利用可能な暗号化方法の詳細については、データ暗号化オプションをご覧ください。
Storage Intelligence アドバイザーは、デフォルトの Cloud Key Management Service(Cloud KMS)鍵を持つバケットに、CMEK で暗号化されていないオブジェクトが含まれている場合に、「オブジェクトがデフォルトの CMEK バケット ポリシーに違反している」という検出結果を表示します。検出結果は、指標とオブジェクト メタデータから検出された、注意が必要な異常またはセキュリティ構成のギャップです。Storage Intelligence アドバイザーの概要については、Storage Intelligence アドバイザーについてをご覧ください。検出結果の一覧については、検出結果リファレンス カタログをご覧ください。
検出結果をトリガーするしきい値
Storage Intelligence を有効にすると、Cloud Storage はプロジェクト、フォルダ、組織全体のバケットレベルとオブジェクトレベルの暗号化メタデータを自動的に評価します。Storage Intelligence アドバイザーは、バケットが次の両方の条件を満たす場合に検出結果を生成します。
- バケットにデフォルトの Cloud KMS 鍵がある。つまり、
encryption.defaultKmsKeyNameフィールドが設定され、encryption.defaultEncryptionTypeフィールドがCMEKである。 - バケットに、
encryptionTypeメタデータ フィールドがCMEKではないオブジェクト(GMEKやCSEKなど)が 1 つ以上含まれている。
最初のベースラインの検出結果は、Storage Intelligence を有効にしてから 48 時間以内に表示され、24 時間ごとに更新されます。アラートの量を減らすため、Storage Intelligence アドバイザーは、ダッシュボードにバケットごとのオブジェクト レベルの違反を集計します。オブジェクト レベルの暗号化メタデータは、Storage Insights データセットでクエリできます。
検出結果に対応する
検出結果に対応するには、各バケットで影響を受けるオブジェクトを特定し、バケットのデフォルトの Cloud KMS 鍵で再暗号化します。
検出結果の詳細を表示して、影響を受けるバケットを特定し、各バケットのデフォルトの KMS 鍵のリソース名をコピーします。
省略可: CMEK で暗号化されていないバケット内のオブジェクトのリストを表示するには、BigQuery で Storage Insights データセットをクエリします。リンクされたデータセットを構成していない場合は、Storage Insights データセットを構成するをご覧ください。
SELECT bucket, name, encryptionType FROM `DATASET_NAME.object_attributes_latest_snapshot_view` WHERE bucket = 'BUCKET_NAME' AND encryptionType != 'CMEK' AND timeDeleted IS NULL AND softDeleteTime IS NULL;
次のように置き換えます。
DATASET_NAME: BigQuery の Storage Insights リンクされたデータセットの名前。BUCKET_NAME: 影響を受けるバケットの名前。
次の表を使用して、ライブ オブジェクトの再暗号化方法を選択します。
シナリオ 推奨される対処方法 詳細 影響を受けるライブ オブジェクトは標準の暗号化( GMEK)を使用していますストレージ バッチ オペレーションを使用して、GMEK で暗号化されたオブジェクトを大規模に再暗号化する 影響を受けるライブ GMEKオブジェクトの CSV マニフェスト ファイルを BigQuery からエクスポートし、ストレージ バッチ オペレーション ジョブを実行して、バケットのデフォルトの Cloud KMS 鍵でオブジェクトを書き換えます。影響を受けるライブ オブジェクトが顧客指定の暗号鍵( CSEK)を使用しているGoogle Cloud CLI を使用して CSEK で暗号化されたオブジェクトを再暗号化する Google Cloud には顧客指定の暗号鍵( CSEK)が保存されないため、ストレージ バッチ オペレーションでは CSEK で暗号化されたオブジェクトを復号できません。gcloud storage objects updateコマンドを使用して、CSEK で暗号化されたオブジェクトをバケットのデフォルトの Cloud KMS 鍵で書き換えます。バケット内のすべての非準拠オブジェクトを再暗号化すると、次の 24 時間の更新サイクル中に、そのバケットの検出結果がクリアされます。ただし、次の場合は、保持されているオブジェクト バージョンがユーザーまたは Cloud Storage によって完全に削除されるまで、検出結果はアクティブのままになります。
- オブジェクトのバージョニング: ライブ オブジェクトを書き換えると、Cloud Storage は元の非準拠オブジェクトを非現行バージョンとして保持します。検出結果をクリアするには、非現行オブジェクト バージョンを削除するか、オブジェクトのライフサイクル管理の
Deleteルールを構成します。 - 削除(復元可能): オブジェクトを書き換えるか削除すると、Cloud Storage は、バケットの削除(復元可能)の保持期間が終了するまで、元の非準拠バージョンを削除済み(復元可能)状態で保持します。
- オブジェクトのバージョニング: ライブ オブジェクトを書き換えると、Cloud Storage は元の非準拠オブジェクトを非現行バージョンとして保持します。検出結果をクリアするには、非現行オブジェクト バージョンを削除するか、オブジェクトのライフサイクル管理の
ストレージ バッチ オペレーションを使用して、GMEK で暗号化されたオブジェクトを大規模に再暗号化する
ライブ GMEK オブジェクトを大規模に再暗号化するには、BigQuery から CSV マニフェスト ファイルをエクスポートし、ストレージ バッチ オペレーション ジョブを実行します。
BigQuery で次の
EXPORT DATAクエリを実行して、Storage Insights データセットを使用して CSV マニフェストを作成します。EXPORT DATA OPTIONS( uri='gs://DESTINATION_BUCKET/manifests/objects_violating_default_policies_*.csv', format='CSV', overwrite=true, header=true ) AS SELECT bucket, name FROM `DATASET_NAME.object_attributes_latest_snapshot_view` WHERE bucket = 'BUCKET_NAME' AND encryptionType = 'GMEK' AND timeDeleted IS NULL AND softDeleteTime IS NULL;
次のように置き換えます。
DESTINATION_BUCKET: エクスポートされた CSV マニフェスト ファイルを保存する Cloud Storage バケットの名前。DATASET_NAME: BigQuery の Storage Insights リンクされたデータセットの名前。BUCKET_NAME: 影響を受けるバケットの名前。
ストレージ バッチ オペレーションの前提条件を完了し、バケットのデフォルトの Cloud KMS 鍵に対する Cloud KMS CryptoKey 暗号化 / 復号のロール(
roles/cloudkms.cryptoKeyEncrypterDecrypter)を次の両方のサービス エージェントに付与するよう管理者に依頼します。- ストレージ バッチ オペレーション サービス エージェント(
service-PROJECT_NUMBER@gcp-sa-storagebatchoperations.iam.gserviceaccount.com) - Cloud Storage サービス エージェント(
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)
PROJECT_NUMBERは、バケットを含むプロジェクトのプロジェクト番号に置き換えます。- ストレージ バッチ オペレーション サービス エージェント(
gcloud storage batch-operations jobs createコマンドを実行して、マニフェスト ファイルを使用して Storage バッチ オペレーション ジョブを作成し、バケットのデフォルトの Cloud KMS 鍵でオブジェクトを再暗号化します。オブジェクトを変更する前にジョブ構成を確認するには、--dry-runフラグを指定します。gcloud storage batch-operations jobs create JOB_NAME \ --bucket="BUCKET_NAME" \ --manifest-location="gs://DESTINATION_BUCKET/manifests/objects_violating_default_policies_*.csv" \ --rewrite-object="kms-key=DEFAULT_KMS_KEY"
次のように置き換えます。
JOB_NAME: バッチジョブの一意の ID(update-encryption-to-cmek-jobなど)。BUCKET_NAME: 影響を受けるバケットの名前。DESTINATION_BUCKET: エクスポートされたマニフェスト ファイルを含むバケットの名前。DEFAULT_KMS_KEY: バケットのデフォルトの Cloud KMS 鍵のリソース名。projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY形式で指定します。
Google Cloud CLI を使用して CSEK 暗号化オブジェクトを再暗号化する
Google Cloud には顧客指定の暗号鍵(CSEK)が保存されないため、ストレージ バッチ オペレーションでは CSEK で暗号化されたオブジェクトを復号できません。CSEK で暗号化されたオブジェクトをバケットのデフォルトの Cloud KMS 鍵で再暗号化するには、--decryption-keys フラグと --encryption-key フラグの両方を指定して gcloud storage objects update コマンドを実行します。
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \ --decryption-keys=DECRYPTION_KEY \ --encryption-key=DEFAULT_KMS_KEY
次のように置き換えます。
BUCKET_NAME: 影響を受けるバケットの名前。OBJECT_NAME: 再暗号化する CSEK 暗号化オブジェクトの名前。1 つのコマンドで複数のオブジェクトを更新するには、URI ワイルドカードまたは--read-paths-from-stdin(-I)フラグを使用します。DECRYPTION_KEY: オブジェクトを暗号化する RFC 4648 base64 でエンコードされた AES-256 鍵。DEFAULT_KMS_KEY: バケットのデフォルトの Cloud KMS 鍵のリソース名。projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY形式で指定します。
次のステップ
- 主なタスク:
- その他の調査結果を確認する:
- 関連するコンセプト: