Учетная запись службы не имеет доступа storage.buckets.get к контейнеру Google Cloud Storage

Учетная запись службы не имеет доступа storage.buckets.get к контейнеру Google Cloud Storage

Я запускаю Ansible со службой следующей конфигурации, которая должна создать контейнер хранилища в Google Cloud.

- 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

Что дает ошибку

fatal: [localhost]: НЕУДАЧА! => {"changed": false, "msg": "GCP вернул ошибку: {'error': {'code': 403, 'message': '[email protected]не имеет доступа storage.buckets.get к контейнеру Google Cloud Storage.', 'errors': [{'message': '[email protected]не имеет доступа storage.buckets.get к контейнеру Google Cloud Storage.', '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.

Связанный контент