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 관리형 서비스 계정을 사용하여 googleServiceAccounts.get을 처음 호출할 때 생성되는 Cloud Storage 소스 버킷에서 데이터를 이동합니다.

서비스 계정의 형식은 일반적으로 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.objectViewerroles/storage.legacyBucketReader 역할에는 항상 필요한 권한이 포함됩니다. roles/storage.legacyBucketWriter 역할에는 storage.objects.delete 권한이 포함됩니다. 전송을 수행하는 데 사용되는 서비스 계정에는 필요한 역할이 할당되어야 합니다.

Cloud Storage 역할과 이 역할에 포함된 권한의 전체 목록은 IAM 역할을 참조하세요.

Amazon S3

Storage Transfer Service를 사용하여 데이터를 Amazon S3 버킷에서 이동하려면 버킷에 대한 특정 권한을 가진 AWS ID 및 액세스 관리 사용자 계정이 있어야 합니다.

권한 설명 사용
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 메타데이터를 가져올 수 있도록 합니다. 항상 필요합니다.
Get Account Information Storage Transfer Service가 사용 중인 스토리지 계정 유형을 확인할 수 있도록 허용합니다.

Azure Data Lake Storage(ADLS) 2세대에서 전송하는 경우 필수입니다.

Delete Blob Storage Transfer Service가 blob을 삭제하도록 표시할 수 있습니다. deleteObjectsFromSourceAfterTransfertrue. 로 설정한 경우에 필요합니다.

URL 목록

데이터 소스가 URL 목록인 경우 URL 목록의 각 객체를 공개적으로 액세스할 수 있는지 확인합니다.

싱크 권한

Storage Transfer Service는 Google 관리형 서비스 계정을 사용하여 googleServiceAccounts.get을 처음 호출할 때 생성되는 Cloud Storage 소스 버킷에서 데이터를 이동합니다.

서비스 계정의 형식은 일반적으로 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 주제의 서비스 계정에 IAM 역할 roles/pubsub.publisher를 부여합니다.