Creating, managing, or monitoring transfers with Storage Transfer Service requires IAM permissions and roles for your user account, automation tool, or service account.
These permissions apply to both agentless and agent-based transfers. For general information about granting IAM roles, see Granting, changing, and revoking access to resources.
Required Storage Transfer Service permissions
To interact with Storage Transfer Service, you must grant one of the following predefined roles or equivalent custom permissions to your user account, group, or service account on the Google Cloud project creating the transfer:
| Role | Key capabilities |
|---|---|
|
Storage Transfer Admin ( roles/storagetransfer.admin)
|
Full control over Storage Transfer Service resources:
|
|
Storage Transfer User ( roles/storagetransfer.user)
|
Create, update, and run transfer jobs and agent pools without deletion
permissions:
|
|
Storage Transfer Viewer ( roles/storagetransfer.viewer)
|
Read-only access to inspect transfer jobs, operations, and agent pools. Recommended for monitoring and auditing. |
For a detailed list of individual permissions in each role, see the Role and permission reference. If you configure a transfer job to delegate permissions to a user-managed service account, your user account must also have the Service Account User (roles/iam.serviceAccountUser) role on that service account; see Delegate service agent permissions to a user-managed service account.
Grant a Storage Transfer Service role on your project
Console
In the Google Cloud console, go to the IAM page.
Ensure your transfer project is selected, then click Grant access.
In the New principals field, enter your user account email or service account.
In the Select a role drop-down list, search for and select
Storage Transfer Admin,Storage Transfer User, orStorage Transfer Viewer.Optional: To allow the Google Cloud console to check for missing service agent permissions and prompt you to auto-grant them during transfer creation:
- Click + Add another role.
- Search for and select Role Viewer (
roles/iam.roleViewer), which grantsresourcemanager.projects.getIamPolicy.
Click Save.
gcloud
Grant the Storage Transfer Service role:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="PRINCIPAL" \ --role="roles/storagetransfer.ROLE"
Replace:
- PROJECT_ID: The project where you will run transfers.
- PRINCIPAL: Your account formatted as
user:EMAILfor a user account, orserviceAccount:SA_EMAILfor a service account. - ROLE: One of
admin,user, orviewer.
Optional: To allow the Google Cloud console to check for missing service agent permissions and prompt you to auto-grant them during transfer creation, grant the Role Viewer role:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="PRINCIPAL" \ --role="roles/iam.roleViewer"
Required Cloud Storage permissions
To configure a transfer that uses Cloud Storage buckets as a source, sink, or intermediate staging location, your account must have permission to view and modify the bucket's IAM policy so you can grant required roles to the Storage Transfer Service service agent or transfer agent account.
Your account requires:
storage.buckets.getIamPolicystorage.buckets.setIamPolicy
Either of the following predefined roles grant these permissions:
- Storage Admin (
roles/storage.admin) - Storage Legacy Bucket Owner (
roles/storage.legacyBucketOwner)
Grant a Cloud Storage role on a bucket
Console
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click the Bucket overflow menu () for the bucket and select Edit access.
- Click + Add principal.
- In the New principals field, enter your user account email or service account.
- In the Select a role drop-down list, search for and select
Storage Admin. - Click Save.
gcloud
Run gcloud storage buckets add-iam-policy-binding:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member="PRINCIPAL" \
--role="roles/storage.admin"Replace:
- BUCKET_NAME: The name of your source, sink, or intermediate bucket.
- PRINCIPAL: Your account formatted as
user:EMAILfor a user account, orserviceAccount:SA_EMAILfor a service account.
What's next
Next steps depend on whether your transfer requires transfer agents:
- If your transfer is agentless, such as transfers between Cloud Storage buckets, Amazon S3 to Cloud Storage, or Azure Blob Storage to Cloud Storage, user access setup is complete. Proceed to Configure access to your source and destination or Create a transfer.
- If your transfer is agent-based, such as transfers involving file systems, HDFS, or S3-compatible storage, proceed to Agent-based project-level permissions.