【GCP】Cloud Storage 버킷에 대한 액세스 권한
4410 단어 IAMgcpCloudStorage
문제는 GCP에 배포 한 컨테이너가 Cloud Storage에 액세스하기 위해 python script에서 Storage에서 다운로드하기 위해
client.get_bucket("my_bucket")
Forbidden('GET https://storage.googleapis.com/storage/v1/b/projectname-bucketname?projection=noAcl:[email protected]
does not have storage.bucket.get access to the Google Cloud Storage Bucket`
라고 해서 에러가 된다는 증상이었습니다. (내부에서 REST API를 부르고 있네요...)
원래 Storage에 대한 액세스 권한 설정이 충분하지 않았습니다.
원래 무엇을 하고 있었는가. Project에 대한 서비스 계정을 만든 다음 Storage에 읽기/쓰기로 서비스 계정에 role를 부여했습니다. 이것으로 충분하다고 생각했습니다.
project=$(gcloud config get-value core/project 2> /dev/null)
gcloud iam service-accounts create $sa_name \
--description "サービスアカウントの説明" \
--display-name "$sa_name"
gcloud projects add-iam-policy-binding ${project} \
--member serviceAccount:$sa_name@${project}.iam.gserviceaccount.com \
--role roles/storage.objectCreator
그러나 Storage object에 대한 액세스 권한 설정으로 bucket에 액세스하기에는 충분하지 않았습니다. 왜냐하면. . .
Storage.objectViwer에는 bucket 액세스 권한이 없습니다.
Storage에 대한 액세스 권한은 여기에서 볼 수 있듯이 object와 bucket에 따라 다릅니다.
아래에서 확인할 수 있습니다.
$ gcloud iam roles describe roles/storage.objectViewer
description: Read access to GCS objects.
etag: AA==
includedPermissions:
- resourcemanager.projects.get
- resourcemanager.projects.list
- storage.objects.get
- storage.objects.list
name: roles/storage.objectViewer
stage: GA
title: Storage Object Viewer
반면에 storage.admin은 위와 함께
- storage.buckets.create
- storage.buckets.delete
- storage.buckets.get
- storage.buckets.getIamPolicy
- storage.buckets.list
- storage.buckets.setIamPolicy
- storage.buckets.update
또한 부여됩니다. 하지만 실제로 서비스 계정에 Storage admin이라는 것도 좋지 않다고 생각됩니다.
현재 서비스 계정의 역할은 다음 명령으로 확인할 수 있습니다.
$ gcloud projects get-iam-policy プロジェクト --flatten="bindings[].members" --format='table(bindings.rol
e)' --filter='bindings.members:サービスアカウント名@プロジェクト.iam.gserviceaccount.com'
ROLE
roles/pubsub.admin
roles/pubsub.editor
roles/pubsub.publisher
roles/storage.objectCreator
roles/storage.objectViewer
bucket에 대한 액세스 권한 설정
이번에는 서둘러 있었기 때문에 console.cloud.goole.com에서 작업했습니다.
Storage에서 대상 버킷을 선택하고 버킷 사용 권한 편집...을 세로로 정렬한 것을 클릭하여 선택하면 다음과 같이 됩니다.
이제 서비스 계정을 추가합니다. 추가할 때 아래와 같이 Cloud Storage 레거시에서 버킷 읽기/쓰기 권한을 부여할 수 있습니다.
이번은 이것으로 극복되었습니다만, 이쪽도 커맨드 라인으로 조작할 수 있을지도 모릅니다.
지쳤다. . .
참고
비슷한 일로 고생하고 해결된 선인의 지혜를 빌렸습니다.
h tps : // s c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 47006062 / HO W-DO-E-ST-TE-RO-S-Assoshi Date-U-Th-A-gcp-se-r (How do I list the roles associated with a gcp service account?)
(2020/06/05)
추가
fine-granted/uniform access
어느 쪽인가를 선택하는 것 같다. 우선 메모한다.
(2020/06/06)
Reference
이 문제에 관하여(【GCP】Cloud Storage 버킷에 대한 액세스 권한), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/XPT60/items/9161fe5eb75762ea113e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)