Effektive IAM-Richtlinien aufrufen

In IAM beschreiben geltende Richtlinien, wie alle übergeordneten und übergeordneten Richtlinien in der Ressourcenhierarchie für eine Ressource übernommen werden.

Nur Zulassungsrichtlinien werden für den Abruf über Cloud Asset Inventory unterstützt. Die folgenden Formen der Zugriffssteuerung werden nicht unterstützt:

Hinweise

  1. Aktivieren Sie die Cloud Asset Inventory API in dem Projekt, in dem Sie Cloud Asset Inventory-Befehle ausführen.

    Cloud Asset Inventory API aktivieren

  2. Prüfen Sie, ob Ihrem Konto die richtige Rolle zum Aufrufen der Cloud Asset Inventory API zugewiesen ist. Informationen zu den einzelnen Berechtigungen für jeden Anruftyp finden Sie unter Berechtigungen.

Gültige Richtlinien für Ressourcen ansehen

gcloud

gcloud asset get-effective-iam-policy \
    --scope=SCOPE_PATH \
    --names=ASSET_NAME_1,ASSET_NAME_2,...

Geben Sie folgende Werte an:

  • SCOPE_PATH: Verwenden Sie einen der folgenden Werte:

    Zulässige Werte:

    • projects/PROJECT_ID, wobei PROJECT_ID die ID des Projekts ist, das die oberste Ebene ist, auf der gültige IAM-Richtlinien geprüft werden.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER die Nummer des Projekts ist, das die oberste Ebene ist, auf der gültige IAM-Richtlinien geprüft werden.

      Projektnummer für Google Cloud ermitteln

      Google Cloud Console

      So finden Sie die Projektnummer eines Google Cloud -Projekts:

      1. Rufen Sie in der Google Cloud -Console die Seite Willkommen auf.

        Zur Begrüßungsseite

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.

        Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht finden, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste mit dem Namen des Projekts.

      gcloud-CLI

      Sie können die Projektnummer eines Google Cloud -Projekts mit dem folgenden Befehl abrufen:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, wobei FOLDER_ID die ID des Ordners ist, der die oberste Ebene darstellt, von der aus gültige IAM-Richtlinien geprüft werden sollen.

      ID eines Ordners in Google Cloud ermitteln

      Google Cloud Console

      So rufen Sie die ID eines Ordners in Google Cloud ab:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das --format-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, die die oberste Ebene ist, von der aus gültige IAM-Richtlinien geprüft werden.

      ID einer Google Cloud -Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud -Organisation:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • ASSET_NAME_#: Eine durch Kommas getrennte Liste der vollständigen Namen der Assets.

Sie können Richtlinien für maximal 20 Assets gleichzeitig abrufen.

Eine vollständige Liste der Optionen finden Sie in der Referenz zur gcloud CLI.

Beispiel

Führen Sie den folgenden Befehl aus, um die gültigen IAM-Richtlinien auf der Compute Engine-Instanz my-instance aufzurufen, die von der Organisation mit der ID my-organization-id übernommen wurden.

ID einer Google Cloud -Organisation ermitteln

Google Cloud Console

So ermitteln Sie die ID einer Google Cloud -Organisation:

  1. Rufen Sie die Google Cloud -Konsole auf.

    Rufen Sie die Google Cloud -Console auf.

  2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
  3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
  4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

gcloud-CLI

Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:

gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
gcloud asset get-effective-iam-policy \
    --scope=organizations/my-organization-id \
    --names=//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance

Beispielantwort

policyResults:
- fullResourceName: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance
  policies:
  - attachedResource: //cloudresourcemanager.googleapis.com/projects/my-project
    policy:
      bindings:
      - members:
        - user:alex@example.com
        - user:bola@example.com
        role: roles/cloudkms.admin
      - members:
        - serviceAccount:000000000000-compute@developer.gserviceaccount.com
        role: roles/editor
  - attachedResource: //cloudresourcemanager.googleapis.com/folders/000000000000
    policy:
      bindings:
      - members:
        - user:cruz@example.com
        role: roles/resourcemanager.folderAdmin
      - members:
        - user:dani@example.com
        role: roles/resourcemanager.folderEditor
  - attachedResource: //cloudresourcemanager.googleapis.com/organizations/0000000000000
    policy:
      bindings:
      - members:
        - user:hao@example.com
        role: organizations/0000000000000/roles/CustomProjectAdmin
      - members:
        - serviceAccount:000000000000@cloudservices.gserviceaccount.com
        - user:ira@example.com
        - user:jie@example.com
        role: roles/accesscontextmanager.policyAdmin

REST

HTTP-Methode und URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/effectiveIamPolicies:batchGet

JSON-Text anfordern:

{
  "names": [
    "ASSET_NAME_1",
    "ASSET_NAME_2",
    "..."
  ]
}

Geben Sie folgende Werte an:

  • SCOPE_PATH: Verwenden Sie einen der folgenden Werte:

    Zulässige Werte:

    • projects/PROJECT_ID, wobei PROJECT_ID die ID des Projekts ist, das die oberste Ebene ist, auf der gültige IAM-Richtlinien geprüft werden.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER die Nummer des Projekts ist, das die oberste Ebene darstellt, auf der gültige IAM-Richtlinien geprüft werden.

      Projektnummer für Google Cloud ermitteln

      Google Cloud Console

      So rufen Sie die Projektnummer eines Google Cloud -Projekts ab:

      1. Rufen Sie in der Google Cloud -Console die Seite Willkommen auf.

        Zur Begrüßungsseite

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach dem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.

        Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht finden, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste mit dem Namen des Projekts.

      gcloud-CLI

      Sie können die Projektnummer eines Google Cloud -Projekts mit dem folgenden Befehl abrufen:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, wobei FOLDER_ID die ID des Ordners ist, der die oberste Ebene darstellt, auf der wirksame IAM-Richtlinien geprüft werden sollen.

      ID eines Ordners in Google Cloud ermitteln

      Google Cloud Console

      So rufen Sie die ID eines Ordners in Google Cloud ab:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME ein teilweiser oder vollständiger Stringabgleich mit dem Namen des Ordners. Entfernen Sie das --format-Flag, um weitere Informationen zu den gefundenen Ordnern aufzurufen.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, die die oberste Ebene ist, von der aus gültige IAM-Richtlinien geprüft werden.

      ID einer Google Cloud -Organisation ermitteln

      Google Cloud Console

      So ermitteln Sie die ID einer Google Cloud -Organisation:

      1. Rufen Sie die Google Cloud -Konsole auf.

        Rufen Sie die Google Cloud -Console auf.

      2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • ASSET_NAME_#: Ein Array von vollständigen Asset-Namen.

Sie können Richtlinien für maximal 20 Assets gleichzeitig abrufen.

Weitere Informationen zu allen Optionen finden Sie in der REST-Referenz.

Befehlsbeispiele

Führen Sie einen der folgenden Befehle aus, um die effektiven IAM-Richtlinien auf der Compute Engine-Instanz my-instance aufzurufen, die von der Organisation mit der ID my-organization-id übernommen wurden.

ID einer Google Cloud -Organisation ermitteln

Google Cloud Console

So ermitteln Sie die ID einer Google Cloud -Organisation:

  1. Rufen Sie die Google Cloud -Konsole auf.

    Rufen Sie die Google Cloud -Console auf.

  2. Klicken Sie in der Menüleiste auf das Listenfeld Schalter.
  3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
  4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

gcloud-CLI

Sie können die ID einer Google Cloud -Organisation mit dem folgenden Befehl abrufen:

gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"

curl (Linux, macOS oder Cloud Shell)

curl -X POST \
     -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "names": [
              "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance"
            ]
          }' \
     https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-HTTP-Method-Override" = "GET";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "names": [
    "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance"
  ]
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/organizations/my-organization-id/effectiveIamPolicies:batchGet" | Select-Object -Expand Content

Beispielantwort

{
  "policyResults": [
    {
      "fullResourceName": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1",
      "policies": [
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/projects/my-project",
          "policy": {
            "bindings": [
              {
                "role": "roles/cloudkms.admin",
                "members": [
                  "user:alex@example.com",
                  "user:bola@example.com"
                ]
              },
              {
                "role": "roles/editor",
                "members": [
                  "serviceAccount:000000000000-compute@developer.gserviceaccount.com"
                ]
              }
            ]
          }
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/folders/000000000000",
          "policy": {
            "bindings": [
              {
                "role": "roles/resourcemanager.folderAdmin",
                "members": [
                  "user:cruz@example.com"
                ]
              },
              {
                "role": "roles/resourcemanager.folderEditor",
                "members": [
                  "user:dani@example.com"
                ]
              }
            ]
          }
        },
        {
          "attachedResource": "//cloudresourcemanager.googleapis.com/organizations/000000000000",
          "policy": {
            "bindings": [
              {
                "role": "organizations/1060291660910/roles/CustomProjectAdmin",
                "members": [
                  "user:hao@example.com"
                ]
              },
              {
                "role": "roles/accesscontextmanager.policyAdmin",
                "members": [
                  "serviceAccount:000000000000@cloudservices.gserviceaccount.com",
                  "user:ira@example.com",
                  "user:jie@example.com"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}