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à.
Puoi accedere a Policy Troubleshooter utilizzando la consoleGoogle Cloud , Google Cloud CLI o l'API REST. Per le query di base, l'utilizzo della console Google Cloud è in genere il modo più rapido. Per scenari più complessi, valuta la possibilità di utilizzare gcloud CLI o l'API REST.
Prima di iniziare
-
Enable the Policy Troubleshooter API.
Autorizzazioni obbligatorie
Per risolvere completamente i problemi di accesso dei tuoi principal, devi disporre delle seguenti autorizzazioni.
Autorizzazioni per la risoluzione dei problemi di accesso per le singole entità
Lo strumento per la risoluzione dei problemi dei criteri analizza l'accesso di un'entità a una risorsa in base ai criteri di autorizzazione, ai criteri di negazione, ai criteri di Principal Access Boundary e ai ruoli che hai l'autorizzazione a visualizzare. Se non disponi dell'autorizzazione per visualizzare un criterio che si applica a una risorsa o un ruolo personalizzato, potresti non essere in grado di stabilire se un'entità ha accesso.
Autorizzazioni per la risoluzione dei problemi relativi alle policy di autorizzazione e di negazione
Per risolvere i problemi relativi alle policy di autorizzazione e negazione, devi disporre delle autorizzazioni per l'organizzazione che contiene la risorsa per cui vuoi risolvere i problemi. Queste autorizzazioni ti consentono di visualizzare i criteri di autorizzazione e negazione che controllano l'accesso alla risorsa.
Per ottenere le autorizzazioni necessarie per risolvere i problemi di accesso di un principal, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'organizzazione che contiene la risorsa per cui vuoi risolvere i problemi di accesso:
-
Revisore della sicurezza (
roles/iam.securityReviewer
) -
Risolvi i problemi relativi ai criteri di negazione:
Deny Reviewer (
roles/iam.denyReviewer
) -
Utilizza Google Cloud CLI per risolvere i problemi:
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
)
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.
Se non hai l'autorizzazione per visualizzare le policy di autorizzazione e negazione per una risorsa,
i risultati dell'accesso per queste policy di autorizzazione e negazione sono Unknown
.
Autorizzazioni per la risoluzione dei problemi relativi ai criteri di Principal Access Boundary
Per risolvere i problemi relativi alle policy di Principal Access Boundary, devi disporre delle autorizzazioni per l'organizzazione il cui insieme di entità include l'entità. Il modo in cui identifichi questa organizzazione dipende dal tipo di principale:
- Account Google e gruppi Google: l'organizzazione associata al dominio Google Workspace che include il principal
- Identità federate (identità nei pool di identità della forza lavoro o nei pool di identità del workload): l'organizzazione che contiene il pool di identità che include l'entità
- Service account: l'organizzazione che contiene il progetto in cui è stato creato il account di servizio
Queste autorizzazioni ti consentono di visualizzare le policy di Principal Access Boundary che controllano a cosa può accedere l'entità.
Per ottenere le autorizzazioni necessarie per risolvere i problemi di accesso di un principal, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'organizzazione appropriata:
-
Principal Access Boundary Policy Viewer (
roles/iam.principalAccessBoundaryViewer
) -
Risolvi i problemi relativi ai criteri di Principal Access Boundary associati al set di entità di un progetto, una cartella o un'organizzazione:
Amministratore dell'organizzazione (
roles/resourcemanager.organizationAdmin
) -
Risolvi i problemi relativi ai criteri per il perimetro di accesso dei principal associati ai domini Google Workspace:
Workspace Pool IAM Admin (
roles/iam.workspacePoolAdmin
) -
Risolvi i problemi relativi ai criteri per il perimetro di accesso dei principal associati ai pool di identità della forza lavoro:
Amministratore pool di forza lavoro IAM (
roles/iam.workforcePoolAdmin
) -
Risolvi i problemi relativi ai criteri perimetri di accesso dei principal associati ai pool di identità del workload:
Amministratore pool di identità del workload IAM (
roles/iam.workloadIdentityPoolAdmin
)
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.
Se non disponi dell'autorizzazione per visualizzare i criteri di Principal Access Boundary che si applicano
a un'entità, i risultati dell'accesso per i criteri di Principal Access Boundary sono
Unknown
.
Autorizzazioni per la risoluzione dei problemi di accesso per i membri del gruppo
Se i tuoi criteri di autorizzazione e negazione includono gruppi, devi disporre dell'autorizzazione API Google Workspace
Admin groups.read
per risolvere i problemi di accesso per i singoli membri del gruppo. I super amministratori e gli amministratori dei gruppi dispongono automaticamente di questa autorizzazione. Per
concedere questa autorizzazione a un utente che non è un super amministratore o un amministratore di gruppo, crea un ruolo
amministratore di Google Workspace
personalizzato che contenga il
privilegio groups.read
(disponibile in Privilegi API amministrative) e concedilo
all'utente.
Se non disponi di queste autorizzazioni, le associazioni di ruoli e le regole di negazione che contengono gruppi o domini hanno un risultato di accesso Sconosciuto, a meno che l'associazione di ruoli o la regola di negazione non includa anche esplicitamente l'entità.
Autorizzazioni per risolvere i problemi di accesso per i membri del dominio
Se i criteri di autorizzazione e negazione includono un account Google Workspace o un dominio Cloud Identity, devi essere un amministratore di dominio per risolvere i problemi di accesso per i singoli membri del dominio.
Se non disponi di queste autorizzazioni, le associazioni di ruoli e le regole di negazione che contengono gruppi o domini hanno un risultato di accesso Sconosciuto, a meno che l'associazione di ruoli o la regola di negazione non includa anche esplicitamente l'entità.
Risolvere i problemi di accesso
Per risolvere i problemi di accesso, devi disporre delle seguenti informazioni:
- Entità:l'indirizzo email da controllare. L'indirizzo email deve fare riferimento a un utente o a un account di servizio. Non sono supportati altri tipi di entità, inclusi gruppi, domini, identità della forza lavoro e identità dei workload.
Risorsa:il nome completo della risorsa per cui vuoi risolvere i problemi di accesso. Ad esempio, per risolvere i problemi di accesso al progetto
my-project
, inserisci//cloudresourcemanager.googleapis.com/projects/my-project
. Per altri tipi di risorse, consulta gli esempi di nomi completi delle risorse.Autorizzazione:l'autorizzazione da controllare. Se utilizzi la consoleGoogle Cloud , viene visualizzato un elenco di suggerimenti durante la digitazione.
Per risolvere i problemi relativi a un'autorizzazione, questa deve essere applicabile alla risorsa nella richiesta. In altre parole, deve essere possibile utilizzare questa autorizzazione per accedere alla risorsa in qualche modo. Se l'autorizzazione non è applicabile alla risorsa, la richiesta non va a buon fine. Ad esempio, se provi a risolvere i problemi relativi all'autorizzazione
compute.instances.get
per un cluster Google Kubernetes Engine, la richiesta non va a buon fine perché l'autorizzazionecompute.instance.get
non può essere utilizzata per accedere ai cluster Google Kubernetes Engine.Per un elenco completo delle autorizzazioni, consulta il riferimento alle autorizzazioni.
Console
Per risolvere i problemi di accesso:
Nella console Google Cloud , vai alla pagina Policy Troubleshooter.
Vai allo strumento per la risoluzione dei problemi relativi ai criteri
Inserisci l'email dell'entità di cui vuoi controllare l'accesso.
Inserisci il nome completo della risorsa da controllare.
Se non conosci il nome completo della risorsa, esegui una delle seguenti operazioni:
- Se stai risolvendo i problemi di accesso per un progetto, una cartella o un'organizzazione, inizia a digitare per visualizzare le opzioni di completamento automatico.
Se stai risolvendo i problemi di accesso per un altro tipo di risorsa, fai clic su Sfoglia per aprire la finestra di dialogo di ricerca delle risorse, quindi cerca la risorsa:
- Nella casella Seleziona ambito, seleziona un progetto, una cartella o un'organizzazione in cui eseguire la ricerca.
- Nella casella Tipo di risorsa, seleziona i tipi di risorsa che vuoi cercare.
- Nella casella Cerca risorse, inserisci una parte del nome della risorsa.
- Nella sezione dei risultati, seleziona la risorsa che vuoi controllare.
- Fai clic su Seleziona per scegliere la risorsa e chiudere la finestra di dialogo.
Inserisci l'autorizzazione da controllare.
Se non conosci il nome completo dell'autorizzazione, inizia a digitare per visualizzare le opzioni di completamento automatico.
(Facoltativo) Per controllare più risorse e autorizzazioni, seleziona Aggiungi un'altra coppia e ripeti il passaggio precedente.
Fai clic su Verifica accesso.
gcloud
Per scoprire perché un'entità ha o non ha un'autorizzazione IAM, utilizza il comando
gcloud beta policy-troubleshoot iam
.
Prima di utilizzare i dati dei comandi riportati di seguito, apporta le seguenti sostituzioni:
-
VERSION
: (Facoltativo). La versione del comando da utilizzare. Per risolvere i problemi di accesso in base solo ai criteri di autorizzazione e negazione, non specificare una versione. Per risolvere i problemi di accesso in base alle policy di autorizzazione, negazione e Principal Access Boundary, utilizza la versionebeta
. EMAIL
: l'indirizzo email dell'entità di cui vuoi risolvere i problemi relativi alle autorizzazioni.RESOURCE
: la risorsa per cui viene concessa l'autorizzazione.PERMISSION
: l'autorizzazione di cui vuoi risolvere i problemi.
Esegui il comando gcloud beta policy-troubleshoot iam:
Linux, macOS o Cloud Shell
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \ --permission=PERMISSION
Windows (PowerShell)
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ` --permission=PERMISSION
Windows (cmd.exe)
gcloud VERSION policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^ --permission=PERMISSION
Dovresti ricevere una risposta simile alla seguente:
Risposta
{ "accessTuple": { "conditionContext": { "destination": {}, "effectiveTags": [ { "namespacedTagKey": "project-1/tag-key-1", "namespacedTagValue": "project-1/tag-key-1/tag-value-1", "tagKey": "tagKeys/123456789012", "tagKeyParentName": "projects/123456789012", "tagValue": "tagValues/123456789012" }, ], "request": {}, "resource": {} }, "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1", "permission": "bigtable.instances.create", "permissionFqdn": "bigtable.googleapis.com/instances.create", "principal": "service-account-3@project-1.iam.gserviceaccount.com" }, "allowPolicyExplanation": { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "explainedPolicies": [ { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "bindingExplanations": [ { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "condition": { "expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"", "title": "Resource-based condition" }, "conditionExplanation": { "evaluationStates": [ { "end": 62, "value": false } ], "value": false }, "memberships": { "serviceAccount:service-account-1@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/bigquery.admin", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "condition": { "expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")", "title": "Tag-based condition" }, "conditionExplanation": { "evaluationStates": [ { "end": 73, "value": true } ], "value": true }, "memberships": { "serviceAccount:service-account-2@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/bigquery.admin", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "user:user-2@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/compute.admin", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "user:user-1@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "user:user-3@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/iam.serviceAccountTokenCreator", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "user:user-2@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "user:user-1@example.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_HIGH", "role": "roles/owner", "rolePermission": "ROLE_PERMISSION_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "serviceAccount:service-account-3@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/resourcemanager.projectIamAdmin", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" }, { "allowAccessState": "ALLOW_ACCESS_STATE_NOT_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "memberships": { "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }, "relevance": "HEURISTIC_RELEVANCE_NORMAL", "role": "roles/resourcemanager.tagViewer", "rolePermission": "ROLE_PERMISSION_NOT_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_NORMAL" } ], "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/project-1", "policy": { "bindings": [ { "condition": { "expression": "resource.type == \"cloudresourcemanager.googleapis.com/Project\"", "title": "Resource-based condition" }, "members": [ "serviceAccount:service-account-1@project-1.iam.gserviceaccount.com" ], "role": "roles/bigquery.admin" }, { "condition": { "expression": "resource.matchTag(\"project-1/tag-key-1\", \"tag-value-1\")", "title": "Tag-based condition" }, "members": [ "serviceAccount:service-account-2@project-1.iam.gserviceaccount.com" ], "role": "roles/bigquery.admin" }, { "members": [ "user:user-2@example.com" ], "role": "roles/compute.admin" }, { "members": [ "user:user-1@example.com", "user:user-3@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" }, { "members": [ "user:user-2@example.com", "user:user-1@example.com" ], "role": "roles/owner" }, { "members": [ "serviceAccount:service-account-3@project-1.iam.gserviceaccount.com", "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com" ], "role": "roles/resourcemanager.projectIamAdmin" }, { "members": [ "serviceAccount:service-account-4@project-1.iam.gserviceaccount.com" ], "role": "roles/resourcemanager.tagViewer" } ], "etag": "BwYY6ttEMEY=", "version": 3 }, "relevance": "HEURISTIC_RELEVANCE_HIGH" }, ], "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "denyPolicyExplanation": { "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED", "explainedResources": [ { "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED", "explainedPolicies": [ { "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED", "policy": { "createTime": "2024-04-09T23:28:24.103203Z", "displayName": "Troubleshooter v3 prober non-tag deny policy", "etag": "MTgyMzk3MDY4OTY4MDE0ODg4OTY=", "kind": "DenyPolicy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F546942305807/denypolicies/deny-policy-1", "rules": [ { "denyRule": { "deniedPermissions": [ "bigquery.googleapis.com/datasets.create" ], "deniedPrincipals": [ "principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com" ] } } ], "uid": "fab63b4d-ecfb-5f06-8a6d-602bf1be5062", "updateTime": "2024-05-20T23:29:38.428095Z" }, "relevance": "HEURISTIC_RELEVANCE_HIGH", "ruleExplanations": [ { "combinedDeniedPermission": { "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "combinedDeniedPrincipal": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "combinedExceptionPermission": { "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "combinedExceptionPrincipal": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "deniedPermissions": { "bigquery.googleapis.com/datasets.create": { "permissionMatchingState": "PERMISSION_PATTERN_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } }, "deniedPrincipals": { "principal://iam.googleapis.com/projects/-/serviceAccounts/service-account-1@project-1.iam.gserviceaccount.com": { "membership": "MEMBERSHIP_NOT_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } }, "denyAccessState": "DENY_ACCESS_STATE_NOT_DENIED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } ] }, ], "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/123456789012", "relevance": "HEURISTIC_RELEVANCE_HIGH" } ], "permissionDeniable": true, "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "overallAccessState": "CANNOT_ACCESS", "pabPolicyExplanation": { "explainedBindingsAndPolicies": [ { "bindingAndPolicyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED", "explainedPolicy": { "explainedRules": [ { "combinedResourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED", "effect": "ALLOW", "explainedResources": [ { "relevance": "HEURISTIC_RELEVANCE_NORMAL", "resource": "//cloudresourcemanager.googleapis.com/projects/project-2", "resourceInclusionState": "RESOURCE_INCLUSION_STATE_NOT_INCLUDED" } ], "relevance": "HEURISTIC_RELEVANCE_NORMAL", "ruleAccessState": "PAB_ACCESS_STATE_NOT_ALLOWED" } ], "policy": { "createTime": "2024-04-09T17:40:51.627668Z", "details": { "enforcementVersion": "1", "rules": [ { "effect": "ALLOW", "resources": [ "//cloudresourcemanager.googleapis.com/projects/project-2" ] } ] }, "displayName": "Troubleshooter v3 PAB Policy", "etag": "m64s4IgR80eDJDywuVA2DA==", "name": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy", "uid": "puid_11875429267422576641", "updateTime": "2024-04-09T17:40:51.627668Z" }, "policyAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED", "policyVersion": { "enforcementState": "PAB_POLICY_ENFORCEMENT_STATE_NOT_ENFORCED", "version": 1 }, "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "explainedPolicyBinding": { "conditionExplanation": { "evaluationStates": [ { "end": 53, "value": true }, { "end": 153, "start": 58, "value": false }, { "end": 248, "start": 157, "value": false } ], "value": false }, "policyBinding": { "condition": { "expression": "principal.type == 'iam.googleapis.com/ServiceAccount' && (principal.subject=='service-account-1@project-1.iam.gserviceaccount.com' || principal.subject=='service-account-2@project-1.iam.gserviceaccount.com')" }, "createTime": "2024-04-09T17:51:13.504418Z", "displayName": "PAB Policy Binding on project-1 project", "etag": "W/\"hz9IKzHsIqvopqDRcVYDxQ==\"", "name": "projects/123456789012/locations/global/policyBindings/example-policy-binding", "policy": "organizations/123456789012/locations/global/principalAccessBoundaryPolicies/example-pab-policy", "policyKind": "PRINCIPAL_ACCESS_BOUNDARY", "policyUid": "puid_11875429267422576641", "target": { "principalSet": "//cloudresourcemanager.googleapis.com/projects/project-1" }, "uid": "buid_1012746966204940289", "updateTime": "2024-05-09T23:08:56.846355Z" }, "policyBindingState": "POLICY_BINDING_STATE_NOT_ENFORCED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" }, "relevance": "HEURISTIC_RELEVANCE_NORMAL" } ], "principalAccessBoundaryAccessState": "PAB_ACCESS_STATE_NOT_ENFORCED", "relevance": "HEURISTIC_RELEVANCE_NORMAL" } }
REST
Per scoprire perché un'entità dispone o meno di un'autorizzazione IAM, utilizza il metodo
iam.troubleshoot
dell'API Policy Troubleshooter.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
-
VERSION
: la versione dell'API da utilizzare per questa richiesta. Per risolvere i problemi di accesso in base solo alle policy di autorizzazione e negazione, utilizzav3
. Per risolvere i problemi di accesso in base alle policy di autorizzazione, negazione e Principal Access Boundary, utilizzav3beta
. EMAIL
: l'indirizzo email dell'entità di cui vuoi risolvere i problemi relativi alle autorizzazioni.RESOURCE
: la risorsa per cui viene concessa l'autorizzazione.PERMISSION
: l'autorizzazione di cui vuoi risolvere i problemi.PROJECT_ID
: l'ID del progetto che vuoi utilizzare per effettuare la richiesta. Gli ID progetto sono stringhe alfanumeriche, comemy-project
.
Metodo HTTP e URL:
POST https://policytroubleshooter.googleapis.com/VERSION/iam:troubleshoot
Corpo JSON della richiesta:
{ "accessTuple": { "principal": "EMAIL", "fullResourceName": "RESOURCE", "permission": "PERMISSION" } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Interpretare i risultati dello strumento per la risoluzione dei problemi
Console
La pagina dei risultati contiene le seguenti informazioni:
- Dettagli della valutazione
- Dettagli policy, che contiene quanto segue:
Dettagli della valutazione
La sezione Dettagli della valutazione contiene un riepilogo dell'accesso che stai risolvendo, inclusi il principal, la risorsa e l'autorizzazione specificati. Se stai risolvendo i problemi relativi a più coppie di autorizzazioni per le risorse, puoi utilizzare l'elenco Valutazione dell'accesso per passare da una coppia all'altra.
Dettagli delle norme
La sezione Dettagli policy contiene informazioni su come le policy di autorizzazione, negazione e Principal Access Boundary pertinenti influiscono sull'accesso dell'entità.
Le policy di Principal Access Boundary pertinenti includono tutte le policy di Principal Access Boundary associate a un set di entità che include l'entità.
Le policy di autorizzazione e negazione pertinenti includono le seguenti:
- 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
I criteri di autorizzazione e negazione di progetti, cartelle e organizzazioni padre sono pertinenti 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.
La sezione Dettagli delle norme contiene le seguenti sezioni:
Stato di accesso
La sezione Stato di accesso riepiloga i risultati per ogni tipo di criterio (criteri di Principal Access Boundary, criteri di negazione e criteri di autorizzazione) e indica il risultato complessivo. Il risultato indica se l'entità può utilizzare l'autorizzazione per accedere alla risorsa, in base ai criteri pertinenti.
Affinché un utente possa utilizzare l'autorizzazione per accedere alla risorsa, tutti i tipi di policy devono consentire l'accesso. Per ulteriori informazioni, consulta la sezione Valutazione delle norme.
Policy di Principal Access Boundary
Nella sezione Policy di Principal Access Boundary, puoi visualizzare tutte le policy di Principal Access Boundary a cui è soggetta l'entità e le associazioni delle policy che le associano all'entità.
Il riquadro Policy elenca tutte le policy associate a un set di entità che include l'entità. Accanto a ogni policy è presente un'icona che indica in che modo la policy influisce sull'accesso dell'entità.
Le policy di Principal Access Boundary possono influire sull'accesso di un principal nei seguenti modi:
- L'entità è idonea ad accedere alla risorsa: il criterio di Principal Access Boundary si applica all'entità e una delle sue regole contiene la risorsa sottoposta a query.
- L'entità non è idonea ad accedere alla risorsa: il criterio di Principal Access Boundary si applica all'entità, ma la risorsa sottoposta a query non è inclusa nelle regole del criterio.
Non applicato: Le policy di Principal Access Boundary non vengono applicate nelle seguenti situazioni:
- IAM non applica l'autorizzazione specificata nella versione di applicazione dei criteri di Principal Access Boundary. Di conseguenza, la policy di Principal Access Boundary non può bloccare l'accesso.
- A causa di una condizione nell'associazione della policy, la policy o l'associazione di Principal Access Boundary non si applica all'entità.
- Una policy di Principal Access Boundary non ha regole.
Se un criterio di Principal Access Boundary non viene applicato, non può influire sulla possibilità dell'entità di accedere alla risorsa.
Per visualizzare le regole e le associazioni associate a una policy di Principal Access Boundary, fai clic sul nome della policy. Il riquadro adiacente al riquadro Criteri mostra i dettagli del criterio.
Per visualizzare le regole nella policy, fai clic sulla scheda Regole di confine. Questa scheda mostra una tabella delle regole pertinenti dei criteri di Principal Access Boundary.
Una regola di Principal Access Boundary è pertinente se influisce sul risultato complessivo della query dello strumento per la risoluzione dei problemi dei criteri. Di conseguenza, le regole pertinenti variano a seconda dei risultati dello strumento per la risoluzione dei problemi relativi ai criteri. Ad esempio, considera le seguenti situazioni:
- Lo strumento per la risoluzione dei problemi relativi ai criteri indica che l'entità può accedere alla risorsa. Di conseguenza, le regole pertinenti sono quelle che rendono l'entità idonea ad accedere alla risorsa.
- Lo strumento per la risoluzione dei problemi relativi ai criteri indica che l'entità non può accedere alla risorsa. Tuttavia, in base alle policy di Principal Access Boundary pertinenti, l'entità è idonea ad accedere alla risorsa. Di conseguenza, nessuna regola è pertinente, perché le policy di Principal Access Boundary non sono il motivo per cui l'entità non può accedere alla risorsa.
- Lo strumento per la risoluzione dei problemi relativi ai criteri indica che l'entità non può accedere alla risorsa. Inoltre, in base alle policy di Principal Access Boundary pertinenti, l'entità non è idonea ad accedere alla risorsa. Di conseguenza, le regole pertinenti sono quelle che non rendono l'entità idonea ad accedere alla risorsa.
Per visualizzare tutte le regole di Principal Access Boundary in una policy, deseleziona la casella di controllo Mostra solo regole e associazioni pertinenti.
La colonna Risultati nella tabella delle regole di confine indica se la regola di Principal Access Boundary contiene la risorsa sottoposta a query. Per visualizzare ulteriori dettagli sulla regola, fai clic su Visualizza dettagli regola.
Per visualizzare i binding delle policy per la policy, fai clic sulla scheda Binding. Questa scheda mostra una tabella delle associazioni di policy pertinenti per il criterio di confine dell'accesso dell'entità selezionato.
Un'associazione di policy è pertinente se applica effettivamente la policy di Principal Access Boundary all'entità sottoposta a query. Affinché un'associazione di policy applichi un criterio di Principal Access Boundary a un'entità, devono essere soddisfatte le seguenti condizioni:
- Il set di entità nell'associazione di policy deve includere l'entità sottoposta a query
- Tutte le condizioni nel binding delle norme devono restituire il valore
true
per l'entità richiesta.
Per visualizzare tutte le associazioni di policy con i set di entità che includono l'entità sottoposta a query, indipendentemente dal fatto che l'entità sottoposta a query soddisfi la condizione nell'associazione, deseleziona la casella di controllo Mostra solo regole e associazioni pertinenti.
La colonna Risultati nella tabella delle associazioni indica se l'associazione viene applicata all'entità sottoposta a query. Per visualizzare ulteriori dettagli sul binding delle norme, fai clic su Visualizza dettagli binding.
Policy di negazione
Nella sezione Criterio di negazione, puoi visualizzare tutti i criteri di negazione pertinenti, identificare le regole di negazione che negano l'accesso all'entità e capire perché una regola di negazione nega o non nega all'entità l'autorizzazione.
Il riquadro Risorse con policy di negazione elenca tutte le policy di negazione pertinenti, organizzate in base alle risorse a cui sono associate. Accanto a ogni criterio di negazione è presente una valutazione dell'accesso. Questa valutazione si applica solo a questo criterio di negazione e non riflette alcun accesso da criteri ereditati. Se non hai l'autorizzazione per visualizzare i criteri di negazione di una risorsa, l'elenco delle risorse non include la risorsa o i relativi criteri di negazione.
Per visualizzare le regole di rifiuto pertinenti in questi criteri di rifiuto, fai clic su un criterio di rifiuto. Per visualizzare tutte le regole di negazione nei criteri di negazione di una risorsa, fai clic su una risorsa. Le regole di negazione vengono visualizzate nel riquadro Regole di negazione. Questo riquadro contiene una tabella di tutte le regole di negazione con l'entità o l'autorizzazione di cui è stata eseguita la query per la risorsa o il criterio di negazione che hai selezionato.
La colonna Accesso indica se la regola di negazione nega all'entità l'autorizzazione. Per visualizzare ulteriori dettagli sulla regola di negazione, fai clic su Visualizza regola di negazione nella riga della regola.
Criterio di autorizzazione
Nella sezione Criterio di autorizzazione puoi navigare tra tutti i criteri di autorizzazione pertinenti, identificare le associazioni di ruoli che concedono l'accesso all'entità e capire perché un'associazione di ruoli concede o non concede l'autorizzazione all'entità.
Il riquadro Risorse elenca la risorsa specificata e i relativi antenati. Accanto a ogni risorsa è presente una valutazione dell'accesso. Questa valutazione si applica solo al criterio di autorizzazione della risorsa e non riflette l'accesso da criteri ereditati. Se non hai l'autorizzazione per visualizzare i criteri di autorizzazione di una risorsa, l'elenco delle risorse non include quella risorsa.
Per visualizzare le associazioni di ruoli pertinenti nei criteri di autorizzazione di una risorsa e vedere in che modo concedono o meno l'autorizzazione all'entità, fai clic sulla risorsa. Le associazioni di ruoli del criterio di autorizzazione vengono visualizzate nel riquadro Associazioni di ruoli.
Il riquadro Associazioni di ruolo contiene una tabella delle associazioni di ruolo nei criteri di autorizzazione della risorsa selezionata. Per impostazione predefinita, la tabella contiene solo le associazioni di ruoli che includono un ruolo con l'autorizzazione specificata. Se l'entità non ha accesso, la tabella mostra anche le associazioni di ruoli con ruoli personalizzati modificabili. Per visualizzare tutte le associazioni di ruoli, deseleziona la casella di controllo Mostra solo le associazioni pertinenti.
La colonna Accesso indica se l'associazione di ruoli concede all'entità l'autorizzazione. Per visualizzare ulteriori dettagli sull'associazione del ruolo, fai clic su Visualizza dettagli associazione nella riga dell'associazione del ruolo.
gcloud
La risposta contiene quattro sezioni principali: una descrizione della tupla di accesso nella richiesta, i risultati della valutazione della policy di autorizzazione, i risultati della valutazione della policy di negazione e lo stato di accesso complessivo.
-
accessTuple
: una descrizione della tupla di accesso nella richiesta, incluso qualsiasi contesto di condizione che hai fornito. Questa sezione contiene anche un riepilogo dei tag che si applicano alla risorsa. -
allowPolicyExplanation
: un riepilogo che indica se le policy di autorizzazione pertinenti concedono all'entità l'autorizzazione, seguito da un elenco di policy di autorizzazione e delle relative associazioni dei ruoli.Per ogni policy di autorizzazione, la risposta elenca tutti i binding dei ruoli nella policy e li valuta in base ai seguenti criteri:
- Se l'associazione di ruoli include l'autorizzazione.
- Indica se l'associazione di ruoli include l'entità.
- Se le condizioni nell'associazione di ruolo, se presenti, sono soddisfatte.
Quindi, la risposta stampa il testo JSON completo del criterio di autorizzazione.
-
denyPolicyExplanation
: un riepilogo che indica se i criteri di negazione pertinenti negano all'entità l'autorizzazione, seguito da un elenco di risorse con criteri di negazione. Per ogni risorsa, la risposta elenca tutte le policy di negazione associate alla risorsa.Per ogni policy di negazione, la risposta stampa i metadati della policy, elenca le regole di negazione nella policy, quindi valuta ogni regola in base ai seguenti criteri:
- Indica se la regola di negazione include l'autorizzazione.
- Se l'autorizzazione è elencata come eccezione nella regola di negazione.
- Indica se la regola di negazione include l'entità.
- Indica se l'entità è elencata come eccezione nella regola di negazione.
- Se le condizioni della regola di negazione, se presenti, sono soddisfatte.
-
overallAccessState
: Indica se l'entità è in grado di utilizzare l'autorizzazione specificata per accedere alla risorsa specificata in base alle policy di autorizzazione, alle policy di negazione e alle policy di Principal Access Boundary pertinenti.Le policy di Principal Access Boundary pertinenti includono tutte le policy di Principal Access Boundary associate a un set di entità che include l'entità.
Le policy di autorizzazione e negazione pertinenti includono le seguenti:
- 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
I criteri di autorizzazione e negazione di progetti, cartelle e organizzazioni padre sono pertinenti 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.
Affinché un utente possa utilizzare l'autorizzazione per accedere alla risorsa, tutti i tipi di policy devono consentire l'accesso. Per ulteriori informazioni, consulta la sezione Valutazione delle norme.
pabPolicyExplanation
: Un riepilogo che indica se le policy di Principal Access Boundary pertinenti consentono all'entità di accedere alla risorsa, seguito dalle associazioni delle policy di Principal Access Boundary pertinenti e dalle policy di Principal Access Boundary.
Le policy di Principal Access Boundary possono consentire l'accesso, non consentirlo o non essere applicate. Le policy di Principal Access Boundary non vengono applicate nelle seguenti situazioni:
- IAM non applica l'autorizzazione specificata nella versione di applicazione dei criteri di Principal Access Boundary. Di conseguenza, la policy di Principal Access Boundary non può bloccare l'accesso.
- A causa di una condizione nell'associazione della policy, la policy o l'associazione di Principal Access Boundary non si applica all'entità.
- Una policy di Principal Access Boundary non ha regole.
Se un criterio di Principal Access Boundary non viene applicato, non può influire sulla possibilità dell'entità di accedere alla risorsa.
La risposta elenca anche tutte le associazioni di policy che includono l'entità e i dettagli della policy di Principal Access Boundary in ciascuna di queste associazioni di policy:
-
Per ogni associazione dei criteri di Principal Access Boundary, la risposta indica se
l'associazione dei criteri viene applicata all'entità, quindi stampa il testo
dell'associazione dei criteri. Un'associazione di policy viene applicata se il set di entità nell'associazione include l'entità sottoposta a query e se la condizione nell'associazione di policy restituisce
true
per l'entità sottoposta a query. Se l'associazione di criteri non viene applicata, i criteri non possono influire sulla possibilità dell'entità di accedere alla risorsa. -
Per ogni criterio di Principal Access Boundary, la risposta stampa quanto segue:
- Se il criterio consente l'accesso, non lo consente o non viene applicato.
- La versione di applicazione delle norme. Questo numero di versione determina se IAM applica questo criterio di Principal Access Boundary per l'autorizzazione interrogata. Se l'autorizzazione non viene applicata, il criterio non può influire sulla possibilità dell'entità di accedere alla risorsa.
-
Le regole nel criterio di Principal Access Boundary e se ogni regola consente l'accesso. Per ogni regola, la risposta indica se la risorsa sottoposta a query è inclusa nella regola.
Una risorsa è inclusa in una regola se una delle seguenti condizioni è vera:
- La risorsa è elencata nella regola. Solo le risorse di Resource Manager (progetti, cartelle e organizzazioni) possono essere elencate direttamente nelle regole del confine di accesso dell'entità.
- Uno degli antenati della risorsa (ovvero un progetto, una cartella o un'organizzazione sopra la risorsa nella gerarchia delle risorse) è elencato nella regola.
Molti oggetti nella risposta hanno anche un campo relevance
. Il valore in questo
campo indica il contributo dell'oggetto allo stato di accesso complessivo.
Il campo relevance
può avere i seguenti valori:
HEURISTIC_RELEVANCE_HIGH
: indica che l'oggetto ha un forte impatto sul risultato. In altre parole, la rimozione dell'oggetto probabilmente cambierà lo stato di accesso complessivo. Ad esempio, un'associazione di ruoli che concede all'entità l'autorizzazione specificata avrebbe questo valore di pertinenza.HEURISTIC_RELEVANCE_NORMAL
: indica che l'oggetto ha un impatto limitato sul risultato. In altre parole, la rimozione dell'oggetto non dovrebbe modificare lo stato di accesso complessivo. Ad esempio, una regola di negazione che non contiene l'autorizzazione o il principal avrebbe questo valore di pertinenza.
REST
La risposta contiene quattro sezioni principali: lo stato di accesso complessivo, una descrizione della tupla di accesso nella richiesta, i risultati della valutazione della policy di autorizzazione e i risultati della valutazione della policy di negazione.
-
overallAccessState
: Indica se l'entità è in grado di utilizzare l'autorizzazione specificata per accedere alla risorsa specificata in base alle policy di autorizzazione, alle policy di negazione e alle policy di Principal Access Boundary pertinenti.Le policy di Principal Access Boundary pertinenti includono tutte le policy di Principal Access Boundary associate a un set di entità che include l'entità.
Le policy di autorizzazione e negazione pertinenti includono le seguenti:
- 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
I criteri di autorizzazione e negazione di progetti, cartelle e organizzazioni padre sono pertinenti 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.
Affinché un utente possa utilizzare l'autorizzazione per accedere alla risorsa, tutti i tipi di policy devono consentire l'accesso. Per ulteriori informazioni, consulta la sezione Valutazione delle norme.
-
accessTuple
: una descrizione della tupla di accesso nella richiesta, incluso qualsiasi contesto di condizione che hai fornito. Questa sezione contiene anche un riepilogo dei tag che si applicano alla risorsa. -
allowPolicyExplanation
: un riepilogo che indica se le policy di autorizzazione pertinenti concedono all'entità l'autorizzazione, seguito da un elenco di policy di autorizzazione e delle relative associazioni dei ruoli.Per ogni policy di autorizzazione, la risposta elenca tutti i binding dei ruoli nella policy e li valuta in base ai seguenti criteri:
- Se l'associazione di ruoli include l'autorizzazione.
- Indica se l'associazione di ruoli include l'entità.
- Se le condizioni nell'associazione di ruolo, se presenti, sono soddisfatte.
Quindi, la risposta stampa il testo JSON completo del criterio di autorizzazione.
-
denyPolicyExplanation
: un riepilogo che indica se i criteri di negazione pertinenti negano all'entità l'autorizzazione, seguito da un elenco di risorse con criteri di negazione. Per ogni risorsa, la risposta elenca tutte le policy di negazione associate alla risorsa.Per ogni policy di negazione, la risposta stampa i metadati della policy, elenca le regole di negazione nella policy, quindi valuta ogni regola in base ai seguenti criteri:
- Indica se la regola di negazione include l'autorizzazione.
- Se l'autorizzazione è elencata come eccezione nella regola di negazione.
- Indica se la regola di negazione include l'entità.
- Indica se l'entità è elencata come eccezione nella regola di negazione.
- Se le condizioni della regola di negazione, se presenti, sono soddisfatte.
-
pabPolicyExplanation
: Un riepilogo che indica se le policy di Principal Access Boundary pertinenti consentono all'entità di accedere alla risorsa, seguito dalle associazioni delle policy di Principal Access Boundary pertinenti e dalle policy di Principal Access Boundary.Le policy di Principal Access Boundary possono consentire l'accesso, non consentirlo o non essere applicate. Le policy di Principal Access Boundary non vengono applicate nelle seguenti situazioni:
- IAM non applica l'autorizzazione specificata nella versione di applicazione dei criteri di Principal Access Boundary. Di conseguenza, la policy di Principal Access Boundary non può bloccare l'accesso.
- A causa di una condizione nell'associazione della policy, la policy o l'associazione di Principal Access Boundary non si applica all'entità.
- Una policy di Principal Access Boundary non ha regole.
Se un criterio di Principal Access Boundary non viene applicato, non può influire sulla possibilità dell'entità di accedere alla risorsa.
La risposta elenca anche tutte le associazioni di policy che includono l'entità e i dettagli della policy di Principal Access Boundary in ciascuna di queste associazioni di policy:
-
Per ogni associazione dei criteri di Principal Access Boundary, la risposta indica se
l'associazione dei criteri viene applicata all'entità, quindi stampa il testo
dell'associazione dei criteri. Un'associazione di policy viene applicata se il set di entità nell'associazione include l'entità sottoposta a query e se la condizione nell'associazione di policy restituisce
true
per l'entità sottoposta a query. Se l'associazione di criteri non viene applicata, i criteri non possono influire sulla possibilità dell'entità di accedere alla risorsa. -
Per ogni criterio di Principal Access Boundary, la risposta stampa quanto segue:
- Se il criterio consente l'accesso, non lo consente o non viene applicato.
- La versione di applicazione delle norme. Questo numero di versione determina se IAM applica questo criterio di Principal Access Boundary per l'autorizzazione interrogata. Se l'autorizzazione non viene applicata, il criterio non può influire sulla possibilità dell'entità di accedere alla risorsa.
-
Le regole nel criterio di Principal Access Boundary e se ogni regola consente l'accesso. Per ogni regola, la risposta indica se la risorsa sottoposta a query è inclusa nella regola.
Una risorsa è inclusa in una regola se una delle seguenti condizioni è vera:
- La risorsa è elencata nella regola. Solo le risorse di Resource Manager (progetti, cartelle e organizzazioni) possono essere elencate direttamente nelle regole del confine di accesso dell'entità.
- Uno degli antenati della risorsa (ovvero un progetto, una cartella o un'organizzazione sopra la risorsa nella gerarchia delle risorse) è elencato nella regola.
Molti oggetti nella risposta hanno anche un campo relevance
. Il valore in questo
campo indica il contributo dell'oggetto allo stato di accesso complessivo.
Il campo relevance
può avere i seguenti valori:
HEURISTIC_RELEVANCE_HIGH
: indica che l'oggetto ha un forte impatto sul risultato. In altre parole, la rimozione dell'oggetto probabilmente cambierà lo stato di accesso complessivo. Ad esempio, un'associazione di ruoli che concede all'entità l'autorizzazione specificata avrebbe questo valore di pertinenza.HEURISTIC_RELEVANCE_NORMAL
: indica che l'oggetto ha un impatto limitato sul risultato. In altre parole, la rimozione dell'oggetto non dovrebbe modificare lo stato di accesso complessivo. Ad esempio, una regola di negazione che non contiene l'autorizzazione o il principal avrebbe questo valore di pertinenza.
Risoluzione dei problemi relativi ai binding dei ruoli condizionali
Policy Troubleshooter risolve automaticamente i problemi relativi ai binding dei ruoli condizionali e alle regole di negazione in base ai tag. Inoltre, risolve automaticamente i problemi relativi alle associazioni delle policy di Principal Access Boundary con condizioni in base alle entità.
Per risolvere i problemi relativi ad altri tipi di associazione di ruoli condizionali o regole di negazione condizionali, Policy Troubleshooter ha bisogno di ulteriore contesto sulla richiesta. Ad esempio, per risolvere i problemi relativi alle condizioni basate su attributi di data/ora, lo strumento per la risoluzione dei problemi relativi ai criteri ha bisogno dell'ora della richiesta.
Nell'interfaccia alla gcloud CLI e nell'API REST, fornisci questo contesto aggiuntivo manualmente.
Nella console Google Cloud , puoi fornire questo contesto aggiuntivo risolvendo i problemi direttamente da qualsiasi audit log Attività di amministrazione o audit log Accesso ai dati. Ogni voce di log di controllo corrisponde a una richiesta a un'APIGoogle Cloud o a un'azione che Google Cloud esegue per tuo conto. Quando risolvi i problemi da un log di controllo, Policy Troubleshooter recupera automaticamente ulteriori informazioni sulla richiesta, ad esempio la data e l'ora, il che consente a Policy Troubleshooter di analizzare i binding dei ruoli condizionali e le regole di negazione.
Console
Per risolvere i problemi relativi ai binding dei ruoli condizionali e alle regole di negazione:
Nella console Google Cloud , vai alla pagina Esplora log.
Se il titolo della pagina è Visualizzatore log legacy, fai clic sul menu a discesa Esegui l'upgrade e seleziona Esegui l'upgrade al nuovo Esplora log.
Per visualizzare solo i log di controllo dell'attività di amministrazione e dell'accesso ai dati, inserisci la seguente query nel generatore di query, quindi fai clic su Esegui query:
logName=("RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" OR "RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Fdata_access")
Sostituisci i seguenti valori:
RESOURCE_TYPE
: Il tipo di risorsa per cui stai elencando gli audit log. Utilizzaprojects
,folders
oorganizations
.RESOURCE_ID
: l'ID della risorsa.
Individua la voce dell'audit log corrispondente alla richiesta per cui vuoi risolvere il problema. Per scoprire come utilizzare Esplora log per trovare voci di log specifiche, consulta Utilizzo di Esplora log.
Nella colonna Riepilogo della voce di log, fai clic su IAM, quindi su Risolvi il problema di accesso.
Policy Troubleshooter utilizza le informazioni nella voce di log per risolvere i problemi di accesso, quindi mostra i risultati. Il contesto aggiuntivo è elencato nei dettagli della valutazione in Contesto della condizione. Per visualizzare i dettagli del contesto, fai clic su Visualizza contesto della condizione. Per saperne di più sulla pagina dei risultati dello strumento per la risoluzione dei problemi relativi ai criteri, consulta Comprendere i risultati dello strumento per la risoluzione dei problemi in questa pagina.
(Facoltativo) Per risolvere i problemi relativi a un'altra richiesta che coinvolge associazioni di ruoli condizionali e regole di negazione, torna alla pagina Esplora log e ripeti i passaggi precedenti.
gcloud
Per risolvere i problemi relativi alle associazioni di ruoli condizionali e alle regole di negazione, utilizza il comando
gcloud policy-troubleshoot iam
.
Prima di utilizzare i dati dei comandi riportati di seguito, apporta le seguenti sostituzioni:
-
EMAIL
: l'indirizzo email dell'entità di cui vuoi risolvere i problemi relativi alle autorizzazioni. -
RESOURCE
: la risorsa per cui viene concessa l'autorizzazione. -
PERMISSION
: l'autorizzazione di cui vuoi risolvere i problemi. -
DESTINATION_IP
: (Facoltativo). L'indirizzo IP di destinazione della richiesta da utilizzare per controllare le associazioni di ruoli condizionali. Ad esempio,198.1.1.1
. -
DESTINATION_PORT
: (Facoltativo). La porta di destinazione della richiesta da utilizzare per controllare le associazioni di ruoli condizionali. Ad esempio, `8080`. -
REQUEST_TIME
: (Facoltativo). Il timestamp della richiesta da utilizzare durante il controllo delle associazioni di ruoli condizionali. Utilizza un timestamp in formato RFC 3339, ad esempio2099-02-01T00:00:00Z
. -
RESOURCE_NAME
: (Facoltativo). Il valore del nome della risorsa da utilizzare per verificare i binding dei ruoli condizionali. Per un elenco dei formati dei nomi delle risorse accettati, consulta la sezione Formato del nome della risorsa. -
RESOURCE_SERVICE
: (Facoltativo). Il valore del servizio di risorse da utilizzare per verificare i binding dei ruoli condizionali. Per un elenco dei nomi dei servizi accettati, vedi Valori dei servizi delle risorse. -
RESOURCE_TYPE
: (Facoltativo). Per un elenco dei tipi di risorsa accettati, consulta Valori del tipo di risorsa.
Esegui il comando gcloud policy-troubleshoot iam:
Linux, macOS o Cloud Shell
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL \ --permission=PERMISSION --destination-ip=DESTINATION_IP \ --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME \ --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE \ --resource-type=RESOURCE_TYPE
Windows (PowerShell)
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ` --permission=PERMISSION --destination-ip=DESTINATION_IP ` --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ` --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ` --resource-type=RESOURCE_TYPE
Windows (cmd.exe)
gcloud policy-intelligence troubleshoot-policy iam RESOURCE --principal-email=EMAIL ^ --permission=PERMISSION --destination-ip=DESTINATION_IP ^ --destination-port=DESTINATION_PORT --request-time=REQUEST_TIME ^ --resource-name=RESOURCE_NAME --resource-service=RESOURCE_SERVICE ^ --resource-type=RESOURCE_TYPE
La risposta contiene una spiegazione dell'accesso del principal. Per ogni binding di ruolo e regola di negazione con una condizione, la risposta include un campo conditionExplanation
che descrive se la condizione restituisce true o false in base al contesto della condizione che hai fornito.
Ad esempio, di seguito è riportata una valutazione di un binding del ruolo con una condizione che specifica il tipo di risorsa e il servizio di risorse:
Risposta
... { "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED", "combinedMembership": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "condition": { "expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"", "title": "Compute instances only", "description": "Condition that limits permissions to only Compute instances" }, "conditionExplanation": { "evaluationStates": [{ "end": 51, "start": 1, "value": true }, { "end": 99, "start": 55, "value": true }], "value": true, }, "memberships": { "user:my-user@example.com": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } }, "relevance": "HEURISTIC_RELEVANCE_HIGH", "role": "roles/compute.viewer", "rolePermission": "ROLE_PERMISSION_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH" } ...
REST
Per risolvere i problemi relativi ai binding dei ruoli condizionali e alle regole di negazione, utilizza il metodo
iam.troubleshoot
dell'API Policy Troubleshooter.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
-
EMAIL
: l'indirizzo email dell'entità di cui vuoi risolvere i problemi relativi alle autorizzazioni. -
RESOURCE
: la risorsa per cui viene concessa l'autorizzazione. -
PERMISSION
: l'autorizzazione di cui vuoi risolvere i problemi. -
DESTINATION_IP
: (Facoltativo). L'indirizzo IP di destinazione della richiesta da utilizzare per controllare le associazioni di ruoli condizionali. Ad esempio,198.1.1.1
. -
DESTINATION_PORT
: (Facoltativo). La porta di destinazione della richiesta da utilizzare per controllare le associazioni di ruoli condizionali. Ad esempio, `8080`. -
REQUEST_TIME
: (Facoltativo). Il timestamp della richiesta da utilizzare durante il controllo delle associazioni di ruoli condizionali. Utilizza un timestamp in formato RFC 3339, ad esempio2099-02-01T00:00:00Z
. -
RESOURCE_NAME
: (Facoltativo). Il valore del nome della risorsa da utilizzare per verificare i binding dei ruoli condizionali. Per un elenco dei formati dei nomi delle risorse accettati, consulta la sezione Formato del nome della risorsa. -
RESOURCE_SERVICE
: (Facoltativo). Il valore del servizio di risorse da utilizzare per verificare i binding dei ruoli condizionali. Per un elenco dei nomi dei servizi accettati, vedi Valori dei servizi delle risorse. -
RESOURCE_TYPE
: (Facoltativo). Per un elenco dei tipi di risorsa accettati, consulta Valori del tipo di risorsa.
Metodo HTTP e URL:
POST https://policytroubleshooter.googleapis.com/v3/iam:troubleshoot
Corpo JSON della richiesta:
{ "accessTuple": { "principal": "EMAIL", "fullResourceName": "RESOURCE", "permission": "PERMISSION", "conditionContext": { "destination": { "ip": DESTINATION_IP, "port": DESTINATION_PORT }, "request": { "receiveTime": REQUEST_TIME }, "resource": { "name": RESOURCE_NAME, "service": RESOURCE_SERVICE, "type": RESOURCE_TYPE } } } }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene una spiegazione dell'accesso del principal. Per ogni binding di ruolo e regola di negazione con una condizione, la risposta include un campo conditionExplanation
che descrive se la condizione restituisce true o false in base al contesto della condizione che hai fornito.
Ad esempio, di seguito è riportata una valutazione di un binding del ruolo con una condizione che specifica il tipo di risorsa e il servizio di risorse:
... { "allowAccessState": "ALLOW_ACCESS_STATE_GRANTED", "role": "roles/compute.viewer", "rolePermission": "ROLE_PERMISSION_INCLUDED", "rolePermissionRelevance": "HEURISTIC_RELEVANCE_HIGH", "combinedMembership": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" }, "memberships": { "user:my-user@example.com": { "membership": "MEMBERSHIP_MATCHED", "relevance": "HEURISTIC_RELEVANCE_HIGH" } }, "relevance": "HEURISTIC_RELEVANCE_HIGH", "condition": { "expression": " resource.type \u003d\u003d \"compute.googleapis.com/Instance\" \u0026\u0026 resource.service \u003d\u003d \"compute.googleapis.com\"", "title": "Compute instances only", "description": "Condition that limits permissions to only Compute instances" }, "conditionExplanation": { "value": true, "evaluationStates": [{ "start": 1, "end": 51, "value": true }, { "start": 55, "end": 99, "value": true }] } } ...
Passaggi successivi
- Utilizza il riferimento alle autorizzazioni o il riferimento ai ruoli predefiniti per determinare quale ruolo concedere a un utente a cui mancano le autorizzazioni.
- Scopri gli altri strumenti di Policy Intelligence, che ti aiutano a comprendere e gestire le tue policy per migliorare in modo proattivo la configurazione della sicurezza.