Risolvere i problemi relativi ai criteri

Questa pagina descrive come risolvere i problemi relativi alle policy di autorizzazione, di negazione e di Principal Access Boundary (PAB) di Identity and Access Management (IAM).

Utilizzare Policy Troubleshooter

Se devi risolvere i problemi di accesso per un'entità specifica, 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, Policy Troubleshooter esamina le policy di autorizzazione, di negazione e di Principal Access Boundary (PAB) che influiscono sull'accesso dell'entità. Poi ti dice se, in base a queste policy, l'entità può utilizzare l'autorizzazione specificata per accedere alla risorsa. Elenca anche le policy 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 , di negazione e di Principal Access Boundary, consulta Risolvere i problemi relativi alle autorizzazioni IAM.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per visualizzare tutte le policy di autorizzazione e di negazione, chiedi all'amministratore di concederti il ruolo IAM Security Reviewer (roles/iam.securityReviewer) sull'organizzazione che contiene la risorsa. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Visualizzare tutte le policy di autorizzazione e di negazione che si applicano a una risorsa

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

  • La policy di autorizzazione della risorsa
  • Le policy di negazione della risorsa, se presenti
  • Le policy di autorizzazione del progetto, della cartella e dell' organizzazione padre della risorsa, se presenti
  • Le policy di negazione del progetto, della cartella e dell'organizzazione padre della risorsa, se presenti

Le policy di autorizzazione e di negazione dei progetti, delle cartelle e delle organizzazioni padre influiscono sull'accesso a una risorsa a causa dell'ereditarietà delle policy. Quando associ una policy di autorizzazione o di negazione a un progetto, una cartella o un'organizzazione, questa policy si applica anche a tutte le risorse all'interno del progetto, della cartella o dell' organizzazione.

Ad esempio, se una policy di negazione per un'organizzazione afferma 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 dell'organizzazione hanno policy di negazione più permissive o policy di autorizzazione che concedono l'autorizzazione all'entità.

Allo stesso modo, se una policy 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 tutte queste policy è chiamata policy applicabile o policy effettiva per la risorsa.

In Google Cloud, puoi ottenere un elenco di tutte le policy di autorizzazione e di 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 policy costituiscono la policy applicabile per il 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, effettua le seguenti sostituzioni:

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

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

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 di 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 account di servizio (roles/iam.serviceAccountAdmin) nell'organizzazione, ma il progetto ha una policy 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à negata.

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 policy di autorizzazione effettiva:

  • Visualizza la policy di autorizzazione IAM della risorsa nella Google Cloud console. La Google Cloud console mostra automaticamente la policy effettiva di ogni risorsa.

    Per scoprire come visualizzare la policy di autorizzazione IAM di una risorsa nella Google Cloud console, consulta Visualizzare l'accesso corrente.

  • Utilizza l'API Cloud Asset per ottenere la policy di autorizzazione effettiva della risorsa. Per saperne di più, consulta Visualizzare le policy IAM effettive.

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

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

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

Per saperne di più, consulta Cercare le policy di autorizzazione IAM.