【GCP】Cloud Storage 버킷에 대한 액세스 권한

4410 단어 IAMgcpCloudStorage
Google Cloud Platform을 사용하고 있습니다. Storage 의 bucket 에 액세스권이 없게 분노해 버려, 빠졌으므로 메모해 둡니다.

문제는 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에 따라 다릅니다.
  • htps : // c ぉ d. 오, ぇ. 코 m / s 토라 게 / 드 cs / 아세스 s - t t l / 어 m-peer mishion s? hl = 그럼

  • 아래에서 확인할 수 있습니다.
    $ 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 레거시에서 버킷 읽기/쓰기 권한을 부여할 수 있습니다.



    이번은 이것으로 극복되었습니다만, 이쪽도 커맨드 라인으로 조작할 수 있을지도 모릅니다.
    지쳤다. . .

    참고



    비슷한 일로 고생하고 해결된 선인의 지혜를 빌렸습니다.
  • htps : // 푹신 푹신 ct. 기주 b. 이오
  • htps : // 코 m / 코 짱 / ms / 3505b88185f614 아 1453c

  • 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)

    좋은 웹페이지 즐겨찾기