Cloud Storage では、サービス エージェントと呼ばれる Google 管理のサービス アカウントを使用して、Cloud Storage バケットにデータを移動します。このサービス エージェントは、初めて googleServiceAccounts.get
を呼び出すときに作成されます。
宛先バケットは、サービス エージェントと同じプロジェクトに属している必要はありません。バケットがどのプロジェクトにあっても手順は同じです。
ユーザー権限
サービス エージェントに必要な権限を付与するには、宛先バケットに関連する権限が必要です。
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
必要な権限は、ストレージのレガシー バケット オーナーロール(roles/storage.legacyBucketOwner
)またはストレージ管理者ロール(roles/storage.admin
)に含まれています。
Google Cloud コンソールでの権限の自動付与
Google Cloud コンソールを使用して転送を作成し、ユーザー権限に記載されている権限がある場合、サービス エージェントには、宛先バケットに必要な権限が自動的に付与されます。
このページの手順はスキップできます。必要に応じて、ソースへのアクセスを構成してから、転送を作成します。
必要な権限
サービス エージェントには、宛先バケットに対する次の権限が必要です。
権限 | 説明 |
---|---|
storage.buckets.get |
サービス アカウントにバケット ロケーションの取得を許可します。 |
storage.objects.create |
サービス アカウントにバケットへのオブジェクトの追加を許可します。 |
storage.objects.delete |
サービス アカウントにバケット内のオブジェクトの削除を許可します。
宛先バケットでオブジェクトのバージョニングが有効になっている場合は、 |
storage.objects.list |
サービス アカウントにバケット内のオブジェクトの一覧表示を許可します。 overwriteObjectsAlreadyExistingInSink を false または deleteObjectsUniqueInSink を true に設定する場合は必要。 |
次の事前定義ロールは必要な権限を付与します。
- Storage レガシー バケット書き込み(
roles/storage.legacyBucketWriter
)
legacy
ロールとしてマークされた Cloud Storage のロールは、バケットレベルでのみ付与できます。
Cloud Storage のロールと権限の一覧については、IAM ロールをご覧ください。
必要な権限を付与する
サービス エージェントにStorage レガシー バケット書き込みロールを付与するには、次の手順を行います。
サービス エージェントのメールアドレスを確認する
googleServiceAccounts.get
リファレンス ページに移動します。[Try this method] というインタラクティブ パネルが開きます。
パネルの [Request parameters] にプロジェクト ID を入力します。ここで指定するプロジェクトは Storage Transfer Service の管理に使用しているプロジェクトで、これは、宛先バケットのプロジェクトとは異なる場合があります。
[実行] をクリックします。
サービス エージェントのメールアドレスが
accountEmail
の値として返されます。この値をコピーします。サービス エージェントのメールアドレスは
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
の形式です。
バケットレベルのポリシーにサービス エージェントを追加する
Console
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
プリンシパルにロールを付与するバケットと関連付けられている [バケット オーバーフロー] メニュー(
)をクリックします。[アクセス権を編集] を選択します。
[+ プリンシパルを追加] ボタンをクリックします。
[新しいプリンシパル] フィールドに、サービス エージェント アカウントのメールアドレスを入力します。
[ロールの選択] プルダウンメニューから
Storage Legacy Bucket Writer
を選択します。[保存] をクリックします。
gcloud
gcloud storage buckets add-iam-policy-binding
コマンドを使用します。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketWriter
ここで
BUCKET_NAME
は、プリンシパルのアクセス権を付与するバケットの名前です。例:my-bucket
YOUR_AGENT_EMAIL
は、サービス エージェントのメールアドレスを確認するでコピーしたエージェント アカウントのメールアドレスです。
コードサンプル
C++
Cloud Storage 用のクライアント ライブラリをインストールして使用する方法については、Cloud Storage のクライアント ライブラリをご覧ください。 詳細については、Cloud Storage C++ API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
C#
Cloud Storage 用のクライアント ライブラリをインストールして使用する方法については、Cloud Storage のクライアント ライブラリをご覧ください。 詳細については、Cloud Storage C# API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Go
Cloud Storage 用のクライアント ライブラリをインストールして使用する方法については、Cloud Storage のクライアント ライブラリをご覧ください。 詳細については、Cloud Storage Go API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Cloud Storage 用のクライアント ライブラリをインストールして使用する方法については、Cloud Storage のクライアント ライブラリをご覧ください。 詳細については、Cloud Storage Java API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Cloud Storage 用のクライアント ライブラリをインストールして使用する方法については、Cloud Storage のクライアント ライブラリをご覧ください。 詳細については、Cloud Storage Node.js API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
PHP
Cloud Storage 用のクライアント ライブラリをインストールして使用する方法については、Cloud Storage のクライアント ライブラリをご覧ください。 詳細については、Cloud Storage PHP API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Cloud Storage 用のクライアント ライブラリをインストールして使用する方法については、Cloud Storage のクライアント ライブラリをご覧ください。 詳細については、Cloud Storage Python API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Ruby
Cloud Storage 用のクライアント ライブラリをインストールして使用する方法については、Cloud Storage のクライアント ライブラリをご覧ください。 詳細については、Cloud Storage Ruby API のリファレンス ドキュメントをご覧ください。
Cloud Storage に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
JSON
Authorization
ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。OAuth 2.0 Playground を使用してアクセス トークンを作成し、
Authorization
ヘッダーに含めることもできます。次の情報が含まれる JSON ファイルを作成します。
{ "bindings":[ { "role": "roles/storage.legacyBucketWriter", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
ここで
YOUR_AGENT_EMAIL
は、サービス エージェントのメールアドレスを確認するでコピーしたエージェント アカウントのメールアドレスです。
cURL
を使用して、PUT setIamPolicy
リクエストで JSON API を呼び出します。curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
ここで
JSON_FILE_NAME
は、手順 2 で作成したファイルのパスです。OAUTH2_TOKEN
は、手順 1 で生成したアクセス トークンです。BUCKET_NAME
は、プリンシパルのアクセス権を付与するバケットの名前です。例:my-bucket
。
Cloud Storage リソースへの IAM ロールの割り当てについては、Cloud Storage IAM のドキュメントをご覧ください。