Visualizza le policy IAM effettive

In IAM, le policy efficaci descrivono in che modo tutte le policy principali e degli antenati nella gerarchia delle risorse vengono ereditate per una risorsa.

Per il recupero tramite Cloud Asset Inventory sono supportati solo i criteri di autorizzazione. Le seguenti forme di controllo dell'accesso non sono supportate:

Prima di iniziare

  1. Abilita l'API Cloud Asset Inventory nel progetto da cui esegui i comandi Cloud Asset Inventory.

    Abilita l'API Cloud Asset Inventory

  2. Assicurati che il tuo account disponga del ruolo corretto per chiamare l'API Cloud Asset Inventory. Per le singole autorizzazioni per ogni tipo di chiamata, vedi Autorizzazioni.

Visualizzare le policy effettive sulle risorse

gcloud

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

Fornisci i seguenti valori:

  • SCOPE_PATH: utilizza uno dei seguenti valori:

    I valori consentiti sono:

    • projects/PROJECT_ID, dove PROJECT_ID è l'ID del progetto di primo livello da cui controllare le policy IAM effettive.
    • projects/PROJECT_NUMBER, dove PROJECT_NUMBER è il numero del progetto di primo livello da cui controllare le policy IAM effettive.

      Come trovare un Google Cloud numero di progetto

      ConsoleGoogle Cloud

      Per trovare un numero di progetto, completa i seguenti passaggi: Google Cloud

      1. Vai alla pagina Benvenuto nella console Google Cloud .

        Vai a Benvenuto

      2. Fai clic sulla casella di elenco del selettore nella barra dei menu.
      3. Seleziona la tua organizzazione dalla casella di elenco e poi cerca il nome del tuo progetto. Il nome, il numero e l'ID progetto sono visualizzati vicino all'intestazione Benvenuto.

        Vengono visualizzate fino a 4000 risorse. Se non vedi il progetto che stai cercando, vai alla pagina Gestisci risorse e filtra l'elenco utilizzando il nome del progetto.

      Interfaccia a riga di comando gcloud

      Puoi recuperare un Google Cloud numero di progetto con il seguente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dove FOLDER_ID è l'ID della cartella di primo livello da cui controllare le policy IAM effettive.

      Come trovare l'ID di una Google Cloud cartella

      ConsoleGoogle Cloud

      Per trovare l'ID di una Google Cloud cartella:

      1. Vai alla console Google Cloud .

        Vai alla Google Cloud console

      2. Fai clic sulla casella di elenco del selettore nella barra dei menu.
      3. Seleziona la tua organizzazione dalla casella di elenco.
      4. Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.

      Interfaccia a riga di comando gcloud

      Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:

      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)"

      dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag --format per visualizzare ulteriori informazioni sulle cartelle trovate.

      Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui il comando seguente utilizzando l'ID di una cartella di primo livello:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dove ORGANIZATION_ID è l'ID dell'organizzazione che è il livello superiore da cui controllare le policy IAM effettive.

      Come trovare l'ID di un' Google Cloud organizzazione

      ConsoleGoogle Cloud

      Per trovare l'ID di un'organizzazione, completa i seguenti passaggi: Google Cloud

      1. Vai alla console Google Cloud .

        Vai alla Google Cloud console

      2. Fai clic sulla casella di elenco del selettore nella barra dei menu.
      3. Seleziona la tua organizzazione dalla casella di elenco.
      4. Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.

      Interfaccia a riga di comando gcloud

      Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • ASSET_NAME_#: un elenco separato da virgole di nomi completi delle risorse.

Puoi recuperare le policy per un massimo di 20 asset in un batch.

Per tutte le opzioni, consulta il riferimento gcloud CLI.

Esempio

Esegui il seguente comando per visualizzare le policy IAM effettive sull'istanza Compute Engine my-instance ereditate dall'organizzazione con ID my-organization-id.

Come trovare l'ID di un' Google Cloud organizzazione

ConsoleGoogle Cloud

Per trovare l'ID di un'organizzazione, completa i seguenti passaggi: Google Cloud

  1. Vai alla console Google Cloud .

    Vai alla Google Cloud console

  2. Fai clic sulla casella di elenco del selettore nella barra dei menu.
  3. Seleziona la tua organizzazione dalla casella di elenco.
  4. Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.

Interfaccia a riga di comando gcloud

Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:

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

