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

Google Cloud プロジェクト管理者(resourcemanager.projects.setIamPolicy 権限を持つユーザー)を使用して、適切なユーザーとサービス アカウントに Identity and Access Management(IAM)の権限またはロールを付与します。

Google Cloud プロジェクト管理者のアカウントは、ユーザーとサービス アカウントに権限を付与する場合にのみ必要になります。転送ジョブを開始する場合は必要ありません。

IAM ロールの付与については、リソースに対するアクセス権の付与、変更、取り消しをご覧ください。

Storage Transfer Service のカスタムロールの作成については、IAM カスタムロールについてをご覧ください。

管理者アカウント

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 の事前定義ロールをご覧ください。

サービス アカウント

Storage Transfer Service は、Google が管理するサービス アカウントを使用してデータを移動します。このサービス アカウントは、転送ジョブの作成、エージェント プールの作成、googleServiceAccounts.get の呼び出し、Google Cloud コンソールのジョブ作成ページへの初回アクセスの際に自動的に作成されます。

サービス アカウントの形式は通常 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com です。特定の PROJECT_NUMBER を確認するには、 googleServiceAccounts.get API 呼び出しを使用します。

転送を完了するために必要なリソースに Storage Transfer Service サービス アカウントへのアクセスを許可するには、次のロールまたは同等の権限をサービス アカウントに割り当てます。

ロール / 権限 機能 メモ
ストレージ オブジェクト作成者(roles/storage.objectCreator この転送に接続されている Cloud Storage バケットに Storage Transfer Service が転送ログを作成できるようにします。 転送で使用されるすべての Cloud Storage バケットに付与します。状況に応じて、Storage Transfer Service の実行元プロジェクトにプロジェクト レベルでロールを付与できます。

これらのロールで付与される権限の詳細については、Cloud Storage の事前定義ロールをご覧ください。
ストレージ オブジェクト閲覧者(roles/storage.objectViewer ファイルが Cloud Storage との間で転送されているかどうかを Storage Transfer Service が判断できるようにします。
Storage Transfer Service エージェント (roles/storagetransfer.serviceAgent Google Cloud から転送エージェントに通信するための Pub/Sub トピックを Storage Transfer Service が自動的に作成または変更できるようにします。 Storage Transfer Service の実行元のプロジェクトにプロジェクト レベルでロールを適用します。

このロールで付与される権限の詳細については、権限とロールをご覧ください。
Storage レガシー バケット読み取り(roles/storage.legacyBucketReader Storage Transfer Service が Cloud Storage バケットのメタデータの読み取りを実行できるようにします。

転送で使用される各 Cloud Storage バケットに付与します。

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

転送エージェント

Storage Transfer Service 転送エージェントは、ユーザーのアカウントまたはサービス アカウントのどちらでも実行できます。

転送エージェントのサービス アカウントまたは転送エージェントを実行するユーザー アカウントを設定するには、次のロールを割り当てます。

ロール / 権限 機能 メモ
Storage Transfer エージェント(roles/storagetransfer.transferAgent 転送を完了するために必要な Storage Transfer Service と Pub/Sub の権限を転送エージェントに付与します。 エージェントによって使用されるユーザーまたはサービス アカウントにこのロールを付与します。

このロールで付与される権限の詳細については、IAM を使用したアクセス制御をご覧ください。

ソースと宛先の権限

また、ソースデータにアクセスし、宛先に書き込むための適切な権限が、エージェント アカウントに付与されている必要があります。

ファイル システムから Cloud Storage

転送先が Cloud Storage バケットの場合、転送エージェントには転送先バケットに対する次の権限が必要です。手順については、バケットレベルのポリシーにプリンシパルを追加するをご覧ください。

権限 説明
storage.objects.create 転送中、エージェント アカウントに Cloud Storage オブジェクトの書き込みを許可します。
storage.objects.get エージェント アカウントに、オブジェクト データとメタデータの読み取りを許可します。
storage.objects.delete シンク内のオブジェクトを上書きまたは削除するように転送が構成されている場合は必須です(たとえば、転送の transferOptions 構成で overwriteObjectsAlreadyExistingInSink または deleteObjectsUniqueInSink が設定されている場合)。

これらの権限を付与するには、次のロールを付与します。

または、特定の権限を持つカスタムロールを作成してロールを付与します。

マルチパート アップロードを有効にするには、追加の権限が必要です。

Cloud Storage からファイル システム

転送元が Cloud Storage バケットの場合、転送エージェントには転送元バケットに対する次の権限が必要です。

権限 説明
storage.objects.get エージェント アカウントに、オブジェクト データとメタデータの読み取りを許可します。

この権限を付与するには、次のロールを付与します。

または、この単一の権限を持つカスタムロールを作成してロールを付与します。

ファイル システム間

2 つのファイル システム間の転送の場合、転送エージェントには中間バケットに対する次の権限が必要です。

権限 説明
storage.objects.create 転送中、エージェント アカウントに Cloud Storage オブジェクトの書き込みを許可します。
storage.objects.get エージェント アカウントに、オブジェクト データとメタデータの読み取りを許可します。
storage.objects.delete 転送が完了した後、中間バケット内のオブジェクトを削除するように構成されている場合は必須です。

これらの権限を付与するには、次のロールを付与します。

または、特定の権限を持つカスタムロールを作成してロールを付与します。

マルチパート アップロードを有効にするには、追加の権限が必要です。

S3 互換ストレージから Cloud Storage

転送エージェント アカウントには、宛先バケットに対する次の権限が必要です。手順については、バケットレベルのポリシーにプリンシパルを追加するをご覧ください。

権限 説明
storage.objects.create 転送中、エージェント アカウントに Cloud Storage オブジェクトの書き込みを許可します。
storage.objects.get エージェント アカウントに、オブジェクト データとメタデータの読み取りを許可します。
storage.objects.delete シンク内のオブジェクトを上書きまたは削除するように転送が構成されている場合は必須です(たとえば、転送の transferOptions 構成で overwriteObjectsAlreadyExistingInSink または deleteObjectsUniqueInSink が設定されている場合)。

これらの権限を付与するには、次のロールを付与します。

または、特定の権限を持つカスタムロールを作成してロールを付与します。

マルチパート アップロード

ファイル システムから Cloud Storage への転送やファイル システム間の転送のマルチパート アップロードを有効にするには、さらに次の権限をエージェントに付与します。

  • Cloud Storage への転送の場合は、転送先のバケットに権限を割り当てます。
  • ファイル システム間の転送の場合は、中間バケットに権限を割り当てます。

マルチパート アップロードを使用すると、サイズの大きいファイルを含む転送を高速化できます。マルチパート アップロードは、Standard Storage クラスを使用するバケットでのみサポートされます。

マルチパート アップロードの権限名 説明
storage.multipartUploads.create 複数のパートでオブジェクトをアップロードします。
storage.multipartUploads.abort マルチパート アップロード セッションを中止します。
storage.multipartUploads.listParts マルチパート アップロード セッションで、アップロードされたオブジェクト パーツを一覧表示します。
storage.multipartUploads.list バケット内のマルチパート アップロード セッションを一覧表示します。

これらの権限を付与するには、次のロールを付与します。

または、特定の権限を持つカスタムロールを作成してロールを付与します。