エージェントレス転送には、Cloud Storage 内、Amazon S3、Azure Blob Storage、Data Lake Storage Gen2、一般公開オブジェクトの URL リストからの転送が含まれます。転送エージェントやエージェント プールは必要ありません。
エージェントレス転送によってクラウド プロバイダ間でデータを転送する場合は、次の 2 つのプリンシパルに権限を付与する必要があります。
- 転送を作成または管理するユーザー アカウント。
- Storage Transfer Service と最初にやり取りするときに自動的に作成される、Google 管理のサービス エージェント。サービス エージェントの権限をユーザー管理のサービス アカウントに委任できます。サービス エージェントの権限をユーザー管理のサービス アカウントに委任するをご覧ください。
IAM ロールを付与する方法については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。
権限を付与する最も簡単な方法
gcloud CLI を使用すると、ユーザー アカウントと Google 管理のサービス アカウントに必要な権限を付与できます。これらの権限により、ユーザーは転送ジョブの作成、編集、削除と、帯域幅の上限の設定、変更を行うことができます。
組織のポリシーに対してこれらの権限の範囲が広すぎる場合は、このドキュメントの後半セクションで Storage Transfer Service に必要な最小権限を確認してください。
既存の権限で不足しているロールを確認するには、次のコマンドを実行します。
gcloud transfer authorize
これらのロールを自動的に適用するには、--add-missing フラグを使用します。
gcloud transfer authorize --add-missing
ユーザーの代わりにユーザー管理のサービス アカウントに権限を付与するには、サービス アカウント キーのファイルを渡します。
gcloud transfer authorize --add-missing --creds-file=path/to/key.json
このコマンドは次の権限を付与します。
ユーザー / ユーザー管理のサービス アカウント:
roles/ownerroles/storagetransfer.adminroles/storagetransfer.transferAgentroles/storage.objectAdminroles/pubsub.editor
Google 管理のサービス エージェント:
roles/storage.adminroles/storagetransfer.serviceAgent
gcloud CLI のインストール手順については、gcloud クイックスタートをご覧ください。
ユーザー アカウント権限
ユーザー アカウントには、Storage Transfer Service オペレーションを実行する権限が必要です。これらの権限は、Storage Transfer ユーザーまたは Storage Transfer 管理者のいずれかのロールで付与されます。
また、権限を確認するために、Google マネージド サービス エージェントを取得する権限も必要です。
ユーザー アカウントまたはユーザー管理のサービス アカウントを設定するには、次の IAM 権限とロールを付与します。
| ロール / 権限 | 機能 | メモ |
|---|---|---|
resourcemanager.projects.getIamPolicy |
この権限は、Google が管理するサービス アカウントに転送に必要な権限があることを確認するために使用されます。 | この権限を付与するには、ロール閲覧者(roles/iam.roleViewer)の事前定義ロールを付与するか、この権限のみを含むカスタムロールを作成して付与します。 |
| 次のいずれかのロール: | ||
Storage Transfer 管理者(roles/storagetransfer.admin)
|
転送ジョブの削除を含む、すべての Storage Transfer Service オペレーションを許可します。 | 付与される権限の詳細については、Storage Transfer Service の事前定義ロールをご覧ください。 |
Storage Transfer ユーザー(roles/storagetransfer.user)
|
ユーザーが、転送の作成、取得、更新、一覧表示をできるようになります。ユーザーが転送ジョブを削除できないようにします。 | 付与される権限の詳細については、Storage Transfer Service の事前定義ロールをご覧ください。 |
Google 管理のサービス エージェントの権限
Storage Transfer Service は、Google 管理のサービス エージェントを使用してデータを移動します。このサービス アカウントは、転送ジョブの作成、googleServiceAccounts.get の呼び出し、 Google Cloud コンソールのジョブ作成ページへの初回アクセスの際に自動的に作成されます。
サービス アカウントの形式は通常 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com です。サービス アカウント ID を取得するには、[googleServiceAccounts.get][googleServiceAccounts.get] API 呼び出しを使用します。
ロールの自動割り当て
サービス エージェントに適切なロールを自動的に割り当てるには、次の 2 つの方法があります。
Google Cloud コンソールを使用して転送を作成します。コンソールでは必要な権限が自動的に適用されます。
gcloud transfer authorize --add-missingを使用してください。権限を付与する最も簡単な方法をご覧ください。
ロールの手動割り当て
転送を完了するために必要なリソースにサービス エージェントがアクセスできるようにするには、次のロールまたは同等の権限をサービス エージェントに割り当てます。
| ロール / 権限 | 機能 | 注 |
|---|---|---|
Storage レガシー バケット書き込み(roles/storage.legacyBucketWriter) |
Storage Transfer Service が、バケット メタデータの読み取り、バケット内のオブジェクトの一覧取得、転送先バケットへのオブジェクトの書き込みを実行できるようにします。 |
Cloud Storage 転送先バケットに付与します。 Cloud Storage の |
ストレージ オブジェクト閲覧者(roles/storage.objectViewer)
|
Storage Transfer Service が Cloud Storage ソースからオブジェクトをコピーできるようにします。 また、Storage Transfer Service が Cloud Storage の宛先にファイルがすでに存在するかどうか、変更されているかどうかを判断できるようになります。 |
Cloud Storage から転送する場合は、Cloud Storage の転送元バケットで付与します。 転送が、シンク内の [オブジェクトを上書き](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) するように構成されている場合は、Cloud Storage の宛先バケットにも付与します。転送設定が常に上書きの場合は不要です。 状況に応じて、Storage Transfer Service の実行元プロジェクトにプロジェクト レベルでロールを付与できます。 |
ストレージ レガシー バケット読み取り(roles/storage.legacyBucketReader)
|
Storage Transfer Service が Cloud Storage バケットのメタデータの読み取りを実行できるようにします。 |
Cloud Storage から転送する場合は、Cloud Storage の転送元バケットで付与します。 Cloud Storage の |
手順については、必要な権限の付与をご覧ください。
ユーザー管理のサービス アカウントに委任する
サービス エージェントの権限をユーザー管理のサービス アカウントに委任できます。これにより、バケット権限を 1 つのサービス エージェントに一元化するのではなく、サービス アカウント間で異なる転送ジョブのバケット権限を分離できます。
詳細については、サービス エージェントの権限をユーザー管理のサービス アカウントに委任するをご覧ください。
プロジェクト間の Cloud Storage 転送
異なるプロジェクトの Cloud Storage バケット間でオブジェクトを転送するには、転送元バケットと転送先バケットの両方で、1 つのサービス エージェントに権限を付与する必要があります。サービス エージェントは、転送の作成元のプロジェクトに属します。
ユーザーまたはユーザー管理のサービス アカウントには、転送を作成するプロジェクトに対する権限のみが必要です。
サービス エージェントのメールアドレスを取得するには、サービス エージェントのメールアドレスを確認するをご覧ください。
転送元バケットで、次のロールをバケットレベルでサービス エージェントに付与します。
- Storage レガシー バケット読み取り(
roles/storage.legacyBucketReader) - Storage オブジェクト閲覧者(
roles/storage.objectViewer)
転送先バケットで、次のロールをバケットレベルで同じサービス エージェントに付与します。
- Storage レガシー バケット書き込み(
roles/storage.legacyBucketWriter) - また、異なる場合またはなしの場合にシンク内のオブジェクトを上書きするように構成された転送の場合: ストレージ オブジェクト閲覧者(
roles/storage.objectViewer)
バケットレベルでロールを付与する方法については、次のページをご覧ください。
Cloud Storage の Legacy ロールは、プロジェクト レベルで付与できません。
組織内アクセス制限
組織でドメイン制限(constraints/iam.allowedPolicyMemberDomains)や他のプロジェクトのリソースへのサービス アカウントの接続を無効にする(constraints/iam.disableCrossProjectServiceAccountUsage)などの組織のポリシーの制約が適用されている場合は、プロジェクト間の転送が成功するように、これらの制約を更新する必要があります。
プロジェクト間の転送をサポートするために、VPC Service Controls の設定の更新が必要になる場合もあります。クラウド オブジェクト ストレージ転送用に VPC Service Controls を構成するをご覧ください。
AWS と Microsoft の権限
AWS S3 または Microsoft Azure Storage にあるソースファイルへのアクセスも構成する必要があります。必要な手順について詳しくは、次のドキュメントをご覧ください。