Storage Transfer Service メソッドの IAM 権限

次の表では、Storage Transfer Service の各メソッドを実行するために必要な、最小限の権限の一覧が表示されています。

リソース メソッド 必要な権限
googleServiceAccount get storagetransfer.projects.getServiceAccount
transferJobs create 次の両方が必要です。

  • storagetransfer.jobs.create
  • storagetransfer.projects.getServiceAccount

transferjobs get storagetransfer.jobs.get
transferjobs list storagetransfer.jobs.list
transferjobs patch 削除更新の場合: storagetransfer.jobs.delete
削除以外の更新の場合: storagetransfer.jobs.update
transferoperations cancel storagetransfer.operations.cancel
transferOperations get storagetransfer.operations.get
transferOperations list storagetransfer.operations.list
transferOperations pause storagetransfer.operations.pause
transferOperations resume storagetransfer.operations.resume

ソース権限

Cloud Storage

Storage Transfer Service では、Google が管理するサービス アカウントを使用して Cloud Storage ソースバケットからデータを移行します。これは、最初に googleServiceAccounts.get を呼び出すときに作成されます。

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

サービス アカウントには、ソースバケットに対する次の権限が必要です。

権限 説明 使用
storage.buckets.get サービス アカウントにバケット ロケーションの取得を許可します。 常に必要。
storage.objects.list サービス アカウントにバケット内のオブジェクトの一覧表示を許可します。 常に必要。
storage.objects.get サービス アカウントにバケット内のオブジェクトの読み取りを許可します。 常に必要。
storage.objects.delete サービス アカウントにバケット内のオブジェクトの削除を許可します。 deleteObjectsFromSourceAfterTransfertrue に設定する場合は必要。

roles/storage.objectViewer ロールと roles/storage.legacyBucketReader ロールには、常に必要な権限が含まれています。roles/storage.legacyBucketWriter ロールには storage.objects.delete 権限が含まれています。転送の実行に使用されるサービス アカウントには、必要なロールが割り当てられている必要があります。

Cloud Storage のロールと権限の一覧については、IAM ロールをご覧ください。

Amazon S3

Storage Transfer Service を使用して Amazon S3 バケットからデータを移動するには、バケットに対して特定の権限を持つ AWS Identity and Access Management ユーザー アカウントが必要です。

権限 説明 使用
s3:ListBucket Storage Transfer Service にバケット内のオブジェクトの一覧表示を許可します。 常に必要。
s3:GetObject Storage Transfer Service にバケット内のオブジェクトの読み取りを許可します。 常に必要。
s3:GetBucketLocation Storage Transfer Service にバケットのロケーションの取得を許可します。 常に必要。
s3:DeleteObject Storage Transfer Service にバケット内のオブジェクトの削除を許可します。 deleteObjectsFromSourceAfterTransfertrue に設定する場合は必要。

Microsoft Azure Blob Storage

Storage Transfer Service を使用して Microsoft Azure Storage アカウントまたはコンテナから Cloud Storage にデータを移動するには、次の権限を持つ Microsoft Azure Storage ユーザー アカウントが必要です。

権限 説明 使用
List Blobs Storage Transfer Service にコンテナ内の blob の一覧表示を許可します。 常に必要。
Get Blob Storage Transfer Service に、blob のコンテンツ、システム定義のメタデータ、ユーザー定義のメタデータの取得を許可します。 常に必要。
Get Blob Properties Storage Transfer Service に、blob のシステム定義とユーザー定義のメタデータの取得を許可します。 常に必要。
Delete Blob Storage Transfer Service に、削除する blob のマークを許可します。 deleteObjectsFromSourceAfterTransfertrue. に設定する場合は必要。

URL リスト

データソースが URL リストの場合は、URL リストの各オブジェクトが一般公開されていることを確認してください。

シンク権限

Storage Transfer Service では、Google が管理するサービス アカウントを使用して Cloud Storage ソースバケットからデータを移行します。これは、最初に googleServiceAccounts.get を呼び出すときに作成されます。

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

サービス アカウントには、宛先バケットに対する次の権限が必要です。

権限 説明 使用
storage.buckets.get サービス アカウントにバケット ロケーションの取得を許可します。 常に必要。
storage.objects.create サービス アカウントにバケットへのオブジェクトの追加を許可します。 常に必要。
storage.objects.delete サービス アカウントにバケット内のオブジェクトの削除を許可します。 overwriteObjectsAlreadyExistingInSink または deleteObjectsUniqueInSinktrue に設定する場合は必要。
storage.objects.list サービス アカウントにバケット内のオブジェクトの一覧表示を許可します。 overwriteObjectsAlreadyExistingInSinkfalse または deleteObjectsUniqueInSinktrue に設定する場合は必要。

これらの権限はすべて roles/storage.legacyBucketWriter ロールに含まれており、サービス アカウントに割り当てることができます。Cloud Storage のロールと権限の一覧については、IAM ロールをご覧ください。

Pub/Sub 権限

移管用 Pub/Sub を使用する予定がある場合、必要とする Pub/Sub トピックの IAM ロール roles/pubsub.publisher をサービス アカウントに付与します。