【アップデート】Cloud Storageにバケット単位で暗号化タイプを強制・制限する機能が追加されました

【アップデート】Cloud Storageにバケット単位で暗号化タイプを強制・制限する機能が追加されました

2026.04.07

はじめに

こんにちは。
クラウド事業本部コンサルティング部の渡邉です。

2026年4月2日、Cloud Storageにバケット単位で暗号化タイプを強制・制限する機能が追加されました。

https://docs.cloud.google.com/storage/docs/release-notes#April_02_2026

この機能により、バケットに新規作成されるオブジェクトに対して、暗号化タイプをバケット単位で許可・禁止する制御ができるようになりました。たとえば「このバケットにはCMEKのみ許可する」、「CSEKの使用を禁止する」といったポリシーをバケットに直接設定できます。

今回は、この機能の概要と3種類の暗号化タイプの違いを整理したうえで、実際にgcloud CLIで暗号化タイプ強制を設定するまでの流れを見ていきたいと思います。

Cloud Storageの暗号化タイプ

Cloud Storageは、**デフォルトですべてのデータをサーバーサイドで暗号化(GMEK)**します。追加コストなしで自動的に適用されるこの暗号化に加えて、鍵管理の主体に応じて以下の3種類の暗号化方式を選択できます。

暗号化方式 略称 鍵の管理者 ユースケース
Google管理暗号化(標準暗号化) GMEK Google 一般用途。追加設定不要
顧客管理暗号化キー CMEK ユーザー(Cloud KMS) PCI-DSS・HIPAAなどコンプライアンス要件がある場合
顧客指定暗号化キー CSEK ユーザー(Google外部) Google外部の既存鍵管理システムを使用する場合

今回の新機能は、これら3つの暗号化タイプをバケット単位で許可・禁止できるようにするものです。

バケット暗号化タイプを強制・制限する機能

バケットの暗号化強制設定(Encryption Enforcement)を使うと、そのバケット内に新規作成されるオブジェクトに対して使用できる暗号化タイプを制御できます。

各暗号化タイプに対して、以下の2つの制限モードを指定します。

制限モード 意味
NotRestricted 使用を許可する
FullyRestricted 使用を禁止する

適用されるオペレーション

この設定は、バケット内に新規オブジェクトを作成するすべての操作に適用されます。

  • オブジェクトのアップロード
  • オブジェクトのコピー
  • オブジェクトの結合(Compose)
  • ソフト削除されたオブジェクトのリストア

想定されるユースケース

  • CMEKの強制: 標準暗号化とCSEKを禁止し、CMEKのみ許可することで、すべてのオブジェクトがCloud KMS管理の鍵で暗号化されることを保証する
  • ランサムウェア対策: CSEKを禁止することで、攻撃者がCSEKを用いて鍵なしには読めない状態にオブジェクトを上書きするリスクを軽減する
  • コンプライアンス統制: 標準暗号化を禁止することで、Googleが鍵を管理しない形(CMEK/CSEK)でのみデータが保存されることを保証する

やってみる

今回は、すでに作成済みのバケットに対して、バケット暗号化タイプを強制する機能を設定してみます。

前提条件

  • gcloud CLIがインストール・認証済みであること
  • 対象バケットが作成済みであること

必要なIAMロール

