In questa pagina viene descritto come simulare una modifica a un criterio di autorizzazione utilizzando Policy Simulator per i criteri di autorizzazione di Identity and Access Management. Spiega inoltre come interpretare i risultati della simulazione e come applicare il criterio di autorizzazione simulato, se lo desideri.
Prima di iniziare
-
Abilita le API Policy Simulator and Resource Manager.
- (Facoltativo) Scopri come funziona Policy Simulator.
Autorizzazioni obbligatorie
Prima di simulare una modifica a un criterio di autorizzazione, devi assicurarti di disporre delle autorizzazioni appropriate. Per eseguire una simulazione sono necessarie alcune autorizzazioni; altre non lo sono, ma consentono di ottenere i risultati più completi della simulazione.
Per saperne di più sui ruoli IAM (Identity and Access Management), consulta Informazioni sui ruoli.
Autorizzazioni obbligatorie per le risorse di destinazione
La risorsa target della simulazione è la risorsa di cui stai simulando i criteri di autorizzazione.
Per ottenere le autorizzazioni necessarie per eseguire una simulazione, chiedi all'amministratore di concederti i seguenti ruoli IAM nella risorsa di destinazione:
-
Visualizzatore di asset cloud (
roles/cloudasset.viewer
) -
Amministratore simulazione (
roles/policysimulator.admin
) -
Revisore della sicurezza (
roles/iam.securityReviewer
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire una simulazione. Per visualizzare le autorizzazioni necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per eseguire una simulazione sono necessarie le seguenti autorizzazioni:
-
cloudasset.assets.searchAllResources
-
policysimulator.replays.run
-
service.resource.getIamPolicy
, doveresource
è il tipo di risorsa della risorsa di destinazione eservice
è il nome del servizio Google Cloud proprietario della risorsa.
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Autorizzazioni obbligatorie per le risorse host
La risorsa host di una simulazione è il progetto, la cartella o l'organizzazione che crea ed esegue la simulazione. La risorsa host non deve essere in nessun modo correlata con la risorsa di destinazione.
Il modo in cui imposti la risorsa host dipende dalla piattaforma che utilizzi.
Console
La risorsa host è il progetto, la cartella o l'organizzazione visualizzati nel selettore di risorse.
Per modificare la risorsa host, scegli un progetto, una cartella o un'organizzazione diversi nel selettore di risorse.
gcloud
La risorsa host è il progetto di quota attuale. Per impostare il progetto della quota, utilizza il comando gcloud auth application-default set-quota-project
.
REST
Devi specificare manualmente la risorsa host ogni volta che invii una richiesta. Per maggiori dettagli, consulta Simulare una modifica alle norme in questa pagina.
Per ottenere le autorizzazioni necessarie per eseguire una simulazione,
chiedi all'amministratore di concederti il ruolo IAM
Amministratore simulazione (roles/policysimulator.admin
) per la risorsa host.
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questo ruolo predefinito contiene le autorizzazioni necessarie per eseguire una simulazione. Per visualizzare le autorizzazioni necessarie, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per eseguire una simulazione sono necessarie le seguenti autorizzazioni:
-
policysimulator.replayResults.list
-
policysimulator.replays.create
-
policysimulator.replays.get
Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.
Autorizzazioni consigliate
Per ottenere i risultati più completi di una simulazione, ti consigliamo di disporre di determinate autorizzazioni IAM e Google Workspace. Se non disponi di alcune o tutte queste autorizzazioni, puoi comunque eseguire una simulazione. Tuttavia, l'esecuzione di una simulazione senza queste autorizzazioni potrebbe comportare un aumento del numero di modifiche agli accessi sconosciuti, perché potresti non essere in grado di recuperare le informazioni che potrebbero influire sui risultati della simulazione.
Autorizzazioni IAM consigliate
Quando esegui una simulazione, ti consigliamo di disporre del ruolo Revisore della sicurezza
(roles/iam.securityReviewer
) per la tua organizzazione.
In alternativa, se hai già il ruolo Amministratore sicurezza (roles/iam.securityAdmin
), non devi disporre di ruoli aggiuntivi.
Questi ruoli ti danno le seguenti autorizzazioni, utili per ottenere i risultati più completi della simulazione:
iam.roles.get
eiam.roles.list
su eventuali progetti, cartelle o organizzazioni pertinenti in cui sono definiti ruoli personalizzati. Un progetto, una cartella o un'organizzazione è rilevante se è un predecessore o un discendente della risorsa di cui stai simulando il criterio di autorizzazione.service.resource.getIamPolicy
, doveresource
è il nome di un tipo di risorsa che può avere un criterio di autorizzazione eservice
è il nome del servizio Google Cloud proprietario della risorsa.Quando esegui una simulazione, ti consigliamo di disporre di questa autorizzazione su ogni risorsa che soddisfa i seguenti criteri:
- Policy Simulator supporta la risorsa.
La risorsa ha un criterio di autorizzazione che potrebbe influire sull'accesso dell'utente. Ciò si verifica nel caso in cui si verifichi una delle seguenti condizioni:
- La risorsa è un discendente della risorsa di cui stai simulando il criterio di autorizzazione e viene visualizzata nei log degli accessi pertinenti.
- La risorsa è un predecessore della risorsa di cui stai simulando il criterio di autorizzazione.
Ad esempio, immagina di voler simulare un criterio di autorizzazione per un progetto. Se i log degli accessi includono un tentativo di accesso a un bucket Cloud Storage nel progetto, devi disporre dell'autorizzazione
storage.buckets.getIamPolicy
per il bucket. Se il progetto ha una cartella padre con un criterio di autorizzazione, devi disporre anche dell'autorizzazioneresourcemanager.folders.getIamPolicy
su quella cartella.
Autorizzazioni consigliate per Google Workspace
Ti consigliamo di disporre dell'autorizzazione per recuperare le informazioni sulle iscrizioni ai gruppi per ogni gruppo Google nel criterio di autorizzazione originale e nel criterio di autorizzazione proposto.
I super amministratori di Google Workspace e gli amministratori dei gruppi in genere hanno accesso per visualizzare le iscrizioni ai gruppi. Se non sei un super amministratore o un amministratore di gruppi, chiedi al tuo
amministratore di Google Workspace di
creare un ruolo amministratore di Google Workspace personalizzato
che contenga il privilegio groups.read
(che si trova in Privilegi
delle API amministrative) e di concedertelo. In questo modo puoi visualizzare l'appartenenza a tutti i gruppi del dominio e simulare in modo più efficace le modifiche a un criterio di autorizzazione.
Simula una modifica ai criteri
Simula una modifica a un criterio di autorizzazione seguendo questa procedura.
Console
L'esempio seguente mostra come simulare una modifica a un criterio di autorizzazione per un progetto. Tuttavia, puoi simulare una modifica a un criterio di autorizzazione per qualsiasi risorsa che abbia un criterio di autorizzazione.
Modifica le autorizzazioni di un'entità e poi, anziché fare clic su Salva, fai clic su Verifica modifiche:
Nella console Google Cloud, vai alla pagina IAM.
Crea una modifica proposta al criterio di autorizzazione modificando le autorizzazioni di un'entità esistente:
- Individua l'entità di cui vuoi modificare l'accesso e fai clic sul pulsante Modifica a destra.
- Modifica l'accesso dell'entità aggiungendo un nuovo ruolo oppure revocando o modificando un ruolo esistente.
Per simulare la modifica proposta, fai clic su Testa modifiche.
Dopo alcuni minuti, nella console Google Cloud i risultati della simulazione verranno visualizzati come un elenco di modifiche all'accesso. Per saperne di più, consulta Informazioni sui risultati Policy Simulator criteri in questa pagina.
Se non sono state apportate modifiche all'accesso tra il criterio di autorizzazione esistente e il criterio di autorizzazione simulato, la console Google Cloud non mostrerà alcuna modifica all'accesso.
gcloud
Per simulare una modifica a un criterio di autorizzazione, segui il pattern lettura, modifica e scrittura, ma simula il criterio di autorizzazione anziché scriverlo.
Leggi l'attuale criterio di autorizzazione eseguendo questo comando:
gcloud resource-type get-iam-policy resource-id --format=format > filepath
Sostituisci i seguenti valori:
resource-type
: il tipo di risorsa per cui vuoi simulare un criterio di autorizzazione. Ad esempio,projects
.resource-id
: l'ID della risorsa di cui vuoi simulare il criterio di autorizzazione. Ad esempio,my-project
.format
: il formato della risposta. Utilizza il valorejson
oyaml
.filepath
: il percorso di un nuovo file di output per il criterio di autorizzazione.
Ad esempio, il seguente comando ottiene il criterio di autorizzazione per il progetto
my-project
in formato JSON e lo salva nella home directory dell'utente:gcloud projects get-iam-policy my-project --format=json > ~/policy.json
Modifica il criterio di autorizzazione JSON o YAML restituito dal comando
get-iam-policy
per riflettere le modifiche che vuoi simulare.Esistono diversi tipi di modifiche che puoi apportare al criterio di autorizzazione. Ad esempio, puoi aggiungere o rimuovere un'entità da un'associazione dei ruoli o rimuovere un'associazione di ruolo dal criterio di autorizzazione.
Esegui questo comando per simulare la modifica al criterio di autorizzazione:
gcloud iam simulator replay-recent-access \ full-resource-name \ filepath \ --format=format
Sostituisci i seguenti valori:
full-resource-name
: il nome completo della risorsa di cui vuoi simulare il criterio di autorizzazione.Il nome completo della risorsa è un URI composto dal nome del servizio e dal percorso della risorsa. Ad esempio, se stai simulando un criterio di autorizzazione per un progetto, devi utilizzare
//cloudresourcemanager.googleapis.com/projects/project- id
, doveproject-id
è l'ID del progetto di cui stai simulando il criterio di autorizzazione.Per un elenco dei formati completi dei nomi delle risorse, vedi Nomi completi delle risorse.
filepath
: il percorso del file contenente il criterio di autorizzazione modificato che vuoi simulare. Ad esempio,~/proposed_policy.json
.format
: il formato della risposta. Ad esempio,json
oyaml
.
Dopo alcuni minuti, il comando stampa un elenco dei risultati di riproduzione in cui viene spiegato come cambierà l'accesso dell'entità se venisse applicato il criterio di autorizzazione proposto. Questi risultati elencano anche eventuali errori che si sono verificati durante la simulazione, inclusi eventuali errori dovuti a tipi di risorse non supportati.
Consulta la sezione Comprendere i risultati del Simulatore di criteri in questa pagina per scoprire come leggere i risultati. Per informazioni su come salvare i risultati della simulazione anziché stamparli, consulta Salvataggio dei risultati della simulazione.
Di seguito è riportato un esempio di risposta per una simulazione dei criteri di autorizzazione che coinvolgono l'utente
my-user@example.com
. In questo caso, se venisse applicata la modifica proposta,my-user@example.com
potenzialmente non avrebbe più le autorizzazioniresourcemanager.projects.list
eresourcemanager.projects.get
per il progettomy-project
e certamente non avrà più l'autorizzazioneresourcemanager.projects.update
per il progettomy-project
:[ { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.list", "principal": "my-user@example.com" }, "diff": { "accessDiff": { "accessChange": "ACCESS_MAYBE_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "UNKNOWN_INFO_DENIED", "errors": [ { "code": 7, "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.", "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "resourceType": "cloudresourcemanager.googleapis.com/projects" } ], "message": "Missing permission to get relevant IAM policies." } ], "policies": [ { "access": "UNKNOWN_INFO_DENIED", "policy": {} } ] } } }, "lastSeenDate": { "day": 12, "month": 1, "year": 2021 } }, { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.get", "principal": "my-user@example.com" }, "diff": { "accessDiff": { "accessChange": "ACCESS_MAYBE_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "UNKNOWN_INFO_DENIED", "errors": [ { "code": 7, "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to view group membership.", "resourceName": "group:everyone@example.com", "resourceType": "Google group" } ], "message": "Missing permission to view group membership." }, { "code": 7, "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.", "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "resourceType": "cloudresourcemanager.googleapis.com/projects" } ], "message": "Missing permission to get relevant IAM policies." } ], "policies": [ { "access": "UNKNOWN_INFO_DENIED", "bindingExplanations": [ { "access": "UNKNOWN_INFO_DENIED", "memberships": { "group:everyone@example.com": { "membership": "MEMBERSHIP_UNKNOWN_INFO_DENIED" } }, "role": "roles/owner" } ], "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "policy": { "bindings": [ { "members": [ "group:everyone@example.com" ], "role": "roles/owner" } ], "etag": "BwWgJSIInYA=", "version": 3 } }, { "access": "UNKNOWN_INFO_DENIED", "policy": {} } ] } } }, "lastSeenDate": { "day": 10, "month": 1, "year": 2021 } }, { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.update", "principal": "my-user@example.com" }, "diff": { "accessDiff": { "accessChange": "ACCESS_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "NOT_GRANTED" } } }, "lastSeenDate": { "day": 15, "month": 1, "year": 2021 } }, { "accessTuple": {}, "error": { "code": 12, "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.create" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.setIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.delete" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.update" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "pubsub.topics.publish" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.list" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.getIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.get" }, "reason": "UNSUPPORTED_RESOURCE" } ], "message": "Simulator does not yet support all resource types for 8 removed permissions." } } ]
Se non sono state apportate modifiche all'accesso tra il criterio di autorizzazione esistente e il criterio di autorizzazione simulato, il comando visualizza
No access changes found in the replay
.
REST
Per simulare una modifica a un criterio di autorizzazione, segui il pattern lettura, modifica e scrittura, ma invece di scrivere il criterio di autorizzazione, crea ed esegui una simulazione.
Leggi il criterio di autorizzazione per la risorsa.
Per ottenere il criterio di autorizzazione di un progetto, utilizza il metodo
projects.getIamPolicy
dell'API Resource Manager.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.POLICY_VERSION
: la versione del criterio da restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione 3. Per maggiori dettagli, consulta Specifica di una versione del criterio quando si ottiene un criterio.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Corpo JSON richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "user:fatima@example.com" ] } ] }
Modifica il criterio di autorizzazione restituito per riflettere le modifiche che vuoi simulare.
Esistono diversi tipi di modifiche che puoi apportare al criterio di autorizzazione. Ad esempio, puoi aggiungere o rimuovere un'entità da un'associazione dei ruoli o rimuovere un'associazione di ruolo dal criterio di autorizzazione.
Crea una simulazione, o replay, con il criterio di autorizzazione modificato.
Per creare una riproduzione per un progetto, una cartella o un'organizzazione, utilizza il metodo
replays.create
dell'API Policy Simulator.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
HOST_RESOURCE_TYPE
: il tipo di risorsa che ospiterà la replica. Questo valore deve essereprojects
,folders
oorganizations
. HOST_RESOURCE_ID
: l'ID della risorsa host, ad esempiomy-project
.-
TARGET_FULL_RESOURCE_NAME
: il nome completo della risorsa di cui vuoi simulare il criterio. Può essere qualsiasi risorsa che accetta criteri IAM e non deve essere in alcun modo correlata alla risorsa host.Il nome completo della risorsa è un URI composto dal nome del servizio e dal percorso della risorsa. Ad esempio, se stai simulando un criterio per un progetto, utilizzerai
//cloudresourcemanager.googleapis.com/projects/PROJECT_ID
, dovePROJECT_ID
è l'ID del progetto di cui stai simulando il criterio.Per un elenco completo dei formati dei nomi delle risorse, consulta Nomi completi delle risorse.
-
POLICY
: il criterio che vuoi simulare. Per un esempio di criterio, consulta la documentazione di riferimento per i criteri.Per simulare più criteri, includi più coppie
"OBJECT_FULL_RESOURCE_NAME" : POLICY
nel corpo della richiesta. PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.
Metodo HTTP e URL:
POST https://policysimulator.googleapis.com/v1/HOST_RESOURCE_TYPE/HOST_RESOURCE_ID/locations/global/replays
Corpo JSON richiesta:
{ "config": { "policyOverlay": { "TARGET_FULL_RESOURCE_NAME" : POLICY } } }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il nome di un'operazione che rappresenta la tua replica:
{ "name": "operations/6de23e63-f61a-4b8c-b502-34d717d2d7f8", "metadata": { "type_url": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata" } }
-
Esegui un sondaggio sul metodo
operations.get
fino al completamento della riproduzione.Per eseguire il polling di un'operazione, ti consigliamo di richiamare ripetutamente il metodo
operations.get
finché la risposta non include il campo"done": true
e un camponame
con il nome della riproduzione completata. Utilizza il backoff esponenziale troncato per introdurre un ritardo tra ogni richiesta.Per ottenere lo stato di una replica, utilizza il metodo
operations.get
dell'API Policy Simulator.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
OPERATION_NAME
: il nome di un'operazione di riproduzione, incluso il prefissooperations
. Copia questo valore dal camponame
di una rispostareplays.create
. Ad esempio:operations/6de23e63-f61a-4b8c-b502-34d717d2d7f8
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.
Metodo HTTP e URL:
GET https://policysimulator.googleapis.com/v1/OPERATION_NAME
Per inviare la richiesta, espandi una di queste opzioni:
Le operazioni in corso restituiscono una risposta simile alla seguente:
{ "name": "operations/42083b6b-3788-41b9-ae39-e97d7615a22d", "metadata": { "@type": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata", "startTime": "2021-01-15T05:34:14.732Z" } }
Le operazioni completate restituiscono una risposta simile alla seguente:
{ "name": "operations/89ab4892-9605-4c84-aedb-4fce4fc5195b", "metadata": { "@type": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata", "startTime": "2021-01-15T05:40:15.922Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.policysimulator.v1.Replay", "replay": { "name": "projects/my-project/locations/global/replays/89ab4892-9605-4c84-aedb-4fce4fc5195b", "state": SUCCEEDED, "config": {}, "resultsSummary": { "logCount": 1319, "unchangedCount": 1169, "differenceCount": 149, "errorCount": 1, "oldestDate": { "year": 2020, "month": 10, "day": 15 }, "newestDate": { "year": 2021, "month": 1, "day": 12 } } } } }
Scopri i risultati di Replay.
Per ottenere i risultati di una replica, utilizza il metodo
replays.results.list
dell'API Policy Simulator.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
REPLAY_NAME
: il nome della replica per cui vuoi recuperare i risultati. Copia questo valore dal camporesponse.replay.name
di una rispostaoperations.get
. Includi qualsiasi tipo di risorsa e prefisso della località. Ad esempio,"projects/my-project/locations/global/replays/89ab4892-9605-4c84-aedb-4fce4fc5195b"
-
PAGE_SIZE
: facoltativo. Il numero massimo di risultati da restituire da questa richiesta. Se non specificato, il server determinerà il numero di risultati da restituire. Se il numero di risultati è maggiore delle dimensioni della pagina, la risposta contiene un token di impaginazione che puoi utilizzare per recuperare la pagina dei risultati successiva. PAGE_TOKEN
: facoltativo. Il token di impaginazione restituito in una risposta precedente da questo metodo. Se specificato, l'elenco dei risultati inizierà dove è terminata la richiesta precedente.PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.
Metodo HTTP e URL:
GET https://policysimulator.googleapis.com/v1/REPLAY_NAME/results?pageSize=page-size&pageToken=PAGE_TOKEN
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene un elenco di risultati che spiegano come cambierà l'accesso dell'entità se venisse applicato il criterio proposto. Questi risultati elencano anche eventuali errori che si sono verificati durante la simulazione, in particolare eventuali errori dovuti a tipi di risorse non supportati.
Consulta la sezione Comprendere i risultati del Simulatore di criteri in questa pagina per scoprire come leggere i risultati.
Di seguito è riportato un esempio di risposta per una simulazione di criteri che coinvolge l'utente
my-user@example.com
. In questo caso, se venisse applicata la modifica proposta,my-user@example.com
potrebbe non disporre delle autorizzazioniresourcemanager.projects.list
eresourcemanager.projects.get
per il progettomy-project
e certamente non disporrebbe più dell'autorizzazioneresourcemanager.projects.update
per il progettomy-project
:{ "replayResults": [ { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.list", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 27, "month": 3, "year": 2020 }, "diff": { "accessDiff": { "accessChange": "ACCESS_MAYBE_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "UNKNOWN_INFO_DENIED", "errors": [ { "code": 7, "message": "Missing permission to get relevant IAM policies.", "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.", "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "resourceType": "cloudresourcemanager.googleapis.com/projects" } ] } ], "policies": [ { "access": "UNKNOWN_INFO_DENIED", "policy": {} } ] } } } }, { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.get", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 27, "month": 3, "year": 2020 }, "diff": { "accessDiff": { "accessChange": "ACCESS_MAYBE_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "UNKNOWN_INFO_DENIED", "errors": [ { "code": 7, "message": "Missing permission to view group membership.", "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to view group membership.", "resourceName": "group:everyone@example.com", "resourceType": "Google group" } ] }, { "code": 7, "message": "Missing permission to get relevant IAM policies.", "details": [ { "@type": "type.googleapis.com/google.rpc.ResourceInfo", "description": "Missing permission to retrieve IAM policies above the resource in hierarchy.", "resourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "resourceType": "cloudresourcemanager.googleapis.com/projects" } ] } ], "policies": [ { "access": "UNKNOWN_INFO_DENIED", "bindingExplanations": [ { "access": "UNKNOWN_INFO_DENIED", "memberships": { "group:everyone@example.com": { "membership": "MEMBERSHIP_UNKNOWN_INFO_DENIED" } }, "role": "roles/owner" } ], "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "policy": { "bindings": [ { "members": [ "group:everyone@example.com" ], "role": "roles/owner" } ], "etag": "BwWgJSIInYA=", "version": 3 } }, { "access": "UNKNOWN_INFO_DENIED", "policy": {} } ] } } } }, { "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.update", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 27, "month": 3, "year": 2020 }, "diff": { "accessDiff": { "accessChange": "ACCESS_REVOKED", "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "NOT_GRANTED" } } } }, { "accessTuple": {}, "error": { "code": 12, "message": "Simulator does not yet support all resource types for 8 removed permissions.", "details": [ { "@type": "type.googleapis.com/google.rpc.Status", "code": 12, "message": "Simulator does not yet support all resource types for 8 removed permissions.", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.create" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.setIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.delete" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.update" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "pubsub.topics.publish" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.list" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.getIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.get" }, "reason": "UNSUPPORTED_RESOURCE" } ] } ] } } ], "nextPageToken": "AWukk3zjv80La+chWx6WNt7X8czGPLtP792gRpkNVEV/URZ/VdWzxmuJKr" }
Se non sono state apportate modifiche all'accesso tra il criterio di autorizzazione esistente e il criterio di autorizzazione simulato, la richiesta restituisce un elenco vuoto (
{}
).-
Comprendere i risultati del Simulatore di criteri
Policy Simulator indica l'impatto di una modifica proposta a un criterio di autorizzazione sotto forma di elenco delle modifiche di accesso. Ogni modifica dell'accesso rappresenta un tentativo di accesso degli ultimi 90 giorni che avrebbe un esito diverso in base al criterio di autorizzazione proposto rispetto al criterio di autorizzazione attuale.
Policy Simulator elenca anche eventuali errori che si sono verificati durante la simulazione, il che consente di identificare potenziali lacune nella simulazione.
La presentazione di queste modifiche e di questi errori dipende dalla piattaforma che utilizzi.
Console
La pagina dei risultati del simulatore di criteri mostra i risultati della simulazione in diverse sezioni:
Modifiche ai criteri: questa sezione elenca la risorsa per cui stai proponendo modifiche al criterio di autorizzazione, i ruoli che proponi di rimuovere e i ruoli che proponi di aggiungere.
Questa sezione contiene anche un pulsante Visualizza le differenze dei criteri. Se fai clic su questo pulsante, puoi visualizzare l'aspetto del criterio di autorizzazione della risorsa prima e dopo le modifiche proposte.
Modifiche alle autorizzazioni: questa sezione contiene il numero di autorizzazioni rimosse e aggiunte, che descrivono come cambierebbero le autorizzazioni dell'entità se applichi le modifiche proposte. Questi conteggi di autorizzazioni vengono calcolati confrontando le autorizzazioni nei ruoli attuali dell'entità con quelle nei ruoli proposti dall'entità, ignorando i ruoli ereditati.
Questa sezione contiene anche un pulsante Visualizza differenze di autorizzazioni. Se fai clic su questo pulsante, puoi visualizzare un confronto affiancato delle autorizzazioni nei ruoli attuali e proposti dell'entità.
Modifiche all'accesso negli ultimi 90 giorni: questa sezione mostra quali tentativi di accesso negli ultimi 90 giorni hanno risultati diversi in base al criterio di autorizzazione proposto e al criterio di autorizzazione attuale. Questa sezione include un riepilogo delle modifiche all'accesso e una tabella con risultati più dettagliati.
Il riepilogo delle modifiche all'accesso elenca il numero di ogni tipo di modifica dell'accesso, il numero di errori e risultati sconosciuti e il numero di tentativi di accesso che hanno lo stesso risultato nel criterio di autorizzazione proposto e nel criterio di autorizzazione attuale. Il riepilogo mostra anche quante autorizzazioni non è stato possibile simulare. Per ulteriori informazioni, vedi Errori in questa pagina.
Questa sezione contiene anche una tabella delle modifiche all'accesso. Questa tabella elenca ogni tentativo di accesso degli ultimi 90 giorni con un risultato diverso in base al criterio di autorizzazione proposto e al criterio di autorizzazione attuale. Ogni voce include la risorsa a cui l'entità stava tentando di accedere, la data della richiesta, l'entità che effettua la richiesta, l'autorizzazione nella richiesta e lo stato di accesso secondo il criterio di autorizzazione proposto rispetto allo stato di accesso secondo il criterio di autorizzazione attuale.
Esistono diversi tipi di modifiche dell'accesso:
Modifica accesso Dettagli Accesso revocato L'entità aveva accesso in base al criterio di autorizzazione attuale, ma non lo avrà più dopo la modifica proposta. Accesso potenzialmente revocato Questo risultato può essere dovuto ai seguenti motivi:
- L'entità aveva accesso in base all'attuale criterio di autorizzazione, ma il suo accesso in base al criterio di autorizzazione proposto è sconosciuto.
- L'accesso dell'entità secondo il criterio di autorizzazione attuale è sconosciuto, ma non avrà accesso dopo la modifica proposta.
Accesso ottenuto L'entità non aveva accesso in base al criterio di autorizzazione attuale, ma avrà accesso dopo la modifica proposta. Accesso potenzialmente ottenuto Questo risultato può essere dovuto ai seguenti motivi:
- L'entità non aveva accesso in base al criterio di autorizzazione attuale, ma il suo accesso dopo la modifica proposta è sconosciuto.
- L'accesso dell'entità secondo il criterio di autorizzazione attuale è sconosciuto, ma l'entità avrà accesso dopo la modifica proposta.
Accesso sconosciuto L'accesso dell'entità sia in base al criterio di autorizzazione attuale sia al criterio di autorizzazione proposto è sconosciuto e le modifiche proposte potrebbero influire sull'accesso dell'entità. Errore Si è verificato un errore durante la simulazione. Per visualizzare ulteriori dettagli su una modifica dell'accesso, fai clic sulla modifica dell'accesso. Viene visualizzato il riquadro Dettagli modifica accesso, che mostra ulteriori informazioni sulla modifica dell'accesso, tra cui l'accesso esistente dell'entità, l'accesso proposto dall'entità e ulteriori dettagli sul risultato della modifica dell'accesso.
gcloud
Quando utilizzi il comando replay-recent-access
, la risposta dell'interfaccia a riga di comando gcloud contiene un elenco di replayResults
.
Ogni risultato di ripetizione descrive un tentativo di accesso il cui risultato sarebbe stato diverso se il criterio di autorizzazione proposto fosse stato applicato al momento del tentativo. Ad esempio, il seguente risultato di riproduzione mostra che
my-user@example.com
ha utilizzato l'autorizzazione resourcemanager.projects.update
in
passato per eseguire un'azione nel progetto my-project
. Tuttavia, se fosse stato applicato il criterio di autorizzazione proposto, l'accesso sarebbe stato negato.
{ "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.update", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 15, "month": 1, "year": 2021 }, "diff": { "accessDiff": { "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "NOT_GRANTED" }, "accessChange": "ACCESS_REVOKED" } } }
Ogni risultato di ripetizione ha i seguenti campi:
accessTuple
: il tentativo di accesso a cui si riferisce il risultato. Questo campo include la risorsa, l'autorizzazione e l'entità coinvolte nel tentativo di accesso.lastSeenDate
: la data dell'ultimo tentativo di accesso.diff.accessDiff
oerror
: se la riproduzione di un tentativo di accesso ha esito positivo, il risultato contiene un campodiff.accessDiff
che segnala la differenza tra i risultati del tentativo di accesso ai sensi del criterio di autorizzazione attuale e quelli del criterio di autorizzazione proposto. Se il tentativo di ripetizione non va a buon fine, il risultato della riproduzione contiene un campoerror
con una descrizione dell'errore. Per scoprire di più sugli errori di simulazione, consulta la sezione Errori in questa pagina.
Ogni differenza di accesso ha i seguenti componenti:
baseline
: il risultato dell'accesso quando si utilizza il criterio di autorizzazione attuale. Il valore viene segnalato come uno dei seguenti valori:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, nella risposta verranno elencati anche eventuali errori associati alle informazioni sconosciute, nonché i criteri di autorizzazione associati all'errore. Per ulteriori informazioni sui valori diUNKNOWN
, consulta la sezione Risultati sconosciuti in questa pagina.simulated
: il risultato dell'accesso quando viene utilizzato il criterio di autorizzazione proposto. Viene riportato come uno dei seguenti valori:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, nella risposta verranno elencati anche eventuali errori associati alle informazioni sconosciute, nonché i criteri di autorizzazione associati all'errore. Per ulteriori informazioni sui valori diUNKNOWN
, consulta la sezione Risultati sconosciuti in questa pagina.accessChange
: la variazione tra lo stato di accesso di base e lo stato di accesso simulato. Fai riferimento alla seguente tabella per un elenco di potenziali valori:Modifica accesso Dettagli ACCESS_REVOKED
L'entità aveva accesso in base al criterio di autorizzazione attuale, ma non lo avrà più dopo la modifica proposta. ACCESS_MAYBE_REVOKED
Questo risultato può essere dovuto ai seguenti motivi:
- L'entità aveva accesso in base all'attuale criterio di autorizzazione, ma il suo accesso in base al criterio di autorizzazione proposto è sconosciuto.
- L'accesso dell'entità secondo il criterio di autorizzazione attuale è sconosciuto, ma non avrà accesso dopo la modifica proposta.
ACCESS_GAINED
L'entità non aveva accesso in base al criterio di autorizzazione attuale, ma avrà accesso dopo la modifica proposta. ACCESS_MAYBE_GAINED
Questo risultato può essere dovuto ai seguenti motivi:
- L'entità non aveva accesso in base al criterio di autorizzazione attuale, ma il suo accesso dopo la modifica proposta è sconosciuto.
- L'accesso dell'entità secondo il criterio di autorizzazione attuale è sconosciuto, ma l'entità avrà accesso dopo la modifica proposta.
UNKNOWN_CHANGE
L'accesso dell'entità sia in base al criterio di autorizzazione attuale sia al criterio di autorizzazione proposto è sconosciuto e le modifiche proposte potrebbero influire sull'accesso dell'entità.
REST
Quando chiami il metodo replays.results.list
, la risposta contiene un elenco di replayResults
.
Ogni risultato di ripetizione descrive un tentativo di accesso il cui risultato sarebbe stato diverso se il criterio di autorizzazione proposto fosse stato applicato al momento del tentativo. Ad esempio, il seguente risultato di riproduzione mostra che
my-user@example.com
ha utilizzato l'autorizzazione resourcemanager.projects.update
in
passato per eseguire un'azione nel progetto my-project
. Tuttavia, se fosse stato applicato il criterio di autorizzazione proposto, l'accesso sarebbe stato negato.
{ "accessTuple": { "fullResourceName": "//cloudresourcemanager.googleapis.com/projects/my-project", "permission": "resourcemanager.projects.update", "principal": "my-user@example.com" }, "lastSeenDate": { "day": 15, "month": 1, "year": 2021 }, "diff": { "accessDiff": { "baseline": { "accessState": "GRANTED" }, "simulated": { "accessState": "NOT_GRANTED" }, "accessChange": "ACCESS_REVOKED" } } }
Ogni risultato di ripetizione ha i seguenti campi:
accessTuple
: il tentativo di accesso a cui si riferisce il risultato. Questo campo include la risorsa, l'autorizzazione e l'entità coinvolte nel tentativo di accesso.lastSeenDate
: la data dell'ultimo tentativo di accesso.diff.accessDiff
oerror
: se la riproduzione di un tentativo di accesso ha esito positivo, il risultato contiene un campodiff.accessDiff
che segnala la differenza tra i risultati del tentativo di accesso ai sensi del criterio di autorizzazione attuale e quelli del criterio di autorizzazione proposto. Se il tentativo di ripetizione non va a buon fine, il risultato della riproduzione contiene un campoerror
con una descrizione dell'errore. Per scoprire di più sugli errori di simulazione, consulta la sezione Errori in questa pagina.
Ogni differenza di accesso ha i seguenti componenti:
baseline
: il risultato dell'accesso quando si utilizza il criterio di autorizzazione attuale. Il valore viene segnalato come uno dei seguenti valori:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, nella risposta verranno elencati anche eventuali errori associati alle informazioni sconosciute, nonché i criteri di autorizzazione associati all'errore. Per ulteriori informazioni sui valori diUNKNOWN
, consulta la sezione Risultati sconosciuti in questa pagina.simulated
: il risultato dell'accesso quando viene utilizzato il criterio di autorizzazione proposto. Viene riportato come uno dei seguenti valori:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, nella risposta verranno elencati anche eventuali errori associati alle informazioni sconosciute, nonché i criteri di autorizzazione associati all'errore. Per ulteriori informazioni sui valori diUNKNOWN
, consulta la sezione Risultati sconosciuti in questa pagina.accessChange
: la variazione tra lo stato di accesso di base e lo stato di accesso simulato. Fai riferimento alla seguente tabella per un elenco di potenziali valori:Modifica accesso Dettagli ACCESS_REVOKED
L'entità aveva accesso in base al criterio di autorizzazione attuale, ma non lo avrà più dopo la modifica proposta. ACCESS_MAYBE_REVOKED
Questo risultato può essere dovuto ai seguenti motivi:
- L'entità aveva accesso in base all'attuale criterio di autorizzazione, ma il suo accesso in base al criterio di autorizzazione proposto è sconosciuto.
- L'accesso dell'entità secondo il criterio di autorizzazione attuale è sconosciuto, ma non avrà accesso dopo la modifica proposta.
ACCESS_GAINED
L'entità non aveva accesso in base al criterio di autorizzazione attuale, ma avrà accesso dopo la modifica proposta. ACCESS_MAYBE_GAINED
Questo risultato può essere dovuto ai seguenti motivi:
- L'entità non aveva accesso in base al criterio di autorizzazione attuale, ma il suo accesso dopo la modifica proposta è sconosciuto.
- L'accesso dell'entità secondo il criterio di autorizzazione attuale è sconosciuto, ma l'entità avrà accesso dopo la modifica proposta.
UNKNOWN_CHANGE
L'accesso dell'entità sia in base al criterio di autorizzazione attuale sia al criterio di autorizzazione proposto è sconosciuto e le modifiche proposte potrebbero influire sull'accesso dell'entità.
Risultati sconosciuti
Se un risultato di accesso è sconosciuto, significa che Policy Simulator non aveva informazioni sufficienti per valutare completamente il tentativo di accesso.
Console
Se un risultato di accesso è sconosciuto, il riquadro dei dettagli delle modifiche all'accesso segnala il motivo per cui non è stato possibile accedere o a cui non è stato possibile valutare, oltre a ruoli specifici, criteri di autorizzazione, membri dei gruppi e condizioni.
Esistono diversi motivi per cui un risultato può essere sconosciuto:
- Informazioni sul ruolo negate: l'entità che esegue la simulazione non aveva l'autorizzazione per visualizzare i dettagli del ruolo per uno o più ruoli simulati.
- Impossibile accedere al criterio: l'entità che esegue la simulazione non aveva l'autorizzazione per ottenere il criterio di autorizzazione per una o più risorse coinvolte nella simulazione.
- Informazioni sull'iscrizione rifiutate: l'entità che esegue la simulazione non aveva l'autorizzazione per visualizzare i membri di uno o più gruppi inclusi nel criterio di autorizzazione proposto.
- Condizione non supportata: esiste un'associazione condizionale di ruoli nel criterio di autorizzazione in fase di test. Policy Simulator non supporta le condizioni, pertanto non è stato possibile valutare l'associazione.
gcloud
In gcloud CLI, i risultati della simulazione riporteranno il motivo per cui il risultato è sconosciuto nella differenza di accesso.
Il motivo per cui il risultato dell'accesso è sconosciuto sarà uno dei seguenti:
UNKNOWN_INFO_DENIED
: l'utente non è autorizzato ad accedere alle informazioni necessarie per valutare lo stato dell'accesso. Ciò può verificarsi per uno dei seguenti motivi:- L'utente non ha l'autorizzazione per recuperare il criterio di autorizzazione che viene simulato oppure non ha l'autorizzazione per recuperare i criteri di autorizzazione per le risorse nei log degli accessi.
- L'utente non dispone delle autorizzazioni per visualizzare l'iscrizione a un gruppo.
- L'utente non è in grado di recuperare le informazioni necessarie sul ruolo.
Per sapere quali informazioni mancavano, visualizza le informazioni sull'errore in base allo stato di accesso segnalato.
UNKNOWN_CONDITIONAL
: esiste un'associazione di ruolo condizionale nel criterio di autorizzazione in fase di test. Policy Simulator non supporta le condizioni, pertanto non è stato possibile valutare l'associazione.
Se il risultato è sconosciuto, il campo del criterio di autorizzazione (baseline
o simulated
) contiene un campo errors
che descrive il motivo per cui le informazioni erano sconosciute e un campo policies
contenente i criteri di autorizzazione associati agli errori. Per ulteriori informazioni sugli errori, consulta la sezione Errori in questa pagina.
REST
Nell'API REST, i risultati della simulazione riporteranno il motivo per cui il risultato è sconosciuto nella differenza di accesso.
Il motivo per cui il risultato dell'accesso è sconosciuto sarà uno dei seguenti:
UNKNOWN_INFO_DENIED
: l'utente non è autorizzato ad accedere alle informazioni necessarie per valutare lo stato dell'accesso. Ciò può verificarsi per uno dei seguenti motivi:- L'utente non ha l'autorizzazione per recuperare il criterio di autorizzazione che viene simulato oppure non ha l'autorizzazione per recuperare i criteri di autorizzazione per le risorse nei log degli accessi.
- L'utente non dispone delle autorizzazioni per visualizzare l'iscrizione a un gruppo.
- L'utente non è in grado di recuperare le informazioni necessarie sul ruolo.
Per sapere quali informazioni mancavano, visualizza le informazioni sull'errore in base allo stato di accesso segnalato.
UNKNOWN_CONDITIONAL
: esiste un'associazione di ruolo condizionale nel criterio di autorizzazione in fase di test. Policy Simulator non supporta le condizioni, pertanto non è stato possibile valutare l'associazione.
Se il risultato è sconosciuto, il campo del criterio di autorizzazione (baseline
o simulated
) contiene un campo errors
che descrive il motivo per cui le informazioni erano sconosciute e un campo policies
contenente i criteri di autorizzazione associati agli errori. Per ulteriori informazioni sugli errori, consulta la sezione Errori in questa pagina.
Errori
Policy Simulator segnala anche eventuali errori che si sono verificati durante la simulazione. È importante esaminare questi errori per capire le potenziali lacune nella simulazione.
Console
Esistono diversi tipi di errori che Policy Simulator potrebbe segnalare:
Errori dell'operazione: non è stato possibile eseguire la simulazione. Policy Simulator segnala gli errori delle operazioni nella parte superiore della pagina dei risultati.
Se il messaggio di errore indica che non è stato possibile eseguire la simulazione perché sono presenti troppi log nel progetto o nell'organizzazione, non puoi eseguire una simulazione sulla risorsa.
Se visualizzi questo errore per un altro motivo, prova a eseguire di nuovo la simulazione. Se non riesci ancora a eseguire la simulazione, contatta policy-simulator-feedback@google.com.
Errori di riproduzione: una ripetizione di un singolo tentativo di accesso non è andata a buon fine, pertanto Policy Simulator non ha potuto determinare se il risultato del tentativo di accesso cambierà in base al criterio di autorizzazione proposto.
La console Google Cloud elenca gli errori di riproduzione nella tabella Modifiche agli accessi negli ultimi 90 giorni. Il riquadro Dettagli modifica accesso per ogni errore include un messaggio di errore per aiutarti a comprendere il problema, nonché la risorsa e l'autorizzazione che sono state simulate quando si è verificato l'errore.
Errori relativi ai tipi di risorse non supportati: il criterio di autorizzazione proposto influisce sulle autorizzazioni associate a un tipo di risorsa non supportato, che Policy Simulator non può simulare.
Policy Simulator elenca queste autorizzazioni nei risultati della simulazione per farti sapere quali autorizzazioni non è stato in grado di simulare.
gcloud
Nei risultati della simulazione dell'interfaccia a riga di comando gcloud, gli errori possono comparire in due posizioni:
- Campo
replayResult.error
: se il tentativo di riproduzione non ha avuto esito positivo, Policy Simulator segnala l'errore nel camporeplayResult.error
. Se il risultato di una ripetizione contiene questo campo, non contiene un campodiff
. - Il campo
replayResult.diff.accessDiff.policy-type.errors
, dove policy-type èbaseline
osimulated
. Se il tentativo di riproduzione ha avuto esito positivo, ma il risultato è statoUNKNOWN_INFO_DENIED
oUNKNOWN_CONDITIONAL
, Policy Simulator segnala il motivo per cui il risultato non era noto in questo campo.
Policy Simulator genera i seguenti tipi di errori:
Errore | Codice di errore | Dettagli |
---|---|---|
GENERIC_INTERNAL_ERROR |
13 | La simulazione non è riuscita a causa di un errore interno. Per risolvere il problema, prova a eseguire di nuovo la simulazione. Se la simulazione continua a non riuscire, contatta policy-simulator-feedback@google.com. |
INVALID_ACCESS_TUPLE |
3 | Policy Simulator non ha potuto riprodurre il tentativo di accesso perché contiene un'autorizzazione, un nome risorsa o un'entità non validi. |
OUT_OF_RANGE_GROUP_TOO_LARGE |
11 | Policy Simulator non ha potuto valutare l'appartenenza dell'entità al gruppo perché il gruppo ha troppi sottogruppi. Questo errore è associato a UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP |
7 | Policy Simulator
non ha potuto valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per visualizzare le iscrizioni ai gruppi. Questo errore è associato a UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_IAM_POLICY |
7 | Policy Simulator
non ha potuto valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per recuperare un criterio di autorizzazione. Questo tipo di errore è associato a
UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_IAM_ROLE |
7 | Policy Simulator
non ha potuto valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per recuperare le autorizzazioni in un ruolo IAM. Questo tipo di errore è associato a
UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_PARENT_IAM_POLICY |
7 | Policy Simulator
non ha potuto valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per recuperare il criterio di autorizzazione di una risorsa predecessore. Questo tipo di errore è associato alle modifiche di accesso a UNKNOWN_INFO_DENIED . |
UNIMPLEMENTED_MEMBER_TYPE |
12 | La tupla di accesso contiene un tipo di entità che Policy Simulator non supporta. |
UNIMPLEMENTED_MEMBER |
12 | La tupla di accesso contiene un'entità che Policy Simulator non supporta. |
UNIMPLEMENTED_CONDITION |
12 | La tupla di accesso contiene una condizione non supportata da Policy Simulator. Questo tipo di errore è associato a
UNKNOWN_CONDITIONAL modifiche all'accesso. |
LOG_SIZE_TOO_LARGE |
8 | La risorsa è associata a troppi log degli accessi, pertanto Policy Simulator non ha potuto eseguire la simulazione. Per maggiori dettagli, consulta Dimensione massima della riproduzione dei log nella pagina relativa ai concetti di Policy Simulator. |
UNSUPPORTED_RESOURCE |
12 |
Il criterio di autorizzazione proposto modifica le autorizzazioni associate ai tipi di risorse non supportati. Questo errore viene visualizzato nel campo "error": { "code": 12, "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.create" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.setIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.get" }, "reason": "UNSUPPORTED_RESOURCE" } ], "message": "unsupported-permissions-error-message" } Per ulteriori informazioni sui tipi di risorse non supportati, consulta Livelli di supporto per i tipi di risorse nella pagina relativa ai concetti di Policy Simulator. |
REST
Nei risultati della simulazione dell'API REST, gli errori possono apparire in due posizioni:
- Campo
replayResult.error
: se il tentativo di riproduzione non ha avuto esito positivo, Policy Simulator segnala l'errore nel camporeplayResult.error
. Se il risultato di una ripetizione contiene questo campo, non contiene un campodiff
. - Il campo
replayResult.diff.accessDiff.policy-type.errors
, dove policy-type èbaseline
osimulated
. Se il tentativo di riproduzione ha avuto esito positivo, ma il risultato è statoUNKNOWN_INFO_DENIED
oUNKNOWN_CONDITIONAL
, Policy Simulator segnala il motivo per cui il risultato non era noto in questo campo.
Policy Simulator genera i seguenti tipi di errori:
Errore | Codice di errore | Dettagli |
---|---|---|
GENERIC_INTERNAL_ERROR |
13 | La simulazione non è riuscita a causa di un errore interno. Per risolvere il problema, prova a eseguire di nuovo la simulazione. Se la simulazione continua a non riuscire, contatta policy-simulator-feedback@google.com. |
INVALID_ACCESS_TUPLE |
3 | Policy Simulator non ha potuto riprodurre il tentativo di accesso perché contiene un'autorizzazione, un nome risorsa o un'entità non validi. |
OUT_OF_RANGE_GROUP_TOO_LARGE |
11 | Policy Simulator non ha potuto valutare l'appartenenza dell'entità al gruppo perché il gruppo ha troppi sottogruppi. Questo errore è associato a UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP |
7 | Policy Simulator
non ha potuto valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per visualizzare le iscrizioni ai gruppi. Questo errore è associato a UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_IAM_POLICY |
7 | Policy Simulator
non ha potuto valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per recuperare un criterio di autorizzazione. Questo tipo di errore è associato a
UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_IAM_ROLE |
7 | Policy Simulator
non ha potuto valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per recuperare le autorizzazioni in un ruolo IAM. Questo tipo di errore è associato a
UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_PARENT_IAM_POLICY |
7 | Policy Simulator
non ha potuto valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per recuperare il criterio di autorizzazione di una risorsa predecessore. Questo tipo di errore è associato alle modifiche di accesso a UNKNOWN_INFO_DENIED . |
UNIMPLEMENTED_MEMBER_TYPE |
12 | La tupla di accesso contiene un tipo di entità che Policy Simulator non supporta. |
UNIMPLEMENTED_MEMBER |
12 | La tupla di accesso contiene un'entità che Policy Simulator non supporta. |
UNIMPLEMENTED_CONDITION |
12 | La tupla di accesso contiene una condizione non supportata da Policy Simulator. Questo tipo di errore è associato a
UNKNOWN_CONDITIONAL modifiche all'accesso. |
LOG_SIZE_TOO_LARGE |
8 | La risorsa è associata a troppi log degli accessi, pertanto Policy Simulator non ha potuto eseguire la simulazione. Per maggiori dettagli, consulta Dimensione massima della riproduzione dei log nella pagina relativa ai concetti di Policy Simulator. |
UNSUPPORTED_RESOURCE |
12 |
Il criterio di autorizzazione proposto modifica le autorizzazioni associate ai tipi di risorse non supportati. Questo errore viene visualizzato nel campo "error": { "code": 12, "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.create" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.setIamPolicy" }, "reason": "UNSUPPORTED_RESOURCE" }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "policysimulator.googleapis.com", "metadata": { "permission": "storage.objects.get" }, "reason": "UNSUPPORTED_RESOURCE" } ], "message": "unsupported-permissions-error-message" } Per ulteriori informazioni sui tipi di risorse non supportati, consulta Livelli di supporto per i tipi di risorse nella pagina relativa ai concetti di Policy Simulator. |
Applicare una modifica ai criteri simulata
Per applicare una modifica simulata a un criterio di autorizzazione:
Console
Fai clic su Applica le modifiche proposte.
Nella finestra di dialogo di conferma, fai clic su Applica per confermare la modifica.
gcloud
Utilizza il comando set-iam-policy
e fornisci un percorso al file JSON che contiene il criterio di autorizzazione simulato che vuoi applicare:
gcloud resource-type set-iam-policy resource-id filepath
Specifica i seguenti valori:
resource-type
: il tipo di risorsa di cui vuoi aggiornare il criterio di autorizzazione. Ad esempio,projects
.resource-id
: l'ID della risorsa di cui vuoi aggiornare il criterio di autorizzazione. Ad esempio,my-project
.filepath
: il percorso di un file contenente il criterio di autorizzazione aggiornato.
La risposta contiene il criterio di autorizzazione aggiornato. Se tratti i criteri di autorizzazione IAM come codice e li archivi in un sistema di controllo della versione, devi archiviare il criterio di autorizzazione restituito da gcloud CLI, non il file JSON che contiene il criterio di autorizzazione simulato.
REST
Imposta il criterio di autorizzazione proposto come nuovo criterio di autorizzazione della risorsa.
Per impostare il criterio di autorizzazione nella richiesta come nuovo criterio di autorizzazione del progetto, utilizza il metodo projects.setIamPolicy
dell'API Resource Manager.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.POLICY
: una rappresentazione JSON del criterio che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la sezione Riferimento alle norme.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Corpo JSON richiesta:
{ "policy": { POLICY } }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Salva i risultati della simulazione
Se usi gcloud CLI, puoi salvare i risultati Policy Simulator come file JSON, YAML o CSV.
Salva come JSON o YAML
Per salvare i risultati di una simulazione come file JSON o YAML, aggiungi il seguente flag al comando replay-recent-access
durante l'esecuzione della simulazione:
--output=output-format > filename
Sostituisci i seguenti valori:
output-format
: la lingua del file esportato, ovverojson
oyaml
.filename
: il nome del file esportato.
Salva come CSV
Per salvare un file CSV, aggiungi il seguente flag al comando replay-recent-access
durante l'esecuzione della simulazione:
--flatten="diffs[]" --format=csv(output-fields) > filename
Sostituisci i seguenti valori:
output-fields
: un elenco separato da virgole dei campi da includere nei risultati esportati. Ad esempio,diffs.accessTuple.principal, diffs.accessTuple.permission
.filename
: il nome del file esportato.
Se vuoi, puoi aggiungere altri campi, come errors[]
al flag --flatten
. L'aggiunta di campi al flag --flatten
consente di elencare gli elementi in questi campi su righe separate del file CSV.
Di seguito è riportato un esempio di comando replay-recent-access
che salva i campi più importanti dei risultati della simulazione come file CSV simulation-results.csv
:
gcloud iam simulator replay-recent-access --flatten="diffs[]" \ --format="csv(diffs.accessTuple.principal, diffs.accessTuple.permission, \ diffs.accessTuple.fullResourceName, diffs.diff.accessDiff.accessChange, \ diffs.diff.accessDiff.baseline.accessState, \ diffs.diff.accessDiff.simulated.accessState)" \ //cloudresourcemanager.googleapis.com/projects/my-project \ proposed-policy.json > simulation-results.csv
Questo esempio simula proposed-policy.json
per il progetto my-project
e salva i risultati come simulation-results.csv
. Questo file CSV contiene i seguenti campi: entità, autorizzazione, risorsa, modifica dell'accesso, stato di accesso di riferimento e stato di accesso simulato.
Per ulteriori informazioni sulla formattazione con gcloud CLI, consulta i formati.
Passaggi successivi
- Scopri come risolvere i problemi di accesso per le entità esistenti.
- Scopri di più sull'applicazione del privilegio minimo con i suggerimenti sui ruoli.