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 HMAC 키 storage.hmacKeys.create
hmacKeys delete HMAC 키 storage.hmacKeys.delete
hmacKeys get HMAC 키 storage.hmacKeys.get
hmacKeys list HMAC 키 storage.hmacKeys.list
hmacKeys update HMAC 키 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 버킷, 프로젝트5 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.buckets.delete
storage.objects.delete
storage.objects.list
rm 객체 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을 적용하려고 시도할 때 발생하는 오류를 기록하지만, 그 외에는 작업을 계속합니다.

다음 단계