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

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

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

  • 転送を作成または管理するユーザーまたはユーザー管理のサービス アカウント
  • Storage Transfer Service と最初にやり取りするときに自動的に作成される、Google 管理のサービス アカウント

また、AWS S3、Microsoft Azure、または Cloud Storage のソースファイルへのアクセスを構成する必要があります。

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 管理者アカウントは、帯域幅の使用量上限を設定、転送ジョブの削除を行います。

管理者アカウントを設定するには、次の IAM の権限とロールを割り当てます。

ロール / 権限 機能
resourcemanager.projects.getIamPolicy この権限は、Google が管理するサービス アカウントに転送に必要な権限があることを確認するために使用されます。 この権限を付与するには、ロール閲覧者(roles/iam.roleViewerの事前定義ロールを付与するか、この単一の権限を含むカスタムロールを作成して付与します。
Storage Transfer 管理者(roles/storagetransfer.admin プロジェクト設定など、転送プロジェクトでの管理アクションを有効にします。 付与される権限の詳細については、Storage Transfer Service の事前定義ロールをご覧ください。

ユーザー アカウント

Storage Transfer Service ユーザー アカウントは転送の作成と実行に使用されます。通常、これらのアカウントには転送ジョブの削除権限はありません。

ユーザー アカウントとして使用できるのは、Google Cloud コンソール ユーザーまたはサービス アカウントのいずれかです。サービス アカウントを使用している場合、Storage Transfer Service に認証情報を渡す方法は、使用するインターフェースによって異なります。

ユーザー アカウントを設定するには、アカウントに次の権限とロールを割り当てます。

ロール / 権限 機能
resourcemanager.projects.getIamPolicy 転送に必要な Pub/Sub 権限が Google が管理するサービス アカウントにあることを確認するために使用されます。 この権限を付与するには、ロール閲覧者(roles/iam.roleViewerの事前定義ロールを付与するか、この単一の権限を含むカスタムロールを作成して付与します。
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 API 呼び出しを使用します。

ロールの自動割り当て

Google 管理のサービス アカウントに適切なロールを自動的に割り当てるには、次の 2 つの方法があります。

  • Google Cloud コンソールを使用して転送を作成します。コンソールでは必要な権限が自動的に適用されます。

  • gcloud transfer authorize --add-missing を使用してください。権限を付与する最も簡単な方法をご覧ください。

ロールの手動割り当て

転送を完了するために必要なリソースに Google 管理のサービス アカウントがアクセスできるようにするには、次のロールまたは同等の権限をサービス アカウントに割り当てます。

ロール / 権限 機能
Storage レガシー バケット書き込みroles/storage.legacyBucketWriter Storage Transfer Service が、バケット メタデータの読み取り、バケット内のオブジェクトの一覧取得、転送先バケットへのオブジェクトの書き込みを実行できるようにします。 Cloud Storage 転送先バケットに付与します。
ストレージ オブジェクト閲覧者(roles/storage.objectViewer ファイルが Cloud Storage との間で転送されているかどうかを Storage Transfer Service が判断できるようにします。 Cloud Storage から転送する場合は、Cloud Storage の転送元バケットで付与します。状況に応じて、Storage Transfer Service の実行元プロジェクトにプロジェクト レベルでロールを付与できます。
Storage レガシー バケット読み取り(roles/storage.legacyBucketReader Storage Transfer Service が Cloud Storage バケットのメタデータの読み取りを実行できるようにします。

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

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

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

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

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

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

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

転送元バケットで、次のロールをバケットレベルで Google 管理のサービス アカウントに付与します。

  • Storage Legacy Bucket Reader
  • Storage Object Viewer

転送先バケットで、バケットレベルで次のロールを同じ Google 管理サービス アカウントに付与します。

  • Storage Legacy Bucket Writer

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

組織内アクセス制限

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

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

AWS と Microsoft の権限

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