Risolvere i problemi relativi ai criteri

Questa pagina descrive come risolvere i problemi relativi ai criteri di autorizzazione, negazione e limiti di accesso all'entità di Identity and Access Management (IAM).

Utilizzare lo strumento per la risoluzione dei problemi relativi ai criteri

Se devi risolvere i problemi di accesso per una determinata entità, utilizza Policy Troubleshooter per IAM.

Policy Troubleshooter ti aiuta a capire se un'entità può accedere a una risorsa. Dati un'entità, una risorsa e un'autorizzazione, lo strumento per la risoluzione dei problemi dei criteri esamina i criteri di autorizzazione, i criteri di negazione e i criteri di Principal Access Boundary (PAB) che influiscono sull'accesso dell'entità. Poi, ti dice se, in base a queste policy, l'entità può utilizzare il permesso specificato per accedere alla risorsa. Inoltre, elenca le norme pertinenti e spiega in che modo influiscono sull'accesso dell'entità.

Per scoprire come utilizzare Policy Troubleshooter per risolvere i problemi relativi alle policy di autorizzazione, alle policy di negazione e alle policy di Principal Access Boundary, consulta Risolvere i problemi relativi alle autorizzazioni IAM.

Visualizza tutte le policy di autorizzazione e di negazione applicate a una risorsa

In Google Cloud, le seguenti policy di autorizzazione e negazione influiscono sull'accesso a una risorsa:

  • Il criterio di autorizzazione della risorsa
  • I criteri di negazione della risorsa, se presenti
  • I criteri di autorizzazione del progetto, della cartella e dell'organizzazione padre della risorsa, se presenti
  • I criteri di negazione del progetto, della cartella e dell'organizzazione padre della risorsa, se presenti

Le policy di autorizzazione e negazione di progetti, cartelle e organizzazioni padre influenzano l'accesso a una risorsa a causa dell'ereditarietà dei criteri. Quando colleghi un criterio di autorizzazione o negazione a un progetto, una cartella o un'organizzazione, questo criterio si applica anche a tutte le risorse all'interno del progetto, della cartella o dell'organizzazione.

Ad esempio, se un criterio di negazione per un'organizzazione stabilisce che un'entità non può utilizzare un'autorizzazione specifica, l'entità non può utilizzare questa autorizzazione per nessuna risorsa all'interno dell'organizzazione. Questa regola si applica anche se le cartelle e i progetti all'interno di questa organizzazione hanno criteri di negazione più permissivi o criteri di autorizzazione che concedono l'autorizzazione all'entità.

Allo stesso modo, se un criterio di autorizzazione per un progetto concede a un'entità un'autorizzazione specifica, l'entità dispone di questa autorizzazione per qualsiasi risorsa all'interno del progetto, a condizione che non le venga negata.

L'unione di tutti questi criteri viene chiamata criterio applicabile o criterio effettivo per la risorsa.

In Google Cloud, puoi ottenere un elenco di tutte le norme di autorizzazione e negazione che influiscono sull'accesso a un progetto utilizzando il comando gcloud beta projects get-ancestors-iam-policy con il flag --include-deny. Insieme, queste norme costituiscono le norme applicabili al progetto. Puoi esaminare ogni policy per vedere in che modo influisce sull'accesso dell'entità.

gcloud

Prima di utilizzare i dati dei comandi riportati di seguito, apporta le seguenti sostituzioni:

  • PROJECT_ID: il tuo ID progetto Google Cloud . Gli ID progetto sono stringhe alfanumeriche, come my-project.

Esegui il comando gcloud beta projects get-ancestors-iam-policy:

Linux, macOS o Cloud Shell

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows (PowerShell)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

Windows (cmd.exe)

gcloud beta projects get-ancestors-iam-policy PROJECT_ID --include-deny --format=json

La risposta contiene le policy di autorizzazione e negazione per il progetto, le cartelle che sono antenati del progetto e l'organizzazione. L'esempio seguente mostra le policy di autorizzazione per l'organizzazione 1234567890123 e il progetto my-project, nonché una policy di negazione per il progetto my-project:

[
  {
    "id": "1234567890123",
    "policy": {
      "bindings": [
        {
          "members": [
            "group:cloud-admins@example.com"
          ],
          "role": "roles/iam.denyAdmin"
        },
        {
          "members": [
            "user:raha@example.com"
          ],
          "role": "roles/iam.serviceAccountAdmin"
        }
      ],
      "etag": "BwXW6Eab7TI=",
      "version": 1
    },
    "type": "organization"
  },
  {
    "id": "my-project",
    "policy": {
      "bindings": [
        {
          "members": [
            "group:cloud-admins@example.com"
          ],
          "role": "roles/owner"
        }
      ],
      "etag": "BwXXjOM7L6M=",
      "type": "project"
    }
  },
  {
    "id": "my-project",
    "policy": {
      "createTime": "2022-02-14T21:46:35.865279Z",
      "displayName": "My deny policy",
      "etag": "MTgyMzg2ODcwNTEyMjMxMTM3Mjg=",
      "kind": "DenyPolicy",
      "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F123456789012/denypolicies/my-deny-policy",
      "rules": [
        {
          "denyRule": {
            "deniedPermissions": [
              "iam.googleapis.com/serviceAccounts.create"
            ],
            "deniedPrincipals": [
              "user:raha@example.com"
            ]
          },
          "description": "Prevent service account creation"
        }
      ],
      "uid": "c83e3dc3-d8a6-6f51-4018-814e9f200b05",
      "updateTime": "2022-02-14T21:46:35.865279Z"
    },
    "type": "project"
  }
]

In questo esempio, a Raha viene concesso il ruolo Amministratore service account (roles/iam.serviceAccountAdmin) nell'organizzazione, ma il progetto ha un criterio di negazione che impedisce a Raha di utilizzare l'autorizzazione iam.googleapis.com/serviceAccounts.create. Di conseguenza, se Raha tenta di creare un account di servizio nel progetto my-project, la richiesta verrà rifiutata.

In alcuni casi, potrebbe essere necessario visualizzare solo la policy di autorizzazione effettiva per una risorsa, ad esempio se la tua organizzazione non utilizza policy di negazione. In questi casi, puoi utilizzare i seguenti metodi per visualizzare la norma di autorizzazione effettiva:

  • Visualizza il criterio di autorizzazione IAM della risorsa nella consoleGoogle Cloud . La console Google Cloud mostra automaticamente le norme effettive di ogni risorsa.

    Per scoprire come visualizzare i criteri di autorizzazione IAM di una risorsa nella consoleGoogle Cloud , consulta Visualizzare l'accesso attuale.

  • Utilizza l'API Cloud Asset per ottenere la policy di autorizzazione effettiva della risorsa. Per scoprire di più, consulta Visualizzazione dei criteri IAM effettivi.

Se devi individuare un'associazione di ruoli specifica in una policy di autorizzazione, puoi cercarla.

Cloud Asset Inventory ti consente di cercare le policy di autorizzazione per le associazioni di ruoli che corrispondono ai parametri specificati. Puoi utilizzare una serie di parametri di ricerca, tra cui:

  • Tipo di risorsa
  • Tipo di entità
  • Ruolo
  • Progetto
  • Cartella
  • Organizzazione

Per ulteriori informazioni, vedi Ricerca delle policy di autorizzazione IAM.