Questa pagina descrive come simulare una modifica a un criterio di autorizzazione utilizzando Policy Simulator per i criteri di autorizzazione di Identity and Access Management. Viene inoltre spiegato come interpretare i risultati della simulazione e come applicare il modello se lo desideri.
Prima di iniziare
-
Abilita le API Policy Simulator and Resource Manager.
- (Facoltativo) Scopri come Policy Simulator funziona.
Autorizzazioni obbligatorie
Prima di simulare una modifica a un criterio di autorizzazione, devi assicurarti di avere le autorizzazioni appropriate. Sono necessarie determinate autorizzazioni per eseguire di simulazione; le altre non sono obbligatorie, ma aiutano a ottenere i risultati più completi dalla 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 di destinazione della simulazione è la risorsa i cui criteri di autorizzazione che stai simulando.
Per ottenere le autorizzazioni necessarie per eseguire una simulazione, chiedi all'amministratore di concederti seguenti ruoli IAM sulla risorsa di destinazione:
-
Cloud Asset Viewer (
roles/cloudasset.viewer
) -
Amministratore simulatore (
roles/policysimulator.admin
) -
Controllo sicurezza (
roles/iam.securityReviewer
)
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Questi ruoli predefiniti le autorizzazioni necessarie per eseguire una simulazione. Per vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
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 riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.
Autorizzazioni richieste per le risorse host
La risorsa host di una simulazione è il progetto, la cartella o l'organizzazione che crea ed esegue la simulazione. Non è necessario che la risorsa host sia correlata alla risorsa di destinazione in alcun modo.
Il modo in cui imposti la risorsa host dipende dalla piattaforma utilizzata.
Console
La risorsa host è il progetto, la cartella o l'organizzazione visualizzato nel selettore di risorse.
Per modificare la risorsa host, scegli un altro progetto, una cartella o dell'organizzazione nel selettore di risorse.
gcloud
La risorsa host è il progetto di quota attuale. Per impostare il progetto di quota,
utilizza la
Comando gcloud auth application-default set-quota-project
.
REST
Puoi specificare manualmente la risorsa host ogni volta che invii una richiesta. Per informazioni dettagliate, consulta la sezione Simula una modifica alle norme in questa pagina.
Per ottenere le autorizzazioni necessarie per eseguire una simulazione,
chiedi all'amministratore di concederti
Ruolo IAM Amministratore simulatore (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 vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per eseguire una simulazione sono necessarie le seguenti autorizzazioni:
-
policysimulator.replayResults.list
-
policysimulator.replays.create
-
policysimulator.replays.get
Potresti anche riuscire a ottenere queste autorizzazioni con ruoli personalizzati altri ruoli predefiniti.
Autorizzazioni consigliate
Per ottenere i risultati più completi da una simulazione, ti consigliamo di avere alcune autorizzazioni IAM e Google Workspace. In caso contrario se 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 di modifiche di accesso sconosciute, in quanto potresti non essere in grado di recuperarle informazioni che potrebbero influire sui risultati della simulazione.
Autorizzazioni IAM consigliate
Ti consigliamo di assegnarti il ruolo Revisore sicurezza
(roles/iam.securityReviewer
) per la tua organizzazione quando esegui una simulazione.
In alternativa, se hai già il ruolo Amministratore sicurezza
(roles/iam.securityAdmin
), non è necessario che ti vengano assegnati altri ruoli.
Questi ruoli ti concedono le seguenti autorizzazioni, che ti aiutano a ottenere risultati completi della simulazione:
iam.roles.get
eiam.roles.list
su progetti, cartelle o per le organizzazioni in cui sono definiti ruoli personalizzati. Un progetto, una cartella è pertinente 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ò un criterio di autorizzazione eservice
è il nome del dal servizio Google Cloud proprietario della risorsa.Quando esegui una simulazione, ti consigliamo di avere questa autorizzazione ogni risorsa che soddisfa questi criteri:
- Policy Simulator supporta la risorsa.
La risorsa ha un criterio di autorizzazione che potrebbe influire sull'accesso dell'utente. Ciò si verifica nei seguenti casi:
- La risorsa è un discendente della risorsa di cui hai il criterio di autorizzazione in fase di simulazione e appare nella log degli accessi pertinenti.
- La risorsa è un predecessore della risorsa il cui criterio di autorizzazione è durante la simulazione.
Ad esempio, immagina di voler simulare un criterio di autorizzazione per un progetto. Se i log di accesso includono un tentativo di accesso per un di bucket Cloud Storage nel progetto, è necessaria
storage.buckets.getIamPolicy
autorizzazione sul bucket. Se il progetto ha una cartella principale con un criterio di autorizzazione, devi avere ancheresourcemanager.folders.getIamPolicy
per la cartella.
Autorizzazioni Google Workspace consigliate
Ti consigliamo di avere l'autorizzazione per recuperare le informazioni sull'appartenenza al gruppo per ogni gruppo Google nel criterio di autorizzazione originale e nella proposta di autorizzazione .
I super amministratori e gli amministratori dei gruppi di Google Workspace in genere hanno accesso
visualizzare l'appartenenza al gruppo. Se non sei un super amministratore o un amministratore dei gruppi, chiedi al tuo
amministratore di Google Workspace per
creare un ruolo amministrativo personalizzato di Google Workspace
che contiene il privilegio groups.read
(situato in API Admin)
privilegiato) e concedertelo. In questo modo puoi vedere l'appartenenza
di tutti i gruppi all'interno del tuo dominio e simulare in modo più efficace le modifiche a un
di autorizzazione.
Simula una modifica dei criteri
Per simulare una modifica a un criterio di autorizzazione, segui questi passaggi.
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 con un criterio di autorizzazione.
Modifica le autorizzazioni di un'entità: invece di 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 un criterio esistente autorizzazioni dell'entità:
- Individua l'entità di cui vuoi modificare l'accesso e fai clic sul Modifica pulsante a destra.
- Modifica l'accesso dell'entità aggiungendo un nuovo ruolo oppure revocando o la modifica di un ruolo esistente.
Per simulare la modifica proposta, fai clic su Testa modifiche.
Dopo alcuni minuti, la console Google Cloud mostrerà i risultati della simulazione sotto forma di elenco di modifiche di accesso. Consulta la sezione Informazioni Policy Simulator di criteri in questa pagina per saperne di più informazioni.
Se non sono state apportate modifiche all'accesso tra il criterio di autorizzazione esistente e il di un criterio di autorizzazione simulato, nella console Google Cloud non verrà visualizzato modifiche all'accesso.
gcloud
Per simulare una modifica a un criterio di autorizzazione, segui le read-modify-write, che però simulano il criterio di autorizzazione anziché scriverlo.
Leggi il criterio di autorizzazione attuale eseguendo questo comando:
gcloud resource-type get-iam-policy resource-id --format=format > filepath
Sostituisci i seguenti valori:
resource-type
: il tipo di risorsa che vuoi per simulare un criterio di autorizzazione. Ad esempio,projects
.resource-id
: l'ID della risorsa la cui autorizzazione che vuoi simulare. Ad esempio,my-project
.format
: il formato della risposta. Utilizza il valorejson
oyaml
.filepath
: il percorso di un nuovo file di output per di autorizzazione.
Ad esempio, il seguente comando recupera 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.Puoi apportare diversi tipi di modifiche al criterio di autorizzazione. Per Ad esempio, puoi aggiungere o rimuovere un'entità da un'associazione di ruolo 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 risorsa di cui vuoi simulare il criterio di autorizzazione.Il nome completo della risorsa è un URI composto dal nome del servizio e del percorso della risorsa. Ad esempio, se stai simulando un criterio di autorizzazione per un progetto, useresti
//cloudresourcemanager.googleapis.com/projects/project- id
, doveproject-id
è l'ID di il progetto di cui stai simulando il criterio di autorizzazione.Per un elenco dei formati dei nomi completi delle risorse, consulta Risorsa completa personalizzati.
filepath
: il percorso del file contenente del 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 della ripetizione. che spiega come cambierà l'accesso dell'entità se l'autorizzazione proposta norma è stata applicata. Questi risultati elencano anche gli eventuali errori che si sono verificati durante la simulazione, inclusi eventuali errori dovuti tipi di risorse non supportati.
Consulta Informazioni sui risultati del Simulatore di criteri in questa pagina per scoprire come leggere i risultati. Per scoprire come salvare anziché stamparli, vedi i risultati della simulazione. Salvataggio dei risultati della simulazione.
Di seguito è riportato un esempio di risposta per una simulazione di criteri di autorizzazione che prevede l'utente
my-user@example.com
. In questo caso, se la modifica proposta applicata,my-user@example.com
potenzialmente non avrebbe più iresourcemanager.projects.list
eresourcemanager.projects.get
autorizzazioni per il progettomy-project
e di certo non dispone 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 stampa
No access changes found in the replay
.
REST
Per simulare una modifica a un criterio di autorizzazione, segui le read-modify-write, ma invece di scrivere il modello di autorizzazione per creare ed eseguire una simulazione.
Leggi il criterio di autorizzazione per la risorsa.
Per ottenere il criterio di autorizzazione di un progetto, usa l'API Resource Manager
projects.getIamPolicy
.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.POLICY_VERSION
: la versione del criterio da utilizzare restituito. Le richieste devono specificare la versione del criterio più recente, ovvero la versione del criterio 3. Consulta la sezione Specificare una versione del criterio quando si riceve un criterio per maggiori dettagli.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una delle seguenti 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 in modo che rifletta le modifiche che vuoi applicare simulare.
Puoi apportare diversi tipi di modifiche al criterio di autorizzazione. Per Ad esempio, puoi aggiungere o rimuovere un'entità da un'associazione di ruolo un'associazione di ruolo dal criterio di autorizzazione.
Crea una simulazione, o riproduci di nuovo, con il criterio di autorizzazione modificato.
Per creare una replica per un progetto, una cartella o un'organizzazione, utilizza la classe
replays.create
.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
HOST_RESOURCE_TYPE
: il tipo di risorsa che ospita 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 per il quale vuoi simulare il criterio. Questa risorsa può essere qualsiasi risorsa che accetta IAM criteri e non devono essere in alcun modo correlati alla risorsa host.Il nome completo della risorsa è un URI composto dal nome del servizio e del percorso della risorsa. Ad esempio, se stai simulando un criterio per una progetto, utilizzeresti
//cloudresourcemanager.googleapis.com/projects/PROJECT_ID
, dovePROJECT_ID
è l'ID del progetto di cui sei il criterio durante la simulazione.Per un elenco completo dei formati dei nomi delle risorse, consulta Nomi completi delle risorse.
-
POLICY
: il criterio che vuoi simulare. Ad esempio, consulta la riferimento alle norme.Per simulare più criteri, includi più criteri
"OBJECT_FULL_RESOURCE_NAME" : POLICY
coppia nella richiesta del testo. PROJECT_ID
: il tuo progetto Google Cloud ID. 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 della richiesta:
{ "config": { "policyOverlay": { "TARGET_FULL_RESOURCE_NAME" : POLICY } } }
Per inviare la richiesta, espandi una delle seguenti 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" } }
-
Fai un sondaggio sul metodo
operations.get
fino al termine 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 replica completata. Usa troncato esponenziale, per introdurre un ritardo tra richiesta.Per ottenere lo stato di una replica, utilizza lo strumento
operations.get
.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
: il tuo progetto Google Cloud ID. 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 delle seguenti opzioni:
Le operazioni in corso restituiscono una risposta come la 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 come la 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 } } } } }
Ottieni i risultati della replica.
Per ottenere i risultati di una replica, utilizza lo strumento
replays.results.list
.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
-
REPLAY_NAME
: il nome della replica di cui vuoi recuperare i risultati. . Copia questo valore dal camporesponse.replay.name
di un Rispostaoperations.get
. Includi qualsiasi tipo di risorsa e prefissi località. Per un esempio,"projects/my-project/locations/global/replays/89ab4892-9605-4c84-aedb-4fce4fc5195b"
-
PAGE_SIZE
: facoltativo. Il numero massimo di risultati da restituire da questo richiesta. Se non specificato, il server determinerà il numero di risultati da restituire. Se di risultati è maggiore della dimensione della pagina, la risposta contiene un'impaginazione che puoi utilizzare per recuperare la pagina successiva di risultati. PAGE_TOKEN
: facoltativo. Il token di impaginazione restituito in una sessione la risposta desiderata con questo metodo. Se specificato, l'elenco dei risultati inizierà dove la precedente richiesta terminata.PROJECT_ID
: il tuo progetto Google Cloud ID. 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 delle seguenti opzioni:
La risposta contiene un elenco di risultati che spiegano come cambierebbe l'accesso dell'entità se sia stato applicato il criterio proposto. Questi risultati elencano anche gli eventuali errori che si sono verificati durante di simulazione, in particolare gli errori dovuti a tipi di risorse non supportati
Consulta Informazioni sui risultati di Policy Simulator su questa pagina per scoprire come leggere i risultati.
Di seguito è riportato un esempio di risposta per una simulazione di criteri che coinvolge utente
my-user@example.com
. In questo caso, se la modifica proposta è stata applicata,my-user@example.com
potrebbe non avere piùresourcemanager.projects.list
eresourcemanager.projects.get
autorizzazioni per il progettomy-project
e di certo non dispone l'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 (
{}
).-
Comprendi i risultati del Simulatore di criteri
Policy Simulator segnala l'impatto di una modifica proposta a un criterio come elenco delle modifiche di accesso. Ogni modifica dell'accesso rappresenta un accesso degli ultimi 90 giorni che avrebbe un risultato diverso rispetto al criterio di autorizzazione attuale.
Policy Simulator elenca anche gli eventuali errori che si sono verificati durante che consente di identificare potenziali lacune nella simulazione.
La presentazione di queste modifiche ed errori dipende dalla piattaforma utilizzata che utilizzano.
Console
La pagina dei risultati del Simulatore di criteri mostra i risultati della simulazione in diverse sezioni:
Modifiche ai criteri: in questa sezione sono elencate le risorse di cui hai selezionato il criterio di autorizzazione. proporre modifiche, i ruoli di cui si propone la rimozione i ruoli che vuoi proporre di aggiungere.
Questa sezione contiene anche un pulsante Visualizza le differenze dei criteri. Se fai clic su questo pulsante puoi vedere come appare il criterio di autorizzazione della risorsa prima e dopo le modifiche proposte.
Modifiche alle autorizzazioni: questa sezione contiene il numero di rimosse e aggiunte autorizzazioni, che descrivono come cambierebbero le autorizzazioni dell'entità se in cui hai applicato le modifiche proposte. Il numero di autorizzazioni viene calcolato confrontando le autorizzazioni nei ruoli attuali dell'entità con autorizzazioni nei ruoli proposti dall'entità, ignorando i ruoli ereditati.
Questa sezione contiene anche un pulsante Visualizza le differenze di autorizzazioni. Se fai clic questo pulsante, puoi visualizzare un confronto fianco a fianco delle autorizzazioni i ruoli attuali e proposti dell'entità.
Modifiche all'accesso negli ultimi 90 giorni: questa sezione mostra i tentativi di accesso degli ultimi 90 giorni hanno diversi risultati previsti dal criterio di autorizzazione proposto e dall'attuale criterio di autorizzazione. Questo include un riepilogo delle modifiche apportate all'accesso e una tabella con risultati dettagliati.
Il riepilogo delle modifiche all'accesso elenca il numero di ciascun tipo di accesso la modifica, il numero di errori e risultati sconosciuti e il numero di accessi tentativi che abbiano lo stesso risultato in base al criterio di autorizzazione proposto criterio di autorizzazione attuale. Il riepilogo mostra anche quante autorizzazioni non è stato possibile simulata. Per ulteriori informazioni, consulta la sezione Errori in questa pagina.
Questa sezione contiene anche una tabella delle modifiche relative all'accesso. In questa tabella sono elencate tutte le degli ultimi 90 giorni con un tentativo di accesso diverso all'interno del criterio di autorizzazione proposto e dell'attuale criterio di autorizzazione. Ogni voce include la risorsa a cui l'entità stava tentando di accedere, la data della richiesta, l'entità che la esegue, l'autorizzazione nel la richiesta e lo stato dell'accesso nel criterio di autorizzazione proposto rispetto allo stato dell'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 avrà più accesso dopo la modifica proposta. Accesso potenzialmente revocato Questo risultato può verificarsi per i seguenti motivi:
- L'entità aveva accesso in base al criterio di autorizzazione attuale, ma il loro accesso secondo il criterio di autorizzazione proposto sconosciuto.
- L'accesso dell'entità in base al criterio di autorizzazione attuale è unknown, ma non avrà accesso dopo la modifica proposta.
Accesso ottenuto L'entità non aveva accesso nell'ambito dell'autorizzazione attuale ma potranno accedervi dopo la modifica proposta. Accesso potenzialmente ottenuto Questo risultato può verificarsi per i seguenti motivi:
- L'entità non aveva accesso nell'ambito dell'autorizzazione attuale ma il loro accesso dopo la modifica proposta è sconosciuto.
- L'accesso dell'entità in base al criterio di autorizzazione attuale è sconosciuto, ma potrà accedere dopo la modifica proposta.
Accesso sconosciuto L'accesso dell'entità secondo il criterio di autorizzazione attuale e il criterio di autorizzazione proposto è sconosciuto e il le modifiche proposte potrebbero influire sull'accesso dell'entità. Errore Si è verificato un errore durante la simulazione. Per visualizzare ulteriori dettagli su una modifica di accesso, fai clic sull'icona modifica. Si apre il riquadro Dettagli modifica di accesso, che mostra ulteriori informazioni sulla modifica dell'accesso, incluse le informazioni l'accesso esistente, l'accesso proposto dall'entità e ulteriori dettagli il risultato della modifica dell'accesso.
gcloud
Quando usi il comando replay-recent-access
,
La risposta di gcloud CLI contiene un elenco di replayResults
.
Ogni risultato della ripetizione descrive un tentativo di accesso il cui risultato sarebbe stato
se la norma di autorizzazione proposta era in vigore al momento della
tentativo. Ad esempio, il seguente risultato di ripetizione mostra che
my-user@example.com
ha usato l'autorizzazione resourcemanager.projects.update
in
in passato per eseguire un'azione nel progetto my-project
. Tuttavia, se
il criterio di autorizzazione proposto 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 della 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 accesso tentativo riuscito, il risultato contiene un campodiff.accessDiff
che segnala la differenza tra i risultati del tentativo di accesso nella attuale e in base al criterio di autorizzazione proposto. Se la riproduzione tentativo non riuscito, il risultato della riproduzione contiene un campoerror
con un descrizione dell'errore. Per scoprire di più sugli errori di simulazione, consulta Errori in questa pagina.
Ogni diff di accesso ha i seguenti componenti:
baseline
: il risultato dell'accesso quando viene utilizzato il criterio di autorizzazione attuale. Questo è indicato come uno dei seguenti valori:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, la risposta elencherà anche eventuali errori associati alle informazioni sconosciute, così come la richiesta i criteri associati all'errore. Per ulteriori informazioni su:UNKNOWN
, consulta Risultati sconosciuti in questa pagina.simulated
: il risultato dell'accesso quando viene usato il criterio di autorizzazione proposto. Questo viene riportato come uno dei seguenti valori:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, la risposta elencherà anche eventuali errori associati alle informazioni sconosciute, così come la richiesta i criteri associati all'errore. Per ulteriori informazioni su:UNKNOWN
, consulta Risultati sconosciuti in questa pagina.accessChange
: la modifica tra lo stato di accesso di base e la stato di accesso simulato. Consulta la seguente tabella per un elenco valori potenziali:Modifica accesso Dettagli ACCESS_REVOKED
L'entità aveva accesso in base al criterio di autorizzazione attuale, ma non avrà più accesso dopo la modifica proposta. ACCESS_MAYBE_REVOKED
Questo risultato può verificarsi per i seguenti motivi:
- L'entità aveva accesso in base al criterio di autorizzazione attuale, ma il loro accesso secondo il criterio di autorizzazione proposto sconosciuto.
- L'accesso dell'entità in base al criterio di autorizzazione attuale è unknown, ma non avrà accesso dopo la modifica proposta.
ACCESS_GAINED
L'entità non aveva accesso nell'ambito dell'autorizzazione attuale ma potranno accedervi dopo la modifica proposta. ACCESS_MAYBE_GAINED
Questo risultato può verificarsi per i seguenti motivi:
- L'entità non aveva accesso nell'ambito dell'autorizzazione attuale ma il loro accesso dopo la modifica proposta è sconosciuto.
- L'accesso dell'entità in base al criterio di autorizzazione attuale è sconosciuto, ma potrà accedere dopo la modifica proposta.
UNKNOWN_CHANGE
L'accesso dell'entità secondo il criterio di autorizzazione attuale e il criterio di autorizzazione proposto è sconosciuto e il 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 della ripetizione descrive un tentativo di accesso il cui risultato sarebbe stato
se la norma di autorizzazione proposta era in vigore al momento della
tentativo. Ad esempio, il seguente risultato di ripetizione mostra che
my-user@example.com
ha usato l'autorizzazione resourcemanager.projects.update
in
in passato per eseguire un'azione nel progetto my-project
. Tuttavia, se
il criterio di autorizzazione proposto 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 della 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 accesso tentativo riuscito, il risultato contiene un campodiff.accessDiff
che segnala la differenza tra i risultati del tentativo di accesso nella attuale e in base al criterio di autorizzazione proposto. Se la riproduzione tentativo non riuscito, il risultato della riproduzione contiene un campoerror
con un descrizione dell'errore. Per scoprire di più sugli errori di simulazione, consulta Errori in questa pagina.
Ogni diff di accesso ha i seguenti componenti:
baseline
: il risultato dell'accesso quando viene utilizzato il criterio di autorizzazione attuale. Questo è indicato come uno dei seguenti valori:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, la risposta elencherà anche eventuali errori associati alle informazioni sconosciute, così come la richiesta i criteri associati all'errore. Per ulteriori informazioni su:UNKNOWN
, consulta Risultati sconosciuti in questa pagina.simulated
: il risultato dell'accesso quando viene usato il criterio di autorizzazione proposto. Questo viene riportato come uno dei seguenti valori:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, la risposta elencherà anche eventuali errori associati alle informazioni sconosciute, così come la richiesta i criteri associati all'errore. Per ulteriori informazioni su:UNKNOWN
, consulta Risultati sconosciuti in questa pagina.accessChange
: la modifica tra lo stato di accesso di base e la stato di accesso simulato. Consulta la seguente tabella per un elenco valori potenziali:Modifica accesso Dettagli ACCESS_REVOKED
L'entità aveva accesso in base al criterio di autorizzazione attuale, ma non avrà più accesso dopo la modifica proposta. ACCESS_MAYBE_REVOKED
Questo risultato può verificarsi per i seguenti motivi:
- L'entità aveva accesso in base al criterio di autorizzazione attuale, ma il loro accesso secondo il criterio di autorizzazione proposto sconosciuto.
- L'accesso dell'entità in base al criterio di autorizzazione attuale è unknown, ma non avrà accesso dopo la modifica proposta.
ACCESS_GAINED
L'entità non aveva accesso nell'ambito dell'autorizzazione attuale ma potranno accedervi dopo la modifica proposta. ACCESS_MAYBE_GAINED
Questo risultato può verificarsi per i seguenti motivi:
- L'entità non aveva accesso nell'ambito dell'autorizzazione attuale ma il loro accesso dopo la modifica proposta è sconosciuto.
- L'accesso dell'entità in base al criterio di autorizzazione attuale è sconosciuto, ma potrà accedere dopo la modifica proposta.
UNKNOWN_CHANGE
L'accesso dell'entità secondo il criterio di autorizzazione attuale e il criterio di autorizzazione proposto è sconosciuto e il le modifiche proposte potrebbero influire sull'accesso dell'entità.
Risultati sconosciuti
Se un risultato di accesso è sconosciuto, significa che Policy Simulator non ha avere informazioni sufficienti per valutare appieno il tentativo di accesso.
Console
Se un risultato di accesso è sconosciuto, il riquadro dei dettagli delle modifiche di accesso indica motivo sconosciuto, oltre ai ruoli specifici, ai criteri di autorizzazione, le adesioni e le condizioni a cui non ha potuto accedere o valutare.
Un risultato può essere sconosciuto per diversi motivi:
- Informazioni sul ruolo negate: l'entità che esegue la simulazione non aveva l'autorizzazione per visualizzare i dettagli di uno o più ruoli simulato.
- Impossibile accedere al criterio: l'entità che esegue la simulazione non ha eseguito disporre dell'autorizzazione per ottenere il criterio di autorizzazione per una o più risorse coinvolti nella simulazione.
- Informazioni sull'iscrizione negate: l'entità che esegue la simulazione non aveva per visualizzare i membri di uno o più gruppi inclusi nell' criterio di autorizzazione proposto.
- Condizione non supportata: è presente un'associazione condizionale dei ruoli nella in fase di test. Policy Simulator non supporta condizioni, perciò non è stato possibile valutare l'associazione.
gcloud
In gcloud CLI, i risultati della simulazione indicheranno il motivo che il risultato sia 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. le informazioni necessarie per valutare lo stato di accesso. Questo può si verificano per uno dei seguenti motivi:- L'utente non dispone dell'autorizzazione per recuperare il criterio di autorizzazione simulato o non dispongono dell'autorizzazione per recuperare i criteri di autorizzazione per le risorse nei log di accesso.
- L'utente non dispone delle autorizzazioni per partecipare a un gruppo.
- L'utente non può recuperare le informazioni necessarie sul ruolo.
Per sapere quali informazioni mancavano, esamina le informazioni sull'errore seguendo il segnalato lo stato di accesso.
UNKNOWN_CONDITIONAL
: nella sezione di autorizzazione è presente un'associazione condizionale dei ruoli in fase di test. Policy Simulator non supporta condizioni, perciò 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 perché le informazioni sono state
sconosciuto e un campo policies
che elenca i criteri di autorizzazione associati
errori. Per ulteriori informazioni sugli errori, consulta la sezione Errori in questa pagina.
REST
Nell'API REST, i risultati della simulazione indicheranno il motivo che il risultato sia 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. le informazioni necessarie per valutare lo stato di accesso. Questo può si verificano per uno dei seguenti motivi:- L'utente non dispone dell'autorizzazione per recuperare il criterio di autorizzazione simulato o non dispongono dell'autorizzazione per recuperare i criteri di autorizzazione per le risorse nei log di accesso.
- L'utente non dispone delle autorizzazioni per partecipare a un gruppo.
- L'utente non può recuperare le informazioni necessarie sul ruolo.
Per sapere quali informazioni mancavano, esamina le informazioni sull'errore seguendo il segnalato lo stato di accesso.
UNKNOWN_CONDITIONAL
: nella sezione di autorizzazione è presente un'associazione condizionale dei ruoli in fase di test. Policy Simulator non supporta condizioni, perciò 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 perché le informazioni sono state
sconosciuto e un campo policies
che elenca i criteri di autorizzazione associati
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 di simulazione. È importante esaminare questi errori per comprendere 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 dei risultati .
Se il messaggio di errore indica che la simulazione non può essere eseguita a causa troppi log nel progetto o nell'organizzazione, non potrai una simulazione sulla risorsa.
Se visualizzi questo errore per un altro motivo, prova eseguendo di nuovo la simulazione. Se non riesci ancora a eseguire la simulazione, contatta policy-simulator-feedback@google.com.
Errori di riproduzione: è stata eseguita la riproduzione di un singolo tentativo di accesso non riuscita, quindi Policy Simulator non ha potuto determinare se del tentativo di accesso cambierebbe in base al criterio di autorizzazione proposto.
Nella console Google Cloud sono elencati gli errori di ripetizione nella sezione Modifiche agli accessi ultimi 90 giorni. Il riquadro Dettagli modifiche di accesso per ogni errore include un messaggio di errore che ti aiuterà a comprendere il problema, nonché la risorsa e l'autorizzazione che erano simulate quando si è verificato l'errore.
Errori relativi a tipi di risorse non supportati: il criterio di autorizzazione proposto influisce autorizzazioni associate a un tipo di risorsa non supportato, che Policy Simulator non è in grado di simulare.
Policy Simulator elenca queste autorizzazioni nei risultati della simulazione in modo che che conosci le autorizzazioni che non è stato in grado di simulare.
gcloud
Nei risultati della simulazione dell'interfaccia alla gcloud CLI, gli errori possono apparire in luoghi:
- Il campo
replayResult.error
: se il tentativo di ripetizione non è andato a buon fine, Policy Simulator segnala l'errore nel camporeplayResult.error
. Se un risultato di ripetizione contiene questo campo, non conterrà un campodiff
. replayResult.diff.accessDiff.policy-type.errors
dove policy-type èbaseline
osimulated
. Se tentativo di ripetizione riuscito, ma il risultato è statoUNKNOWN_INFO_DENIED
oppureUNKNOWN_CONDITIONAL
, Policy Simulator indica il motivo per cui risultato sconosciuto 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 funzionare, contatta policy-simulator-feedback@google.com. |
INVALID_ACCESS_TUPLE |
3 | Impossibile ripetere Policy Simulator il tentativo di accesso perché conteneva un'autorizzazione, un nome risorsa o l'entità. |
OUT_OF_RANGE_GROUP_TOO_LARGE |
11 | Policy Simulator potrebbe
non valuterà l'appartenenza dell'entità al gruppo perché il gruppo ha
ci sono troppi sottogruppi. Questo errore è associato a
UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP |
7 | Policy Simulator
impossibile 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
impossibile 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
impossibile 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
impossibile 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 è
associati a UNKNOWN_INFO_DENIED modifiche di accesso. |
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, che Policy Simulator
non supporta. Questo tipo di errore è associato a
UNKNOWN_CONDITIONAL modifiche all'accesso. |
LOG_SIZE_TOO_LARGE |
8 | La risorsa è associata a troppi log di accesso, quindi Policy Simulator non è stato possibile eseguire la simulazione. Consulta Dimensione massima della riproduzione log nella pagina dei concetti di Policy Simulator per maggiori dettagli. |
UNSUPPORTED_RESOURCE |
12 |
Il criterio di autorizzazione proposto consente di modificare le autorizzazioni associate
di risorse non supportate. Questo errore viene visualizzato nella
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 saperne di più sui tipi di risorse non supportati, consulta Livelli di assistenza per i tipi di risorse nella pagina dei concetti di Policy Simulator. |
REST
Nei risultati della simulazione dell'API REST, gli errori possono comparire in due posizioni:
- Il campo
replayResult.error
: se il tentativo di ripetizione non è andato a buon fine, Policy Simulator segnala l'errore nel camporeplayResult.error
. Se un risultato di ripetizione contiene questo campo, non conterrà un campodiff
. replayResult.diff.accessDiff.policy-type.errors
dove policy-type èbaseline
osimulated
. Se tentativo di ripetizione riuscito, ma il risultato è statoUNKNOWN_INFO_DENIED
oppureUNKNOWN_CONDITIONAL
, Policy Simulator indica il motivo per cui risultato sconosciuto 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 funzionare, contatta policy-simulator-feedback@google.com. |
INVALID_ACCESS_TUPLE |
3 | Impossibile ripetere Policy Simulator il tentativo di accesso perché conteneva un'autorizzazione, un nome risorsa o l'entità. |
OUT_OF_RANGE_GROUP_TOO_LARGE |
11 | Policy Simulator potrebbe
non valuterà l'appartenenza dell'entità al gruppo perché il gruppo ha
ci sono troppi sottogruppi. Questo errore è associato a
UNKNOWN_INFO_DENIED modifiche all'accesso. |
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP |
7 | Policy Simulator
impossibile 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
impossibile 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
impossibile 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
impossibile 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 è
associati a UNKNOWN_INFO_DENIED modifiche di accesso. |
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, che Policy Simulator
non supporta. Questo tipo di errore è associato a
UNKNOWN_CONDITIONAL modifiche all'accesso. |
LOG_SIZE_TOO_LARGE |
8 | La risorsa è associata a troppi log di accesso, quindi Policy Simulator non è stato possibile eseguire la simulazione. Consulta Dimensione massima della riproduzione log nella pagina dei concetti di Policy Simulator per maggiori dettagli. |
UNSUPPORTED_RESOURCE |
12 |
Il criterio di autorizzazione proposto consente di modificare le autorizzazioni associate
di risorse non supportate. Questo errore viene visualizzato nella
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 saperne di più sui tipi di risorse non supportati, consulta Livelli di assistenza per i tipi di risorse nella pagina dei concetti di Policy Simulator. |
Applica una modifica simulata del criterio
Per applicare una modifica simulata a un criterio di autorizzazione:
Console
Fai clic su Applica modifiche proposte.
Nella finestra di dialogo di conferma, fai clic su Applica per confermare la modifica.
gcloud
Utilizza la set-iam-policy
e fornisci un percorso al file JSON che contiene il comando
criterio che vuoi applicare:
gcloud resource-type set-iam-policy resource-id filepath
Fornisci i seguenti valori:
resource-type
: il tipo di risorsa il cui criterio di autorizzazione che vuoi aggiornare. Ad esempio,projects
.resource-id
: l'ID della risorsa di cui il criterio di autorizzazione che vuoi aggiornare. Ad esempio,my-project
.filepath
: il percorso di un file che contiene la versione aggiornata di autorizzazione.
La risposta contiene il criterio di autorizzazione aggiornato. Se tratti IAM consentire criteri come codice e archiviarli in un sistema di controllo della versione, Archivia 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 l'API Resource Manager
projects.setIamPolicy
.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
PROJECT_ID
: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.POLICY
: una rappresentazione JSON del criterio che che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta Riferimento alle norme.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Corpo JSON della richiesta:
{ "policy": { POLICY } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Salva i risultati della simulazione
Se utilizzi gcloud CLI, puoi salvare Risultati di 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,json
oyaml
.filename
: un nome per il file esportato.
Salva come CSV
Per salvare un file CSV, aggiungi il seguente flag a 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 di e i campi che vuoi includere nei risultati esportati. Ad esempio:diffs.accessTuple.principal, diffs.accessTuple.permission
.filename
: un nome per il file esportato.
Se vuoi, puoi aggiungere altri campi, ad esempio errors[]
alla
--flatten
flag. L'aggiunta di campi al flag --flatten
consente
in questi campi verranno elencati su righe separate nel file CSV.
Di seguito è riportato un esempio di comando replay-recent-access
che salva
i campi più importanti dei risultati della simulazione, come il 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
campi seguenti: entità, autorizzazione, risorsa, modifica dell'accesso, riferimento
stato di accesso e stato di accesso simulato.
Per ulteriori informazioni sulla formattazione con gcloud CLI, consulta formati.
Passaggi successivi
- Scopri come risolvere i problemi di accesso di un account esistente. tra cui scegliere.
- Scopri di più sull'applicazione del privilegio minimo con il ruolo personalizzati.