操作 必要なロール / 権限
新規バケットに設定を適用 roles/storage.admin(または storage.buckets.create
既存バケットの設定を更新 roles/storage.admin(または storage.buckets.update

暗号化強制の設定ファイルを作成する

gcloud CLIでは、暗号化強制の設定をJSONファイルで定義します。

以下は「CMEKのみ許可し、標準暗号化とCSEKを禁止する」設定の例です。

encryption-enforcement.json
{
  "gmekEnforcement": {
    "restrictionMode": "FullyRestricted"
  },
  "cmekEnforcement": {
    "restrictionMode": "NotRestricted"
  },
  "csekEnforcement": {
    "restrictionMode": "FullyRestricted"
  }
}

このファイルを encryption-enforcement.json としてローカルに保存します。

既存バケットに設定を適用する

gcloud storage buckets update コマンドの --encryption-enforcement-file フラグを使って設定を適用します。

gcloud storage buckets update gs://MY_BUCKET_NAME \
  --encryption-enforcement-file=encryption-enforcement.json

設定の反映には最大2分かかります。

Updating gs://MY_BUCKET_NAME/...                                                                                                                                                                   
  Completed 1

バケットの設定を確認する

設定が反映されたかどうかを確認します。

gcloud storage buckets describe gs://MY_BUCKET_NAME --raw --format="json(encryption)"

CMEKのみ許可している場合、以下のようなレスポンスが返ります。

{
  "encryption": {
    "customerManagedEncryptionEnforcementConfig": {
      "restrictionMode": "NotRestricted"
    },
    "customerSuppliedEncryptionEnforcementConfig": {
      "effectiveTime": "2026-04-06T06:56:29.666000+00:00",
      "restrictionMode": "FullyRestricted"
    },
    "googleManagedEncryptionEnforcementConfig": {
      "effectiveTime": "2026-04-06T06:56:29.666000+00:00",
      "restrictionMode": "FullyRestricted"
    }
  }
}

標準暗号化でのアップロードが拒否されることを確認する

標準暗号化(GMEK)を禁止したバケットに対して、通常のアップロードを試みます。

echo "test" > test.txt
gcloud storage cp test.txt gs://MY_BUCKET_NAME/
ERROR: HTTPError 412: Requested encryption type for object is not compliant with the bucket's encryption enforcement configuration.                                                                                
  Completed files 0/1 | 0B/5.0B 

FullyRestricted に設定した暗号化タイプでオブジェクトを作成しようとするとエラーが返り、アップロードが拒否されることを確認できました。

CMEKを指定してアップロードする

バケットにデフォルトのCloud KMSキーを設定し、CMEKでアップロードします。

# バケットにデフォルトKMSキーを設定
gcloud storage buckets update gs://MY_BUCKET_NAME \
  --default-encryption-key=projects/${GOOGLE_CLOUD_PROJECT}/locations/asia-northeast1/keyRings/<Key-ring>/cryptoKeys/<key>
Updating gs://MY_BUCKET_NAME/...                                                                                                                                                                   
Completed 1

# CMEKでオブジェクトをアップロード(デフォルトKMSキーが使われる)
gcloud storage cp test.txt gs://MY_BUCKET_NAME/
Copying file://test.txt to gs://MY_BUCKET_NAME/test.txt
  Completed files 1/1 | 5.0B/5.0B

アップロードに成功し、オブジェクトがCMEKで暗号化されていることを確認できます。

alt text

注意事項

  • 既存オブジェクトへの影響なし: 暗号化強制設定を変更しても、バケット内の既存オブジェクトの暗号化タイプは変わりません
  • デフォルトKMSキーが設定されたバケットの制限: バケットにデフォルトKMSキーが設定されている場合、CMEKとCSEKを同時に FullyRestricted にすることはできません(新規オブジェクトが作成できなくなるため)
  • 設定反映のタイムラグ: 設定変更は最大2分後に有効になります

まとめ

今回は、2026年4月2日にリリースされたCloud Storageにバケット単位で暗号化タイプを強制・制限する機能について解説と検証を行ってみました。

特に注目すべきポイントは以下の3点です。

  • バケット単位でCMEK強制が可能: 組織ポリシーに頼らなくても、特定バケットに対して「CMEKのみ許可」というポリシーをきめ細かく適用できる
  • ランサムウェア対策としての活用: CSEKを禁止することで、攻撃者がCSEKを悪用してデータを「暗号化人質」にするリスクを軽減できる
  • gcloud CLIで手軽に設定可能: JSONファイルと --encryption-enforcement-file フラグだけで設定できるシンプルな操作性

コンプライアンス要件がある環境やセキュリティ統制を強化したい場合に、ぜひ活用してみてください。

この記事が誰かの助けになれば幸いです。

以上、クラウド事業本部コンサルティング部の渡邉でした!

この記事をシェアする

関連記事