gsutil 명령어에 대한 IAM 권한

다음 표에는 특정 리소스에 각 Cloud Storage gsutil 명령어를 실행하는 데 필요한 Identity and Access Management(IAM) 권한이 있습니다. IAM 권한은 역할을 만들 수 있도록 함께 제공됩니다. 사용자 및 그룹에 역할을 부여합니다.

이 페이지에서 다음에 대한 정보도 찾을 수 있습니다.

명령어 하위 명령어 필수 IAM 권한
autoclass get storage.buckets.get
autoclass set storage.buckets.update
cat storage.objects.get
compose storage.objects.get
storage.objects.create
storage.objects.delete1
config 없음
cors get storage.buckets.get
cors set storage.buckets.update
cp storage.objects.list2(대상 버킷용)
storage.objects.get(소스 객체용)
storage.objects.create(대상 버킷용)
storage.objects.delete3(대상 버킷용)
defstorageclass get storage.buckets.get
defstorageclass set storage.buckets.update
du storage.objects.get
hash storage.objects.get
help 없음
hmacKeys create storage.hmacKeys.create
hmacKeys delete storage.hmacKeys.delete
hmacKeys get storage.hmacKeys.get
hmacKeys list storage.hmacKeys.list
hmacKeys update storage.hmacKeys.update
iam get storage.buckets.get
storage.buckets.getIamPolicy
iam set 또는 ch storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKeys.setIamPolicy(인증할 Cloud KMS 키용)
kms encryption storage.buckets.get
kms encryption -d storage.buckets.get
storage.buckets.update
kms encryption -k storage.buckets.get
storage.buckets.update
resourceManager.projects.get5
cloudkms.cryptoKeys.setIamPolicy5
kms serviceaccount resourceManager.projects.get
label get storage.buckets.get
label set/ch storage.buckets.update
lifecycle get storage.buckets.get
lifecycle set/ch storage.buckets.update
logging get storage.buckets.get
logging set storage.buckets.update
ls(버킷 나열) storage.buckets.list
storage.buckets.getIamPolicy6
ls(객체 나열) storage.objects.list
storage.objects.getIamPolicy7
ls -b storage.buckets.get
storage.buckets.getIamPolicy6
mb storage.buckets.create
mv storage.objects.list2(대상 버킷용)
storage.objects.get(소스 객체용)
storage.objects.create(대상 버킷용)
storage.objects.delete(소스 버킷용)
storage.objects.delete3(대상 버킷용)
notification create storage.buckets.update
pubsub.topics.get(Pub/Sub 주제를 포함하는 버킷용)
pubsub.topics.create8(Pub/Sub 주제를 포함하는 프로젝트용)
pubsub.topics.getIamPolicy(알림을 수신하는 Pub/Sub 주제용)
pubsub.topics.setIamPolicy8(알림을 수신하는 Pub/Sub 주제용)
notification create -s storage.buckets.update
notification delete storage.buckets.get
storage.buckets.update
notification list storage.buckets.get
notification watchbucket storage.buckets.update
notification stopchannel storage.buckets.update
pap get storage.buckets.get
pap set storage.buckets.get
storage.buckets.update
storage.buckets.setIamPolicy10
perfdiag storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
storage.objects.get
rb storage.buckets.delete
requesterpays get storage.buckets.get
requesterpays set on storage.buckets.update
requesterpays set off storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clear, event-default, lock 또는 set storage.buckets.update
retention event 또는 temp storage.objects.get
storage.objects.list
storage.objects.update
retention get storage.buckets.get
rewrite -k storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
rewrite -s storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
rm storage.objects.delete
rm -a storage.objects.delete
storage.objects.list
rm -r(버킷 삭제) storage.buckets.delete
storage.objects.delete
storage.objects.list
rpo get storage.buckets.get
rpo set storage.buckets.get
storage.buckets.update
rsync storage.objects.get(소스 객체 및 대상 버킷용)
storage.objects.create(대상 버킷용)
storage.objects.delete11(대상 버킷용)
storage.objects.list(소스 및 대상 버킷용)
rsync -n storage.objects.list(소스 및 대상 버킷용)
setmeta storage.objects.get
storage.objects.list
storage.objects.update
signurl 없음. 하지만 키가 이 명령어의 일부로 사용되는 서비스 계정에는 서명된 URL로 인코딩되는 요청을 수행할 수 있는 권한이 있어야 합니다.
stat storage.objects.get
test 없음
ubla set storage.buckets.get
storage.buckets.update
ubla get storage.buckets.get
update 없음
version 없음
versioning get storage.buckets.get
versioning set storage.buckets.update
web get storage.buckets.get
web set storage.buckets.update

1이 권한은 구성된 객체가 이미 버킷에 있는 객체와 이름이 같은 경우에만 필요합니다.

2이 권한은 명령어의 대상에 객체 경로가 포함된 경우에만 필요합니다.

3이 권한은 동시 복합 업로드를 사용하거나 -n 플래그를 사용하지 않고 버킷에 이미 있는 객체와 이름이 같은 객체를 삽입하는 경우에만 필요합니다.

4이 권한은 프로젝트에 연결된 기존 Cloud Storage 서비스 계정이 없는 경우에만 필요합니다.

5gsutil kms encryption -k를 사용하며 프로젝트의 서비스 계정에 요청된 Cloud KMS 키에 대한 액세스 권한이 없는 경우, gsutil은 gsutil kms authorize를 실행하여 서비스 계정에 필요한 권한을 부여합니다.

