Das Dienstkonto hat keinen storage.buckets.get-Zugriff auf den Google Cloud Storage-Bucket

Das Dienstkonto hat keinen storage.buckets.get-Zugriff auf den Google Cloud Storage-Bucket

Ich führe Ansible mit einem Dienst mit der folgenden Konfiguration aus, der einen Speicher-Bucket in Google Cloud erstellen soll.

- 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

Das gibt den Fehler

fatal: [localhost]: FEHLGESCHLAGEN! => {"changed": false, "msg": "GCP hat den Fehler zurückgegeben: {'error': {'code': 403, 'message': '[email geschützt]hat keinen storage.buckets.get-Zugriff auf den Google Cloud Storage-Bucket.', 'errors': [{'message': '[email geschützt]hat keinen storage.buckets.get-Zugriff auf den Google Cloud Storage-Bucket.', 'domain': 'global', 'reason': 'forbidden'}]}}"}

Ich verstehe den Fehler, habe aber die diesem Benutzer zugewiesenen Rollen wie folgt überprüft:

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.adminsollte die Anforderung erfüllen, da ich dieGoogle Cloud IAM-Rollenseitewas besagt, dass diese Rolle die storage.buckets.*Berechtigung hat.

Ich verstehe nicht, warum ich immer noch denselben Fehler erhalte.

Antwort1

Ich verstehe, dass einige Mitglieder der Community Ihnen einige Lösungen zur Lösung Ihres Problems angeboten haben, aber anscheinend war keine davon für Ihr Problem hilfreich. Ich verstehe auch, dass Sie GCP verwenden, um das Dienstkonto zu erstellen und die Rollen zuzuweisen.

Vielleicht können Sie versuchen, das Dienstkonto und die Rollen für das Dienstkonto von Ansible aus zu erstellen und prüfen, ob das funktioniert.

Sie können das Servicekonto mit diesem Plugin erstellengoogle.cloud.gcp_iam_service_account – Erstellt ein GCP-Servicekonto

Beispiel:

- 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

Und Sie können die Rollen mit dem Plugin zuweisengoogle.cloud.gcp_iam_role – Erstellt eine GCP-Rolle

Beispiel:

- 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

Denken Sie daran, dass diese Plugins Teil dergoogle.cloud-Sammlung, das installiert werden sollte, wenn Sie ein Ansible-Paket verwenden.

verwandte Informationen