このページでは、バケットでデフォルトの鍵を設定する方法や個々のオブジェクトに鍵を追加する方法など、手動で作成した Cloud Key Management Service の暗号鍵を Cloud Storage で使用する方法について説明します。Cloud KMS 暗号鍵は顧客管理の暗号鍵(CMEK)です。このような鍵は、Cloud KMS で作成および管理され、HSM クラスタ内または外部でソフトウェア鍵として保存されます。
代わりに、Cloud KMS の Autokey 機能を使用して Cloud Storage バケットとその中のオブジェクトを保護するキーリングと鍵をオンデマンドで生成する場合は、Cloud Storage リソースでの Autokey の使用をご覧ください。CMEK と Cloud KMS with Autokey や Google のデフォルト暗号化を比較して適切な鍵タイプを判断するには、CMEK と Google-owned and Google-managed encryption keysの比較をご覧ください。
始める前に
Cloud Storage でこの機能を使用する前に、以下の準備が必要です。
暗号鍵を格納するプロジェクトの Cloud KMS API を有効にする。
暗号鍵を格納するプロジェクトに対して十分な権限を持つ。
鍵が保存されるプロジェクトを所有している場合は、必要な権限があると考えられます。
新しい暗号キーリングと鍵を作成する予定がある場合は、
cloudkms.keyRings.createとcloudkms.cryptoKeys.createの権限が必要です。キーリングと鍵を使用する予定がある場合は、それが新規か既存かを問わず、暗号化に使用する鍵に対する
cloudkms.cryptoKeys.setIamPolicy権限が必要です。この権限があると、Cloud Storage サービス エージェントに Cloud KMS 鍵へのアクセス権を付与できます。
上記の権限は、Cloud KMS 管理者ロールに含まれています。
この役割を含め、Cloud KMS の役割の取得方法については、IAM と Cloud KMS の使用をご覧ください。
Cloud KMS キーリングと、キーリング内に少なくとも 1 つの鍵を持っている。
キーリングは暗号化するデータと同じロケーションに存在する必要がありますが、別のプロジェクトに配置することもできます。指定できる Cloud KMS のロケーションについては、Cloud KMS のロケーションをご覧ください。
Cloud Storage バケット内のオブジェクトを操作するための十分な権限を持つ。
バケットを含むプロジェクトを所有している場合は、必要な権限を持っていると考えられます。
IAM を使用する場合は、バケットにオブジェクトを書き込むための
storage.objects.create権限とバケットからオブジェクトを読み取るためのstorage.objects.get権限が必要です。これらの権限を持つロール(ストレージ オブジェクト管理者など)を取得する手順については、IAM 権限の使用をご覧ください。ACL を使用する場合は、バケットにオブジェクトを書き込むためのバケット範囲の
WRITER権限とバケットからオブジェクトを読み取るためのオブジェクト範囲のREADER権限が必要です。設定方法については、ACL の設定をご覧ください。
Cloud Storage バケットを含むプロジェクトに関連付けられているサービス エージェントのメールアドレスを取得する。この手順を行うと、サービス エージェントが自動的に作成されます(存在しない場合)。
サービス エージェントに Cloud KMS 鍵を割り当てる
CMEK を使用するには、バケットに関連付けられている Cloud Storage サービス エージェントに、Cloud KMS 鍵を使用して暗号化と復号を行う権限を付与します。
コンソール
- Google Cloud コンソールで、[鍵管理] ページに移動します。
使用する鍵を含むキーリングの名前をクリックします。
使用する鍵のチェックボックスをオンにします。
右側のウィンドウの [権限] タブが有効になります。
[プリンシパルを追加] ダイアログで、アクセス権を付与する Cloud Storage サービス エージェントのメールアドレスを指定します。
[ロールを選択] プルダウンで、[クラウド KMS 暗号鍵の暗号化 / 復号化] を選択します。
[追加] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud storage service-agent コマンドを --authorize-cmek フラグとともに使用して、バケットに関連付けられたサービス エージェントに、Cloud KMS 鍵を使用してオブジェクトを暗号化、復号する権限を付与します。
gcloud storage service-agent --project=PROJECT_STORING_OBJECTS --authorize-cmek=KEY_RESOURCE
ここで
PROJECT_STORING_OBJECTSは、暗号化または復号するオブジェクトが含まれているプロジェクトの ID または番号です。例:my-pet-projectKEY_RESOURCEは Cloud KMS 鍵リソースです。
クライアント ライブラリ
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
REST API
JSON API
gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。次の情報が含まれる JSON ファイルを作成します。
{ "policy": { "bindings": { "role": "roles/cloudkms.cryptoKeyEncrypterDecrypter", "members": "serviceAccount:SERVICE_AGENT_EMAIL_ADDRESS" }, } }
ここで、
SERVICE_AGENT_EMAIL_ADDRESSはサービス エージェントに関連付けられたメールアドレスです。例:service-7550275089395@gs-project-accounts.iam.gserviceaccount.comcURLを使用して、POST setIamPolicyリクエストで Cloud KMS API を呼び出します。curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://cloudkms.googleapis.com/v1/KEY_RESOURCE:setIamPolicy"
ここで
JSON_FILE_NAMEは、手順 2 で作成した JSON ファイルのパスです。KEY_RESOURCEは Cloud KMS 鍵リソースです。
XML API
XML API を使用して、Cloud KMS をサービス エージェントに割り当てることはできません。代わりに、gcloud CLI などの他の Cloud Storage ツールを使用してください。
デフォルトの暗号鍵を使用する
以降のセクションでは、デフォルトの暗号鍵の使用方法について説明します。
バケットのデフォルトの鍵を設定する
オブジェクトがバケットに書き込まれたときにデフォルトで使用される Cloud KMS 鍵を追加、変更、または削除するには:
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
バケットのリストで、目的のバケットの名前をクリックします。
[バケットの詳細] ページで、[構成] タブをクリックします。
暗号化タイプのエントリに関連付けられた鉛筆アイコンをクリックします。
バケットのデフォルトの Cloud KMS 鍵を設定または削除します。
バケットで現在 Cloud KMS 鍵が使用されていない場合は、[顧客管理の暗号鍵] ラジオボタンを選択し、関連するプルダウン メニューで使用可能な鍵を選択します。
バケットで現在 Cloud KMS 鍵が使用されている場合は、プルダウン メニューで Cloud KMS 鍵を変更するか、[Google-managed encryption key] ラジオボタンを選択して Cloud KMS 鍵を削除します。
[保存] をクリックします。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
適切なフラグを指定して、gcloud storage buckets update コマンドを使用します。
gcloud storage buckets update gs://BUCKET_NAME FLAG
ここで
BUCKET_NAMEは、関連するバケットの名前です。例:my-bucket。FLAGは、バケットのデフォルト鍵に必要な設定です。次のいずれかの形式で指定してください。- デフォルトの鍵を追加または変更する場合は
--default-encryption-key=と Cloud KMS 鍵リソース。 - バケットのデフォルト鍵を削除する場合は
--clear-default-encryption-key。
- デフォルトの鍵を追加または変更する場合は
成功した場合、レスポンスは次のようになります。
Updating gs://my-bucket/... Completed 1
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
次のサンプルでは、バケットにデフォルトの顧客管理の暗号鍵を設定します。
次のサンプルでは、デフォルトの顧客管理の暗号鍵をバケットから削除します。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
次のサンプルでは、バケットにデフォルトの顧客管理の暗号鍵を設定します。
次のサンプルでは、デフォルトの顧客管理の暗号鍵をバケットから削除します。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
次のサンプルでは、バケットにデフォルトの顧客管理の暗号鍵を設定します。
次のサンプルでは、デフォルトの顧客管理の暗号鍵をバケットから削除します。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
次のサンプルでは、バケットにデフォルトの顧客管理の暗号鍵を設定します。
次のサンプルでは、デフォルトの顧客管理の暗号鍵をバケットから削除します。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
次のサンプルでは、バケットにデフォルトの顧客管理の暗号鍵を設定します。
次のサンプルでは、デフォルトの顧客管理の暗号鍵をバケットから削除します。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
次のサンプルでは、バケットにデフォルトの顧客管理の暗号鍵を設定します。
次のサンプルでは、デフォルトの顧客管理の暗号鍵をバケットから削除します。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
次のサンプルでは、バケットにデフォルトの顧客管理の暗号鍵を設定します。
次のサンプルでは、デフォルトの顧客管理の暗号鍵をバケットから削除します。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
次のサンプルでは、バケットにデフォルトの顧客管理の暗号鍵を設定します。
次のサンプルでは、デフォルトの顧客管理の暗号鍵をバケットから削除します。
REST API
JSON API
gcloud CLI をインストールして初期化します。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。次の情報が含まれる JSON ファイルを作成します。
{ "encryption": { "defaultKmsKeyName": "KEY_RESOURCE" } }
ここで、
KEY_RESOURCEは Cloud KMS 鍵リソースです。バケットからデフォルトの Cloud KMS 鍵を削除するには、JSON ファイルで次のようにします。
{ "encryption": { "defaultKmsKeyName": null } }
cURLを使用して JSON API を呼び出し、PATCHBucket リクエストを行います。curl -X PATCH --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=encryption"
各変数の意味は次のとおりです。
JSON_FILE_NAMEは、手順 2 で作成した JSON ファイルのパスです。BUCKET_NAMEは、関連するバケットの名前です。たとえばmy-bucketです。
XML API
gcloud CLI をインストールして初期化します。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。次の情報が含まれる XML ファイルを作成します。
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
ここで、
KEY_RESOURCEは Cloud KMS 鍵リソースです。バケットからデフォルトの Cloud KMS 鍵を削除するには、XML ファイルで次のようにします。
<EncryptionConfiguration></EncryptionConfiguration>
cURLを使用して、PUTバケット リクエストとencryptionConfigクエリ文字列パラメータを使用して XML API を呼び出します。curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?encryptionConfig"
ここで
XML_FILE_NAMEは、手順 2 で作成した XML ファイルのパスです。BUCKET_NAMEは、関連するバケットの名前です。例:my-bucket
バケットのデフォルトの鍵を表示する
バケットのデフォルトとして現在設定されている Cloud KMS 鍵を表示するには:
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
バケットのリストで、目的のバケットの名前をクリックします。
[バケットの詳細] ページで、[構成] タブをクリックします。
バケットの現在のデフォルトの鍵が [暗号鍵] フィールドに表示されます。
失敗した Cloud Storage オペレーションの詳細なエラー情報を Google Cloud コンソールで確認する方法については、トラブルシューティングをご覧ください。
コマンドライン
gcloud storage buckets describe コマンドを使用し、--format フラグを指定します。
gcloud storage buckets describe gs://BUCKET_NAME --format="default(default_kms_key)"
ここで、BUCKET_NAME は鍵を表示するバケットの名前です。例: my-bucket。
成功した場合、レスポンスは次のようになります。
default_kms_key: KEY_RESOURCE
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
デフォルトの KMS 鍵を表示するには、バケットのメタデータを表示する手順に沿って、レスポンス内のデフォルトの KMS 鍵フィールドを探します。Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
デフォルトの KMS 鍵を表示するには、バケットのメタデータを表示する手順に沿って、レスポンス内のデフォルトの KMS 鍵フィールドを探します。Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
デフォルトの KMS 鍵を表示するには、バケットのメタデータを表示する手順に沿って、レスポンス内のデフォルトの KMS 鍵フィールドを探します。Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
デフォルトの KMS 鍵を表示するには、バケットのメタデータを表示する手順に沿って、レスポンス内のデフォルトの KMS 鍵フィールドを探します。PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
デフォルトの KMS 鍵を表示するには、バケットのメタデータを表示する手順に沿って、レスポンス内のデフォルトの KMS 鍵フィールドを探します。Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
デフォルトの KMS 鍵を表示するには、バケットのメタデータを表示する手順に沿って、レスポンス内のデフォルトの KMS 鍵フィールドを探します。Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
デフォルトの KMS 鍵を表示するには、バケットのメタデータを表示する手順に沿って、レスポンス内のデフォルトの KMS 鍵フィールドを探します。REST API
JSON API
gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。cURLを使用して、目的のfieldsを含むGETBucket リクエストで JSON API を呼び出します。curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=encryption"
ここで、
BUCKET_NAMEは鍵を表示するバケットの名前です。例:my-bucket次の例のようなレスポンスになります。
{ "encryption" : { "defaultKmsKeyName": "KEY_RESOURCE" }, }
XML API
gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。cURLを使用して、encryptionクエリ パラメータを指定したGETBucket リクエストで XML API を呼び出します。curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?encryptionConfig"
ここで、
BUCKET_NAMEは鍵を表示するバケットの名前です。例:my-bucket次の例のようなレスポンスになります。
<EncryptionConfiguration> <DefaultKmsKeyName>KEY_RESOURCE</DefaultKmsKeyName> </EncryptionConfiguration>
Cloud KMS 鍵を使用してオブジェクトを暗号化する
Cloud KMS 鍵を使用してオブジェクトを個々に暗号化できます。これは、バケットに設定したデフォルトの鍵とは異なる鍵を使用する場合や、バケットにデフォルトの鍵が設定されていない場合に便利です。オブジェクトの暗号化に使用する鍵リソースの名前は、オブジェクトのメタデータに格納されます。
コンソール
Google Cloud コンソールを使ってオブジェクトごとに Cloud KMS 鍵を指定することはできません。代わりに gcloud CLI またはクライアント ライブラリを使用してください。
コマンドライン
gcloud storage cp コマンドを使用し、--encryption-key フラグを指定します。
gcloud storage cp SOURCE_DATA gs://BUCKET_NAME/OBJECT_NAME --encryption-key=KEY_RESOURCE
ここで
SOURCE_DATAは、暗号化するデータのソースの場所です。cpコマンドでサポートされる任意のソースの場所を指定できます。例:gs://my-bucket/pets/old-dog.png。BUCKET_NAMEは、このコピーコマンドの転送先バケットの名前です。例:my-bucketOBJECT_NAMEは、暗号化された最終的なオブジェクトの名前です。例:pets/new-dog.pngKEY_RESOURCEは、オブジェクトの暗号化に使用する Cloud KMS 鍵リソースです。
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
REST API
JSON API
gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。オブジェクトのデータをリクエストの本文に追加します。
cURLを使用して、POSTObject リクエストで JSON API を呼び出します。curl -X POST --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=OBJECT_NAME&kmsKeyName=KEY_RESOURCE"
ここで
OBJECTは、アップロードするオブジェクトへのパスです。例:Desktop/dog.pngOBJECT_CONTENT_TYPEは、オブジェクトのコンテンツ タイプです。たとえばimage/pngです。BUCKET_NAMEは、オブジェクトをアップロードするバケットの名前です。例:my-bucketOBJECT_NAMEは、アップロードするオブジェクトの URL エンコードされた名前です。例:pets%2Fdog.pngとして URL エンコードされているpets/dog.pngKEY_RESOURCEは Cloud KMS 鍵リソースです。
XML API
gcloud CLI のインストールと初期化を行います。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。オブジェクトのデータをリクエストの本文に追加します。
cURLを使用して、PUTObject リクエストで XML API を呼び出します。curl -X PUT --data-binary @OBJECT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: OBJECT_CONTENT_TYPE" \ -H "x-goog-encryption-kms-key-name: KEY_RESOURCE" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
ここで
OBJECTは、アップロードするオブジェクトへのパスです。例:Desktop/dog.pngOBJECT_CONTENT_TYPEは、オブジェクトのコンテンツ タイプです。たとえばimage/pngです。BUCKET_NAMEは、オブジェクトをアップロードするバケットの名前です。例:my-bucketOBJECT_NAMEは、アップロードするオブジェクトの URL エンコードされた名前です。例:pets%2Fdog.pngとして URL エンコードされているpets/dog.pngKEY_RESOURCEは Cloud KMS 鍵リソースです。
顧客指定の暗号鍵から Cloud KMS 鍵にローテーションする
オブジェクトが顧客指定の暗号鍵で暗号化されている場合は、オブジェクトを書き換えることによって、Cloud KMS 鍵を使用するようにローテーションできます。
コンソール
Google Cloud コンソールを使ってオブジェクトごとに暗号鍵を変更することはできません。代わりに gcloud CLI またはクライアント ライブラリを使用してください。
コマンドライン
適切なフラグを指定して、gcloud storage objects update コマンドを使用します。
gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --encryption-key=KMS_KEY --decryption-keys=CSEK_KEY
ここで
BUCKET_NAMEは、鍵をローテーションするオブジェクトを含むバケットの名前です。例:my-bucket。OBJECT_NAMEは、鍵をローテーションするオブジェクトの名前です。例:pets/dog.png。KMS_KEYは、オブジェクトの暗号化に使用する Cloud KMS 鍵リソースです。CSEK_KEYは、オブジェクトで使用されている現在の顧客指定の暗号鍵です。
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
REST API
JSON API
gcloud CLI をインストールして初期化します。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。cURLを使用して、POSTObject リクエストで JSON API を呼び出します。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ -H "x-goog-copy-source-encryption-algorithm: AES256" \ -H "x-goog-copy-source-encryption-key: OLD_ENCRYPTION_KEY" \ -H "x-goog-copy-source-encryption-key-sha256: HASH_OF_OLD_KEY" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/rewriteTo/b/BUCKET_NAME/o/OBJECT_NAME?kmsKeyName=KEY_RESOURCE"
ここで
OLD_ENCRYPTION_KEYは、オブジェクトの暗号化に現在使用されている AES-256 鍵です。HASH_OF_OLD_KEYは、AES-256 鍵の現在の SHA-256 ハッシュです。BUCKET_NAMEは、該当するオブジェクトが格納されているバケットの名前です。例:my-bucketOBJECT_NAMEは、鍵をローテーションするオブジェクトの URL エンコードされた名前です。例:pets%2Fdog.pngとして URL エンコードされているpets/dog.pngKEY_RESOURCEは Cloud KMS 鍵リソースです。
XML API
XML API では、オブジェクトの書き換えによる顧客指定の暗号鍵から Cloud KMS 鍵へのローテーションはサポートされていません。XML API を使用してこのようなローテーションを行うには、次のようにします。
オブジェクトの暗号化に使用された鍵を特定する
オブジェクトの暗号化に使用された Cloud KMS 鍵を確認するには:
コンソール
- Google Cloud コンソールで Cloud Storage の [バケット] ページに移動します。
バケットのリストで、必要なオブジェクトを含むバケットの名前をクリックします。
[バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。
フォルダ内にあるオブジェクトに移動します。
[暗号化] 列でそのオブジェクトのエントリにカーソルを合わせます。
鍵の名前とバージョンは次の形式になります。
LOCATION/KEY_RING_NAME/KEY_NAME/KEY_VERSION
コマンドライン
gcloud storage objects describe コマンドを使用し、--format フラグを指定します。
gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(kms_key)"
ここで
BUCKET_NAMEは、暗号化されたオブジェクトが格納されているバケットの名前です。例:my-bucketOBJECT_NAMEは暗号化されたオブジェクトの名前です。例:pets/dog.png。
成功した場合、レスポンスは次のようになります。
kms_key: projects/my-pet-project/locations/LOCATION_NAME/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME/cryptoKeyVersions/VERSION_NUMBER
クライアント ライブラリ
C++
詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
C#
詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
オブジェクトに関連付けられた KMS 鍵を表示するには、オブジェクトのメタデータを表示する手順に沿って、レスポンスの KMS 鍵名フィールドを確認します。Go
詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
オブジェクトに関連付けられた KMS 鍵を表示するには、オブジェクトのメタデータを表示する手順に沿って、レスポンスの KMS 鍵名フィールドを確認します。Java
詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
オブジェクトに関連付けられた KMS 鍵を表示するには、オブジェクトのメタデータを表示する手順に沿って、レスポンスの KMS 鍵名フィールドを確認します。Node.js
詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
オブジェクトに関連付けられた KMS 鍵を表示するには、オブジェクトのメタデータを表示する手順に沿って、レスポンスの KMS 鍵名フィールドを確認します。PHP
詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
オブジェクトに関連付けられた KMS 鍵を表示するには、オブジェクトのメタデータを表示する手順に沿って、レスポンスの KMS 鍵名フィールドを確認します。Python
詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Ruby
詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
オブジェクトに関連付けられた KMS 鍵を表示するには、オブジェクトのメタデータを表示する手順に沿って、レスポンスの KMS 鍵名フィールドを確認します。REST API
JSON API
gcloud CLI をインストールして初期化します。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。cURLを使用して、GETObject リクエストで JSON API を呼び出します。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?fields=kmsKeyName"
ここで
BUCKET_NAMEは、暗号化されたオブジェクトが格納されているバケットの名前です。例:my-bucketOBJECT_NAMEは、暗号化されたオブジェクトの URL エンコードされた名前です。例:pets%2Fdog.pngとして URL エンコードされているpets/dog.png
XML API
gcloud CLI をインストールして初期化します。これにより、
Authorizationヘッダーのアクセス トークンを生成できます。cURLを使用して、GETObject リクエストで XML API を呼び出します。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?encryption"
ここで
BUCKET_NAMEは、暗号化されたオブジェクトが格納されているバケットの名前です。例:my-bucketOBJECT_NAMEは、暗号化されたオブジェクトの URL エンコードされた名前です。例:pets%2Fdog.pngとして URL エンコードされているpets/dog.png
オブジェクトを復号する
Cloud KMS 鍵で暗号化されたオブジェクトの復号は、関連するサービス エージェントがその鍵にアクセスできる限り、自動的に実行されます。詳細については、CMEK を使用したサービス エージェントをご覧ください。
次のステップ
- Cloud Storage の CMEK の詳細を確認する。
- Cloud Storage で使用可能な他の暗号化オプションについて学習する。
- Cloud KMS 鍵をローテーションする。
- Cloud KMS で動作できる他のプロダクトについて調べる。
- Cloud KMS 鍵の使用をより詳細に制御するための、
restrictNonCmekServicesとrestrictCmekCryptoKeyProjects組織のポリシーの制約について学習する。