Esempio di risposta

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

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Fornisci i seguenti valori:

  • SCOPE_PATH: utilizza uno dei seguenti valori:

    I valori consentiti sono:

    • projects/PROJECT_ID, dove PROJECT_ID è l'ID del progetto di primo livello da cui controllare le policy IAM effettive.
    • projects/PROJECT_NUMBER, dove PROJECT_NUMBER è il numero del progetto di primo livello da cui controllare le policy IAM effettive.

      Come trovare un Google Cloud numero di progetto

      ConsoleGoogle Cloud

      Per trovare un numero di progetto, completa i seguenti passaggi: Google Cloud

      1. Vai alla pagina Benvenuto nella console Google Cloud .

        Vai a Benvenuto

      2. Fai clic sulla casella di elenco del selettore nella barra dei menu.
      3. Seleziona la tua organizzazione dalla casella di elenco e poi cerca il nome del tuo progetto. Il nome, il numero e l'ID progetto sono visualizzati vicino all'intestazione Benvenuto.

        Vengono visualizzate fino a 4000 risorse. Se non vedi il progetto che stai cercando, vai alla pagina Gestisci risorse e filtra l'elenco utilizzando il nome del progetto.

      Interfaccia a riga di comando gcloud

      Puoi recuperare un Google Cloud numero di progetto con il seguente comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, dove FOLDER_ID è l'ID della cartella di primo livello da cui controllare le policy IAM effettive.

      Come trovare l'ID di una Google Cloud cartella

      ConsoleGoogle Cloud

      Per trovare l'ID di una Google Cloud cartella:

      1. Vai alla console Google Cloud .

        Vai alla Google Cloud console

      2. Fai clic sulla casella di elenco del selettore nella barra dei menu.
      3. Seleziona la tua organizzazione dalla casella di elenco.
      4. Cerca il nome della cartella. L'ID cartella viene visualizzato accanto al nome della cartella.

      Interfaccia a riga di comando gcloud

      Puoi recuperare l'ID di una cartella Google Cloud che si trova a livello di organizzazione con il seguente comando:

      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)"

      dove TOP_LEVEL_FOLDER_NAME è una corrispondenza parziale o completa della stringa per il nome della cartella. Rimuovi il flag --format per visualizzare ulteriori informazioni sulle cartelle trovate.

      Il comando precedente non restituisce gli ID delle sottocartelle all'interno delle cartelle. Per farlo, esegui il comando seguente utilizzando l'ID di una cartella di primo livello:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, dove ORGANIZATION_ID è l'ID dell'organizzazione che è il livello superiore da cui controllare le policy IAM effettive.

      Come trovare l'ID di un' Google Cloud organizzazione

      ConsoleGoogle Cloud

      Per trovare l'ID di un'organizzazione, completa i seguenti passaggi: Google Cloud

      1. Vai alla console Google Cloud .

        Vai alla Google Cloud console

      2. Fai clic sulla casella di elenco del selettore nella barra dei menu.
      3. Seleziona la tua organizzazione dalla casella di elenco.
      4. Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.

      Interfaccia a riga di comando gcloud

      Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • ASSET_NAME_#: un array di nomi completi degli asset.

Puoi recuperare le policy per un massimo di 20 asset in un batch.

Consulta il riferimento REST per tutte le opzioni.

Esempi di comandi

Esegui uno dei seguenti comandi per visualizzare le policy IAM effettive sull'istanza Compute Engine my-instance ereditate dall'organizzazione con l'ID my-organization-id.

Come trovare l'ID di un' Google Cloud organizzazione

ConsoleGoogle Cloud

Per trovare l'ID di un'organizzazione, completa i seguenti passaggi: Google Cloud

  1. Vai alla console Google Cloud .

    Vai alla Google Cloud console

  2. Fai clic sulla casella di elenco del selettore nella barra dei menu.
  3. Seleziona la tua organizzazione dalla casella di elenco.
  4. Fai clic sulla scheda Tutti. L'ID organizzazione viene visualizzato accanto al nome dell'organizzazione.

Interfaccia a riga di comando gcloud

Puoi recuperare l'ID di un'organizzazione Google Cloud con il seguente comando:

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

curl (Linux, macOS o 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

Esempio di risposta

{
  "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"
                ]
              }
            ]
          }
        }
      ]
    }
  ]
}