エージェントレス転送の権限

エージェントレス転送には、Cloud Storage 内、Amazon S3、Azure Blob Storage、Data Lake Storage Gen2、一般公開オブジェクトの URL リストからの転送が含まれます。転送エージェントやエージェント プールは必要ありません。

エージェントレス転送によってクラウド プロバイダ間でデータを転送する場合は、次の 2 つのプリンシパルに権限を付与する必要があります。

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/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Google が管理するサービス エージェント:

    • roles/storage.admin
    • roles/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 の legacy ロールは、バケットレベルでのみ付与できます。

ストレージ オブジェクト閲覧者(roles/storage.objectViewer

Storage Transfer Service が Cloud Storage ソースからオブジェクトをコピーできるようにします。

また、Storage Transfer Service が Cloud Storage の宛先にファイルがすでに存在するかどうか、およびファイルが変更されているかどうかを判断できるようにします。

Cloud Storage から転送する場合は、Cloud Storage の転送元バケットで付与します。

転送がシンクでオブジェクトを上書きするように構成されている場合は、Cloud Storage の宛先バケットでも権限を付与します(異なる場合、または上書きしない場合は、[オブジェクトを上書きする](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen))。転送設定が常に上書きに設定されている場合は不要です。

状況に応じて、Storage Transfer Service の実行元プロジェクトにプロジェクト レベルでロールを付与できます。

ストレージ レガシー バケット読み取り(roles/storage.legacyBucketReader Storage Transfer Service が Cloud Storage バケットのメタデータの読み取りを実行できるようにします。

Cloud Storage から転送する場合は、Cloud Storage の転送元バケットで付与します。

Cloud Storage の legacy ロールは、バケットレベルでのみ付与できます。

手順については、必要な権限の付与をご覧ください。

ユーザー管理のサービス アカウントに委任する

サービス エージェントの権限をユーザーが管理するサービス アカウントに委任できます。これにより、1 つのサービス エージェントに集中させるのではなく、異なる転送ジョブのバケット権限をサービス アカウント間で分離できます。

詳細については、サービス エージェントの権限をユーザー管理のサービス アカウントに委任するをご覧ください。

プロジェクト間の Cloud Storage 転送

異なるプロジェクトの Cloud Storage バケット間でオブジェクトを転送するには、転送元バケットと転送先バケットの両方で、1 つのサービス エージェントに権限を付与する必要があります。サービス エージェントは、転送の作成元のプロジェクトに属します。

ユーザーまたはユーザー管理のサービス アカウントには、転送を作成するプロジェクトに対する権限のみが必要です。

サービス エージェントのメールアドレスを取得する方法については、サービス エージェントのメールアドレスを確認するをご覧ください。

転送元バケットで、次のロールをバケットレベルでサービス エージェントに付与します。

  • Storage Legacy Bucket Reader
  • Storage Object Viewer

転送先バケットで、次のロールをバケットレベルで同じサービス エージェントに付与します。

  • Storage Legacy Bucket Writer

バケットレベルでロールを付与する方法については、次のページをご覧ください。

Cloud Storage の Legacy ロールは、プロジェクト レベルで付与できません。

組織内アクセス制限

組織でドメイン制限constraints/iam.allowedPolicyMemberDomains)や他のプロジェクトのリソースへのサービス アカウントの接続を無効にするconstraints/iam.disableCrossProjectServiceAccountUsage)などの組織のポリシーの制約が適用されている場合は、プロジェクト間の転送が成功するように、これらの制約を更新する必要があります。

プロジェクト間の転送をサポートするために、VPC Service Controls の設定の更新が必要になる場合もあります。クラウド オブジェクト ストレージ転送用に VPC Service Controls を構成するをご覧ください。

AWS と Microsoft の権限

AWS S3 または Microsoft Azure Storage にあるソースファイルへのアクセスも構成する必要があります。必要な手順について詳しくは、次のドキュメントをご覧ください。