このページでは、Storage Intelligence アドバイザーを使用して、バケットの暗号化適用構成に違反するオブジェクトを特定して再暗号化する方法について説明します。
バケットの暗号化タイプを適用または制限すると、Cloud Storage はバケット内のすべての新しいオブジェクトまたは書き換えられたオブジェクトにその構成を適用します。ただし、構成が有効になる前にアップロードした既存のオブジェクトは、Cloud Storage によって自動的に再暗号化されません。これらのオブジェクトは、元の暗号化方法で暗号化されたままになります。利用可能な暗号化方法の詳細については、データ暗号化オプションをご覧ください。
Storage Intelligence アドバイザーは、制限された暗号化方法を使用するオブジェクトがバケットに含まれている場合に、オブジェクトが適用された暗号化ルールに違反しているという検出結果を表示します。検出結果は、指標とオブジェクト メタデータから検出された異常またはセキュリティ構成のギャップであり、注意が必要です。Storage Intelligence アドバイザーの概要については、Storage Intelligence アドバイザーについてをご覧ください。検出結果の一覧については、検出結果リファレンス カタログをご覧ください。
検出結果をトリガーするしきい値
Storage Intelligence を有効にすると、Cloud Storage は、プロジェクト、フォルダ、または組織全体のバケットレベルの暗号化適用構成に対して、オブジェクト レベルの暗号化メタデータを自動的に評価します。Storage Intelligence アドバイザーは、バケットが次の両方の条件を満たす場合に検出結果を生成します。
- バケットは、
enforcedEncryptionAllowedTypes構成で 1 つ以上の暗号化方法を制限します。たとえば、標準暗号化(Google のデフォルトの暗号化、またはGMEK)、顧客管理の暗号鍵(CMEK)、顧客指定の暗号鍵(CSEK)などです。 - バケットに、
encryptionTypeメタデータ フィールドがバケットのenforcedEncryptionAllowedTypesリストにないオブジェクトが 1 つ以上含まれている。
最初のベースラインの検出結果は、Storage Intelligence を有効にしてから 48 時間以内に表示され、24 時間ごとに更新されます。アラートの量を減らすため、Storage Intelligence アドバイザーは、ダッシュボードにバケットごとのオブジェクト レベルの違反を集計します。オブジェクト レベルの暗号化メタデータは、Storage Insights データセットでクエリできます。
検出結果に対応する
検出結果に対応するには、各バケットで影響を受けるオブジェクトを特定し、許可された暗号化方式で非準拠オブジェクトを書き換えます。
検出結果の詳細を表示して、影響を受けるバケットと、許可されている暗号化タイプ(
CMEK、GMEK、CSEK)を特定します。省略可: 適用された暗号化構成に違反する影響を受けるバケット内のオブジェクトを一覧表示するには、BigQuery で Storage Insights データセットをクエリします。リンクされたデータセットを構成していない場合は、Storage Insights データセットを構成するをご覧ください。
SELECT bucket, name, encryptionType FROM `DATASET_NAME.object_attributes_latest_snapshot_view` WHERE bucket = 'BUCKET_NAME' AND encryptionType NOT IN (ALLOWED_ENCRYPTION_TYPES) AND timeDeleted IS NULL AND softDeleteTime IS NULL;
次のように置き換えます。
DATASET_NAME: BigQuery の Storage Insights リンクされたデータセットの名前。BUCKET_NAME: 影響を受けるバケットの名前。ALLOWED_ENCRYPTION_TYPES: バケットで許可される暗号化タイプのカンマ区切りのリスト('CMEK'、'CMEK', 'GMEK'など)。
次の表を使用して、ライブ オブジェクトの再暗号化方法を選択します。
シナリオ 推奨される対処方法 詳細 バケットで顧客管理の暗号鍵( CMEK)が許可されているCMEK でオブジェクトを再暗号化する ライブ GMEKオブジェクトの場合は、BigQuery から CSV マニフェスト ファイルをエクスポートし、ストレージ バッチ オペレーション ジョブを実行して、Cloud KMS 鍵でオブジェクトを書き換えます。CSEK で暗号化されたオブジェクトの場合は、gcloud storage objects updateコマンドを実行します。バケットで標準の暗号化( GMEK)が許可されている標準の暗号化(GMEK)でオブジェクトを再暗号化する バケットにデフォルトの Cloud KMS 鍵がないことを確認してから、 --clear-encryption-keyフラグを指定してgcloud storage objects updateコマンドを使用し、影響を受けるオブジェクトを標準の暗号化で書き換えます。バケットでは顧客指定の暗号鍵( CSEK)のみが許可されますCSEK でオブジェクトを再暗号化する gcloud storage objects updateコマンドを--encryption-keyフラグとともに使用して、影響を受けるオブジェクトを AES-256 暗号鍵で書き換えます。バケット内のすべての非準拠オブジェクトを再暗号化すると、次の 24 時間の更新サイクル中に、そのバケットの検出結果がクリアされます。ただし、次の場合は、保持されているオブジェクト バージョンがユーザーまたは Cloud Storage によって完全に削除されるまで、検出結果はアクティブのままになります。
- オブジェクトのバージョニング: ライブ オブジェクトを書き換えると、Cloud Storage は元の非準拠オブジェクトを非現行バージョンとして保持します。検出結果をクリアするには、非現行オブジェクト バージョンを削除するか、オブジェクトのライフサイクル管理の
Deleteルールを構成します。 - 削除(復元可能): オブジェクトを書き換えるか削除すると、Cloud Storage は、バケットの削除(復元可能)の保持期間が終了するまで、元の非準拠バージョンを削除済み(復元可能)状態で保持します。
- オブジェクトのバージョニング: ライブ オブジェクトを書き換えると、Cloud Storage は元の非準拠オブジェクトを非現行バージョンとして保持します。検出結果をクリアするには、非現行オブジェクト バージョンを削除するか、オブジェクトのライフサイクル管理の
CMEK でオブジェクトを再暗号化する
バケットで顧客管理の暗号鍵(CMEK)が許可されている場合は、現在の暗号化方法に基づいて、影響を受けるオブジェクトを再暗号化します。
ストレージ バッチ オペレーションを使用して、GMEK で暗号化されたオブジェクトを大規模に再暗号化する
GMEK で暗号化されたオブジェクトを CMEK で大規模に再暗号化するには、BigQuery から CSV マニフェスト ファイルをエクスポートし、ストレージ バッチ オペレーション ジョブを実行します。
BigQuery で次の
EXPORT DATAクエリを実行して、標準暗号化(GMEK)を使用する影響を受けるライブ オブジェクトの Storage Insights データセットを使用して CSV マニフェストを作成します。EXPORT DATA OPTIONS( uri='gs://DESTINATION_BUCKET/manifests/objects_violating_enforced_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_enforced_policies_*.csv" \ --rewrite-object="kms-key=KMS_KEY"
次のように置き換えます。
JOB_NAME: バッチジョブの一意の ID(re-encrypt-objects-jobなど)。BUCKET_NAME: 影響を受けるバケットの名前。DESTINATION_BUCKET: エクスポートされたマニフェスト ファイルを含むバケットの名前。KMS_KEY: オブジェクトの暗号化に使用する Cloud KMS 鍵のリソース名。鍵はバケットと同じロケーションに存在し、projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY形式を使用する必要があります。
Google Cloud CLI を使用して CSEK 暗号化オブジェクトを再暗号化する
Google Cloud には顧客指定の暗号鍵(CSEK)が保存されないため、ストレージ バッチ オペレーションでは CSEK で暗号化されたオブジェクトを復号できません。CSEK で暗号化されたオブジェクトを CMEK で再暗号化するには、--decryption-keys フラグと --encryption-key フラグの両方を指定して gcloud storage objects update コマンドを実行します。
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \ --decryption-keys=DECRYPTION_KEY \ --encryption-key=KMS_KEY
次のように置き換えます。
BUCKET_NAME: 影響を受けるバケットの名前。OBJECT_NAME: 再暗号化する CSEK 暗号化オブジェクトの名前。1 つのコマンドで複数のオブジェクトを更新するには、URI ワイルドカードまたは--read-paths-from-stdin(-I)フラグを使用します。DECRYPTION_KEY: オブジェクトを暗号化する RFC 4648 base64 でエンコードされた AES-256 鍵。KMS_KEY: オブジェクトの暗号化に使用する Cloud KMS 鍵のリソース名。projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY形式で指定します。
標準暗号化(GMEK)でオブジェクトを再暗号化する
標準の暗号化(Google のデフォルトの暗号化、または GMEK)でオブジェクトを再暗号化するには、バケットにデフォルトの Cloud KMS 鍵がないことを確認し、影響を受ける各オブジェクトのカスタム暗号鍵をクリアします。
バケットにデフォルトの Cloud KMS 鍵がないことを確認します。オブジェクトのカスタム暗号鍵を消去すると、Cloud Storage は標準の暗号化(
GMEK)でオブジェクトを暗号化します。ただし、バケットにデフォルトの Cloud KMS 鍵がない場合に限ります。バケットにデフォルトの Cloud KMS 鍵がある場合、Cloud Storage はその鍵でオブジェクトを暗号化します。バケットでも CMEK が制限されている場合、書き換えは失敗します。バケットからデフォルトの Cloud KMS 鍵を削除するには、
--clear-default-encryption-keyフラグを指定してgcloud storage buckets updateコマンドを実行します。gcloud storage buckets update gs://BUCKET_NAME \ --clear-default-encryption-key
BUCKET_NAMEは、影響を受けるバケットの名前に置き換えます。--clear-encryption-keyフラグを指定してgcloud storage objects updateコマンドを使用し、影響を受けるオブジェクトを標準の暗号化で書き換えます。オブジェクトが顧客指定の暗号鍵(CSEK)で暗号化されている場合は、--decryption-keysフラグも指定します。gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \ --clear-encryption-key \ [--decryption-keys=DECRYPTION_KEY]
次のように置き換えます。
BUCKET_NAME: 影響を受けるバケットの名前。OBJECT_NAME: 再暗号化するオブジェクトの名前。1 つのコマンドで複数のオブジェクトを更新するには、URI ワイルドカード(gs://BUCKET_NAME/**など)または--read-paths-from-stdin(-I) フラグを使用します。DECRYPTION_KEY: オブジェクトがCSEKで暗号化されている場合、オブジェクトを暗号化する RFC 4648 base64 でエンコードされた AES-256 鍵。オブジェクトがCMEKで暗号化されている場合は、--decryption-keysフラグを省略します。
CSEK でオブジェクトを再暗号化する
バケットで顧客指定の暗号鍵(CSEK)のみが許可されている場合は、--encryption-key フラグを指定して gcloud storage objects update コマンドを使用し、影響を受けるオブジェクトを AES-256 暗号鍵で書き換えます。オブジェクトが別の CSEK で暗号化されている場合は、--decryption-keys フラグも指定します。
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \ --encryption-key=YOUR_ENCRYPTION_KEY \ [--decryption-keys=DECRYPTION_KEY]
次のように置き換えます。
BUCKET_NAME: 影響を受けるバケットの名前。OBJECT_NAME: 再暗号化するオブジェクトの名前。1 つのコマンドで複数のオブジェクトを更新するには、URI ワイルドカードまたは--read-paths-from-stdin(-I)フラグを使用します。YOUR_ENCRYPTION_KEY: RFC 4648 の Base64 でエンコードされた AES-256 暗号鍵の文字列。DECRYPTION_KEY: オブジェクトが別のCSEKで暗号化されている場合、オブジェクトを暗号化する RFC 4648 base64 でエンコードされた AES-256 鍵。オブジェクトがGMEKまたはCMEKで暗号化されている場合は、--decryption-keysフラグを省略します。
次のステップ
- 主なタスク:
- その他の調査結果を確認する:
- 関連するコンセプト: