Effektive IAM-Richtlinien aufrufen

In IAM beschreiben geltende Richtlinien, wie alle übergeordneten Richtlinien und Richtlinien der Vorfahren 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 Ihr Konto die richtige Rolle zum Aufrufen der Cloud Asset Inventory API hat. Informationen zu den einzelnen Berechtigungen für die einzelnen Anruftypen finden Sie unter Berechtigungen.

Effektive 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 für die Prüfung der effektiven IAM-Richtlinien darstellt.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER die Nummer des Projekts ist, das die oberste Ebene für die Prüfung effektiver IAM-Richtlinien darstellt.

      Google Cloud Projektnummer finden

      Google Cloud Console

      So finden Sie die Projektnummer eines Google Cloud -Projekts:

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

        Zu „Willkommen“

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach Ihrem 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 sehen, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste nach dem Namen des Projekts.

      gcloud-CLI

      Sie können eine Google Cloud Projektnummer 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 für die Prüfung der effektiven IAM-Richtlinien darstellt.

      ID eines Google Cloud -Ordners finden

      Google Cloud Console

      So finden Sie die ID eines Google Cloud -Ordners:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag --format, um weitere Informationen zu den gefundenen Ordnern zu sehen.

      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 für die Prüfung effektiver IAM-Richtlinien darstellt.

      ID einer Google Cloud Organisation finden

      Google Cloud Console

      So finden Sie die ID einer Google Cloud -Organisation:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      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 von vollständigen Asset-Namen.

Sie können Richtlinien für maximal 20 Assets in einem Batch 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 geltenden IAM-Richtlinien für die Compute Engine-Instanz my-instance anzuzeigen, die von der Organisation mit der ID my-organization-id übernommen wurden.

ID einer Google Cloud Organisation finden

Google Cloud Console

So finden Sie die ID einer Google Cloud -Organisation:

  1. Zur Google Cloud Console.

    Zur Google Cloud Console

  2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
  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 der Anfrage:

{
  "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 für die Prüfung der effektiven IAM-Richtlinien darstellt.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER die Nummer des Projekts ist, das die oberste Ebene für die Prüfung effektiver IAM-Richtlinien darstellt.

      Google Cloud Projektnummer finden

      Google Cloud Console

      So finden Sie die Projektnummer eines Google Cloud -Projekts:

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

        Zu „Willkommen“

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach Ihrem 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 sehen, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste nach dem Namen des Projekts.

      gcloud-CLI

      Sie können eine Google Cloud Projektnummer 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 für die Prüfung der effektiven IAM-Richtlinien darstellt.

      ID eines Google Cloud -Ordners finden

      Google Cloud Console

      So finden Sie die ID eines Google Cloud -Ordners:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      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 eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag --format, um weitere Informationen zu den gefundenen Ordnern zu sehen.

      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 für die Prüfung effektiver IAM-Richtlinien darstellt.

      ID einer Google Cloud Organisation finden

      Google Cloud Console

      So finden Sie die ID einer Google Cloud -Organisation:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      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 mit vollständigen Asset-Namen.

Sie können Richtlinien für maximal 20 Assets in einem Batch abrufen.

Alle Optionen finden Sie in der REST-Referenz.

Beispiele für Befehle

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

ID einer Google Cloud Organisation finden

Google Cloud Console

So finden Sie die ID einer Google Cloud -Organisation:

  1. Zur Google Cloud Console.

    Zur Google Cloud Console

  2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
  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"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}