6IAM 정책을 세부정보에 포함하려는 경우에만 이 권한이 필요합니다.

7이 권한은 세부정보에 IAM 정책을 포함하려는 경우에만 필요하며 균일한 버킷 수준 액세스가 사용 설정된 버킷에는 적용되지 않습니다.

8주제가 이미 있으며 관련 서비스 계정에서 해당 주제에 액세스할 수 있는 경우 이 권한은 필요하지 않습니다.

9이 권한은 요청에 결제 프로젝트를 포함하지 않는 경우에만 필요합니다. 자세한 내용은 요청자 지불 사용 및 액세스 요구사항을 참조하세요.

10명령어로 버킷 설정이 변경되지 않는 경우 이 권한이 필요하지 않습니다.

11 이 권한은 -d 플래그를 사용하거나 버킷에 이미 존재하는 객체와 이름은 같지만 데이터가 다른 객체를 삽입하는 경우에만 필요합니다.

ACL 관련 메서드

다음 표에는 특히 ACL 관리에 적용되는 gsutil 명령어를 실행하기 위해 필요한 IAM 권한이 나와 있습니다. 이 명령어는 균일한 버킷 수준 액세스가 사용 중지된 버킷에만 적용됩니다.

명령어 하위 명령어 대상 리소스 필수 IAM 권한
acl get 버킷 storage.buckets.get
storage.buckets.getIamPolicy
acl set 또는 ch 버킷 storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
acl get 객체 storage.objects.get
storage.objects.getIamPolicy
acl set 또는 ch 객체 storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
cp -a 또는 cp -p 객체 storage.objects.lista(대상 버킷용)
storage.objects.get(소스 객체용)
storage.objects.create(대상 버킷용)
storage.objects.deleteb(대상 버킷용)
storage.objects.getIamPolicy(소스 객체용)
storage.objects.setIamPolicy(대상 버킷용)
defacl get 버킷 storage.buckets.get
storage.buckets.getIamPolicy
defacl set 또는 ch 버킷 storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
iam get 객체 storage.objects.get
storage.objects.getIamPolicy
iam set 또는 ch 객체 storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
mv -a 또는 mv -p 객체 storage.objects.lista(대상 버킷용)
storage.objects.get(소스 객체용)
storage.objects.create(대상 버킷용)
storage.objects.delete(소스 버킷용)
storage.objects.deleteb(대상 버킷용)
storage.objects.getIamPolicy(소스 객체용)
storage.objects.setIamPolicy(대상 버킷용)
rsync -a 또는 rsync -p 객체 storage.objects.get(소스 객체 및 대상 버킷용)
storage.objects.create(대상 버킷용)
storage.objects.deletec(대상 버킷용)
storage.objects.list(소스 및 대상 버킷용)
storage.objects.getIamPolicy(소스 객체용)
storage.objects.setIamPolicy(대상 버킷용)

a이 권한은 명령어의 대상에 객체 경로가 포함된 경우에만 필요합니다.

b이 권한은 동시 복합 업로드를 사용하거나 -n 플래그를 사용하지 않고 버킷에 이미 있는 객체와 이름이 같은 객체를 삽입하는 경우에만 필요합니다.

c 이 권한은 -d 플래그를 사용하거나 버킷에 이미 존재하는 객체와 이름은 같지만 데이터가 다른 객체를 삽입하는 경우에만 필요합니다.

-u 최상위 플래그

요청에 대해 비용이 청구되는 프로젝트를 지정하기 위해 -u 전역 플래그를 사용하는 경우에는 지정하는 프로젝트에 대한 serviceusage.services.use 권한이 있어야 합니다. -u 플래그는 예를 들어 요청자 지불을 사용 설정한 버킷에 액세스할 때 사용됩니다.

와일드 카드 및 재귀 플래그

명령어에서 URI 와일드 카드를 사용하여 여러 객체를 선택하려면 해당 객체가 포함된 버킷에 대한 storage.objects.list 권한이 있어야 합니다. 마찬가지로 명령어에서 URI 와일드 카드를 사용하여 여러 버킷을 선택하려면 해당 버킷이 포함된 프로젝트에 대한 storage.buckets.list 권한이 있어야 합니다.

재귀 플래그(-r-R)를 사용하려면 사용할 특정 명령어에 필요한 권한 외에도 관련 버킷에 대한 storage.objects.list 권한이 있어야 합니다.

-m 최상위 플래그

일반적으로 여러 객체 또는 버킷에서 작동하는 gsutil 명령어를 사용하면 첫 번째 오류 발생 시 명령어가 실패합니다. 하지만 -m 전역 플래그를 사용하면 gsutil이 발생한 모든 오류를 기록하고 작업을 계속합니다.

예를 들어 일련의 객체에 acl set 명령어를 실행하려고 시도하지만 해당 객체 중 일부에만 그렇게 할 수 있는 권한이 있다고 가정합니다. -m 플래그를 사용하지 않으면 gsutil은 ACL을 적용할 수 있는 권한이 없는 객체에 도달할 때까지 ACL을 적용합니다. 그러한 지점에 도달하면 gsutil이 실패합니다. -m 플래그를 사용하면 gsutil은 권한이 없는 객체에 ACL을 적용하려고 시도할 때 발생하는 오류를 기록하지만, 그 외에는 작업을 계속합니다.

다음 단계