서비스 계정에는 Google Cloud Storage 버킷에 대한 Storage.buckets.get 액세스 권한이 없습니다.

서비스 계정에는 Google Cloud Storage 버킷에 대한 Storage.buckets.get 액세스 권한이 없습니다.

Google Cloud에 스토리지 버킷을 생성해야 하는 다음 구성의 서비스로 Ansible을 실행하고 있습니다.

- name: "Create {{ environ.name }}-cluster-backups"
  google.cloud.gcp_storage_bucket:
    name: "zeipt-io-{{ environ.name }}-cluster-backups"
    location: "{{ google_cloud.region }}"
    storage_class: "NEARLINE"
    lifecycle:
      rule:
        - condition:
            age_days: 28
          action:
            type: "Delete"
    project: "{{ google_cloud.project }}"
    auth_kind: "{{ google_cloud.auth_kind }}"
    service_account_file: "{{ google_cloud.service_account_file }}"
    state: present

오류가 발생합니다.

치명적: [localhost]: 실패했습니다! => {"changed": false, "msg": "GCP에서 오류를 반환했습니다: {'error': {'code': 403, 'message': '[이메일 보호됨]Google Cloud Storage 버킷에 대한 Storage.buckets.get 액세스 권한이 없습니다.', 'errors': [{'message': '[이메일 보호됨]Google Cloud Storage 버킷에 대한 Storage.buckets.get 액세스 권한이 없습니다.', 'domain': 'global', 'reason': 'forbidden'}]}}"}

오류를 이해하지만 이 사용자에게 할당된 역할을 다음과 같이 확인했습니다.

gcloud projects get-iam-policy staging-environment --flatten="bindings[].members" --format='table(bindings.role)' --filter="bindings.members:[email protected]"
ROLE
roles/owner
roles/storage.admin
roles/storage.objectAdmin
roles/storage.objectCreator
roles/storage.objectViewer

roles/storage.admin내가 확인한 대로 요구 사항을 충족해야 합니다.Google Cloud IAM 역할 페이지이는 이 역할에 storage.buckets.*권한이 있음을 나타냅니다.

왜 여전히 같은 오류가 발생하는지 이해할 수 없습니까?

답변1

커뮤니티의 일부 구성원이 귀하의 문제를 해결하기 위해 몇 가지 솔루션을 제안했지만 그 중 어느 것도 귀하의 문제에 유용하지 않은 것 같습니다. 또한 GCP를 사용하여 서비스 계정을 만들고 역할을 할당하고 계신 것으로 알고 있습니다.

Ansible에서 서비스 계정과 서비스 계정에 대한 역할을 생성하고 작동하는지 확인할 수 있습니다.

이 플러그인을 사용하여 서비스 계정을 만들 수 있습니다google.cloud.gcp_iam_service_account – GCP ServiceAccount를 생성합니다.

예:

- name: create a service account
  google.cloud.gcp_iam_service_account:
    name: sa-{{ resource_name.split("-")[-1] }}@graphite-playground.google.com.iam.gserviceaccount.com
    display_name: My Ansible test key
    project: test_project
    auth_kind: serviceaccount
    service_account_file: "/tmp/auth.pem"
    state: present

그리고 플러그인을 사용하여 역할을 할당할 수 있습니다.google.cloud.gcp_iam_role – GCP 역할 생성

예:

- name: create a role
  google.cloud.gcp_iam_role:
    name: myCustomRole2
    title: My Custom Role
    description: My custom role description
    included_permissions:
    - iam.roles.list
    - iam.roles.create
    - iam.roles.delete
    project: test_project
    auth_kind: serviceaccount
    service_account_file: "/tmp/auth.pem"
    state: present

이 플러그인은google.cloud 컬렉션, ansible 패키지를 사용하는 경우 설치해야 합니다.

관련 정보