Questa pagina descrive come simulare una modifica a un criterio di autorizzazione IAM utilizzando Policy Simulator. Spiega inoltre come interpretare i risultati della simulazione e come applicare la policy di autorizzazione simulata, se lo desideri.
Questa funzionalità valuta l'accesso solo in base alle policy di autorizzazione.
Per scoprire come simulare le modifiche ad altri tipi di policy, consulta quanto segue:
- Testare le modifiche alle policy di negazione con Policy Simulator
- Testare le modifiche ai criteri dell'organizzazione con Policy Simulator
- Testa le modifiche alle policy di Principal Access Boundary con Policy Simulator
Prima di iniziare
-
Enable the Policy Simulator and Resource Manager APIs.
- (Facoltativo) Scopri come funziona Policy Simulator per le policy di autorizzazione.
Autorizzazioni obbligatorie
Prima di simulare una modifica a una policy di autorizzazione, devi assicurarti di disporre delle autorizzazioni appropriate. Per eseguire una simulazione sono necessarie determinate autorizzazioni; altre non sono necessarie, ma ti aiutano a ottenere i risultati più completi dalla simulazione.
Per saperne di più sui ruoli Identity and Access Management (IAM), consulta la sezione Informazioni sui ruoli.
Autorizzazioni obbligatorie per le risorse di destinazione
La risorsa di destinazione della simulazione è la risorsa di cui stai simulando le policy di autorizzazione.
Per ottenere le autorizzazioni necessarie per eseguire una simulazione, chiedi all'amministratore di concederti i seguenti ruoli IAM sulla risorsa di destinazione:
-
Visualizzatore Cloud Asset (
roles/cloudasset.viewer
) -
Amministratore del simulatore (
roles/policysimulator.admin
) -
Revisore della sicurezza (
roles/iam.securityReviewer
)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire una simulazione. Per vedere quali sono esattamente le autorizzazioni richieste, 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 di destinazione eservice
è il nome del servizio Google Cloud proprietario della risorsa.
Potresti anche ottenere queste autorizzazioni con 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 correlata alla risorsa di destinazione in alcun modo.
Il modo in cui imposti la risorsa host dipende dalla piattaforma che utilizzi.
Console
La risorsa host è il progetto, la cartella o l'organizzazione che viene visualizzata nel selettore di risorse.
Per modificare la risorsa host, scegli un progetto, una cartella o un'organizzazione diversa nel selettore di risorse.
gcloud
La risorsa host è il progetto di quota attuale. Per impostare il progetto di quota, utilizza il comando gcloud auth application-default set-quota-project
.
REST
Specifichi manualmente la risorsa host ogni volta che invii una richiesta. Per ulteriori dettagli, consulta la sezione 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 Simulator Admin (roles/policysimulator.admin
) nella risorsa host.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per eseguire una simulazione. Per vedere quali sono esattamente le autorizzazioni richieste, 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 ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Autorizzazioni consigliate
Per ottenere i risultati più completi da una simulazione, ti consigliamo di disporre di determinati permessi IAM e Google Workspace. Se non disponi di alcune o di 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 di accesso sconosciute, perché potresti non essere in grado di recuperare informazioni che potrebbero influire sui risultati della simulazione.
Autorizzazioni IAM consigliate
Ti consigliamo di disporre del ruolo Revisore della sicurezza
(roles/iam.securityReviewer
) per la tua organizzazione quando esegui una simulazione.
In alternativa, se disponi già del ruolo Amministratore sicurezza
(roles/iam.securityAdmin
), non devi disporre di altri ruoli.
Questi ruoli ti concedono le seguenti autorizzazioni, che ti aiutano a ottenere i risultati più completi dalla simulazione:
iam.roles.get
eiam.roles.list
su progetti, cartelle o organizzazioni pertinenti in cui sono definiti ruoli personalizzati. Un progetto, una cartella o un'organizzazione è 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ò avere una policy di autorizzazione eservice
è il nome del servizioGoogle Cloud proprietario della risorsa.Quando esegui una simulazione, ti consigliamo di disporre di questa autorizzazione per 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ò è vero se si verifica una delle seguenti condizioni:
- La risorsa è un discendente della risorsa di cui stai simulando il criterio di autorizzazione e viene visualizzata nei log di accesso pertinenti.
- La risorsa è un predecessore della risorsa di cui stai simulando il criterio di autorizzazione.
Ad esempio, supponiamo di voler simulare una policy di autorizzazione per un progetto. Se i log di accesso includono un tentativo di accesso a un bucket Cloud Storage nel progetto, devi disporre dell'autorizzazione
storage.buckets.getIamPolicy
per quel bucket. Se il progetto ha una cartella principale con un criterio di autorizzazione, devi disporre anche dell'autorizzazioneresourcemanager.folders.getIamPolicy
per quella cartella.
Autorizzazioni Google Workspace consigliate
Ti consigliamo di disporre dell'autorizzazione per recuperare le informazioni sull'appartenenza al gruppo per ogni gruppo Google nelle norme di autorizzazione originali e in quelle proposte.
I super amministratori e gli amministratori dei gruppi di Google Workspace in genere hanno accesso
alla visualizzazione dell'appartenenza ai gruppi. Se non sei un super amministratore o un amministratore del gruppo, chiedi al tuo
amministratore di Google Workspace di
creare un ruolo amministrativo di Google Workspace personalizzato
che contenga il privilegio groups.read
(che si trova in Privilegi API Admin) e di concedertelo. In questo modo puoi visualizzare l'appartenenza
di tutti i gruppi all'interno del tuo dominio e simulare in modo più efficace le modifiche a un
criterio di autorizzazione.
Simulare una modifica alla policy
Simula una modifica a un criterio di autorizzazione seguendo questi passaggi.
Console
Il seguente esempio 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 disponga di un criterio di autorizzazione.
Modifica le autorizzazioni di un principal, quindi, anziché fare clic su Salva, fai clic su Prova modifiche:
Nella console Google Cloud vai alla pagina IAM.
Crea una modifica proposta al criterio di autorizzazione modificando le autorizzazioni di un principal 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 o revocando o modificando un ruolo esistente.
Per simulare la modifica proposta, fai clic su Testa modifiche.
Dopo qualche minuto, la console Google Cloud mostrerà i risultati della simulazione come un elenco di modifiche all'accesso. Per saperne di più, consulta la sezione Informazioni sui risultati Policy Simulator policy in questa pagina.
Se non è stata apportata alcuna modifica all'accesso tra la policy di autorizzazione esistente e quella simulata, la console Google Cloud non mostrerà alcuna modifica all'accesso.
gcloud
Per simulare una modifica a un criterio di autorizzazione, segui il pattern read-modify-write, ma simula il criterio di autorizzazione anziché scriverlo.
Leggi la policy di autorizzazione corrente 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 una policy di autorizzazione. Ad esempio,projects
.resource-id
: l'ID della risorsa di cui vuoi simulare la policy 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 la policy 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 la policy di autorizzazione JSON o YAML restituita dal comando
get-iam-policy
per riflettere le modifiche che vuoi simulare.Esistono diversi tipi di modifiche che puoi apportare ai criteri di autorizzazione. Ad esempio, puoi aggiungere o rimuovere un'entità da un'associazione di ruoli oppure rimuovere un'associazione di ruoli dalla policy di autorizzazione.
Esegui questo comando per simulare la modifica alla policy 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 la policy 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 dei nomi completi delle risorse, consulta Nomi completi delle risorse.
filepath
: il percorso del file contenente la policy di autorizzazione modificata 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 di risultati della riproduzione che spiega come cambierebbe l'accesso dell'entità se venisse applicata la policy di autorizzazione proposta. Questi risultati elencano anche gli eventuali errori che si sono verificati durante la simulazione, inclusi quelli dovuti a tipi di risorse non supportati.
Consulta la sezione Comprendere i risultati del simulatore di policy di questa pagina per scoprire come leggere i risultati. Per scoprire come salvare i risultati della simulazione anziché stamparli, consulta Salvataggio dei risultati della simulazione.
Di seguito è riportato un esempio di risposta per una simulazione di criteri di autorizzazione che coinvolge l'utente
my-user@example.com
. In questo caso, se la modifica proposta venisse applicata,my-user@example.com
potrebbe non disporre più delle autorizzazioniresourcemanager.projects.list
eresourcemanager.projects.get
per il progettomy-project
e non disporrebbe più dell'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 è stata apportata alcuna modifica all'accesso tra la policy di autorizzazione esistente e quella simulata, il comando stampa
No access changes found in the replay
.
REST
Per simulare una modifica a un criterio di autorizzazione, segui il pattern read-modify-write, ma invece di scrivere il criterio di autorizzazione, crea ed esegui una simulazione.
Leggi la policy di autorizzazione per la risorsa.
Per ottenere la policy di autorizzazione di un progetto, utilizza il metodo
projects.getIamPolicy
dell'API Resource Manager.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: il tuo ID progetto Google Cloud . Gli ID progetto sono stringhe alfanumeriche, comemy-project
.POLICY_VERSION
: La versione della policy da restituire. Le richieste devono specificare la versione più recente delle norme, ovvero la versione 3. Per maggiori dettagli, vedi Specificare una versione delle norme quando si recuperano le norme.
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 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 in modo che rifletta le modifiche che vuoi simulare.
Esistono diversi tipi di modifiche che puoi apportare ai criteri di autorizzazione. Ad esempio, puoi aggiungere o rimuovere un'entità da un'associazione di ruoli oppure rimuovere un'associazione di ruoli dalla policy di autorizzazione.
Crea una simulazione o una ripetizione con il criterio di autorizzazione modificato.
Per creare una simulazione per un progetto, una cartella o un'organizzazione, utilizza il metodo
replays.create
dell'API Policy Simulator.Prima di utilizzare i dati della richiesta, apporta 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 la policy. Questa risorsa può essere qualsiasi risorsa che accetta policy IAM e non deve essere correlata in alcun modo alla risorsa host.Il nome completo della risorsa è un URI costituito dal nome del servizio e dal percorso della risorsa. Ad esempio, se stai simulando un criterio per un progetto, devi utilizzare
//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
: La policy che vuoi simulare. Per un esempio di norme, consulta il riferimento alle norme.Per simulare più criteri, includi più coppie
"OBJECT_FULL_RESOURCE_NAME" : POLICY
nel corpo della richiesta. PROJECT_ID
: il tuo ID progetto Google Cloud . Gli ID progetto sono stringhe alfanumeriche, comemy-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 di queste opzioni:
La risposta contiene il nome di un'operazione che rappresenta la tua riproduzione:
{ "name": "operations/6de23e63-f61a-4b8c-b502-34d717d2d7f8", "metadata": { "type_url": "type.googleapis.com/google.cloud.policysimulator.v1.ReplayOperationMetadata" } }
-
Esegui il polling del 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 una richiesta e l'altra.Per ottenere lo stato di una riproduzione, utilizza il metodo
operations.get
dell'API Policy Simulator.Prima di utilizzare i dati della richiesta, apporta 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 ID progetto Google Cloud . Gli ID progetto sono stringhe alfanumeriche, comemy-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 } } } } }
Visualizza i risultati della ripetizione.
Per ottenere i risultati di una ripetizione, utilizza il metodo
replays.results.list
dell'API Policy Simulator.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
-
REPLAY_NAME
: il nome della ripetizione per cui vuoi recuperare i risultati. Copia questo valore dal camporesponse.replay.name
di una rispostaoperations.get
. Includi eventuali prefissi di tipo di risorsa e 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 della dimensione della pagina, la risposta contiene un token di paginazione che puoi utilizzare per recuperare la pagina successiva dei risultati. PAGE_TOKEN
: (Facoltativo). Il token di paginazione restituito in una risposta precedente da questo metodo. Se specificato, l'elenco dei risultati inizierà dal punto in cui è terminata la richiesta precedente.PROJECT_ID
: il tuo ID progetto Google Cloud . Gli ID progetto sono stringhe alfanumeriche, comemy-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 cambierebbe l'accesso dell'entità se venisse applicata la policy proposta. Questi risultati elencano anche gli errori che si sono verificati durante la simulazione, in particolare quelli dovuti a tipi di risorse non supportati.
Consulta la sezione Comprendere i risultati del simulatore di policy di 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 la modifica proposta venisse applicata,my-user@example.com
potrebbe non disporre più delle autorizzazioniresourcemanager.projects.list
eresourcemanager.projects.get
per il progettomy-project
e 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 è stata apportata alcuna modifica all'accesso tra la policy di autorizzazione esistente e quella simulata, la richiesta restituisce un elenco vuoto (
{}
).-
Interpretare i risultati del simulatore di policy
Policy Simulator segnala l'impatto di una modifica proposta a una policy di autorizzazione come un elenco di modifiche all'accesso. Ogni modifica all'accesso rappresenta un tentativo di accesso degli ultimi 90 giorni che avrebbe un risultato diverso in base alla policy di autorizzazione proposta rispetto a quella attuale.
Policy Simulator elenca anche gli eventuali errori che si sono verificati durante la simulazione, il che ti aiuta a identificare potenziali lacune nella simulazione.
La presentazione di queste modifiche ed errori dipende dalla piattaforma che utilizzi.
Console
La pagina dei risultati del simulatore di norme mostra i risultati della simulazione in diverse sezioni:
Modifiche alle norme: questa sezione elenca la risorsa per cui stai proponendo modifiche alle norme di autorizzazione, i ruoli che stai proponendo di rimuovere e i ruoli che stai proponendo di aggiungere.
Questa sezione contiene anche un pulsante Visualizza differenze policy. 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 i conteggi delle autorizzazioni rimosse e aggiunte, che descrivono come cambierebbero le autorizzazioni dell'entità se applicassi le modifiche proposte. Questi conteggi delle autorizzazioni vengono calcolati confrontando le autorizzazioni nei ruoli attuali dell'entità con quelle nei ruoli proposti dell'entità, ignorando i ruoli ereditati.
Questa sezione contiene anche un pulsante Visualizza diff 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 degli ultimi 90 giorni hanno risultati diversi in base ai criteri di autorizzazione proposti e a quelli attuali. Questa sezione include sia un riepilogo delle modifiche all'accesso sia una tabella con risultati più dettagliati.
Il riepilogo delle modifiche all'accesso elenca il numero di ogni tipo di modifica all'accesso, il numero di errori e risultati sconosciuti e il numero di tentativi di accesso che hanno lo stesso risultato in base alla policy di autorizzazione proposta e a quella attuale. Il riepilogo mostra anche il numero di autorizzazioni che non è stato possibile simulare. Per ulteriori informazioni, vedi la sezione 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 che ha un risultato diverso in base alla policy di autorizzazione proposta e a quella 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 in base al criterio di autorizzazione proposto rispetto allo stato di accesso in base al 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 ai sensi dell'attuale criterio di autorizzazione, ma il suo accesso ai sensi del criterio di autorizzazione proposto è sconosciuto.
- L'accesso dell'entità in base al 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ò verificarsi per i seguenti motivi:
- L'entità non aveva accesso in base al criterio di autorizzazione corrente, ma il suo accesso dopo la modifica proposta è sconosciuto.
- L'accesso dell'entità in base al criterio di autorizzazione corrente è sconosciuto, ma avrà accesso dopo la modifica proposta.
Accesso sconosciuto L'accesso dell'entità sia in base al criterio di autorizzazione attuale sia in base 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 di accesso, fai clic sulla modifica. Si apre il riquadro Dettagli cambiamento di accesso, che mostra ulteriori informazioni sulla modifica dell'accesso, tra cui l'accesso esistente dell'entità, l'accesso proposto dell'entità e ulteriori dettagli sul risultato della modifica dell'accesso.
gcloud
Quando utilizzi il comando replay-recent-access
, la
risposta di gcloud CLI contiene un elenco di replayResults
.
Ogni risultato di riproduzione descrive un tentativo di accesso il cui risultato sarebbe stato
diverso se la policy di autorizzazione proposta fosse stata in vigore al momento del
tentativo. Ad esempio, il seguente risultato della 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 il criterio di autorizzazione proposto fosse stato in vigore, 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 replay presenta 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 va a buon fine, il risultato contiene un campodiff.accessDiff
che indica la differenza tra i risultati del tentativo di accesso in base alle norme di autorizzazione attuali e a quelle proposte. Se il tentativo di riproduzione non va a buon fine, il risultato della riproduzione contiene un campoerror
con una descrizione dell'errore. Per saperne di più sugli errori di simulazione, vedi la sezione Errori in questa pagina.
Ogni differenza di accesso ha i seguenti componenti:
baseline
: il risultato dell'accesso quando viene utilizzata la norma di autorizzazione corrente. Questo valore viene segnalato come uno dei seguenti:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, la risposta elencherà anche gli errori associati alle informazioni sconosciute, nonché i criteri di autorizzazione associati a quell'errore. Per ulteriori informazioni sui valori diUNKNOWN
, vedi Risultati sconosciuti in questa pagina.simulated
: il risultato dell'accesso quando viene utilizzato il criterio di autorizzazione proposto. Questo viene segnalato 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 gli errori associati alle informazioni sconosciute, nonché i criteri di autorizzazione associati all'errore. Per ulteriori informazioni sui valori diUNKNOWN
, vedi Risultati sconosciuti in questa pagina.accessChange
: la differenza tra lo stato di accesso di base e lo stato di accesso simulato. Consulta la tabella seguente per un elenco dei 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 ai sensi dell'attuale criterio di autorizzazione, ma il suo accesso ai sensi del criterio di autorizzazione proposto è sconosciuto.
- L'accesso dell'entità in base al 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 corrente, ma avrà accesso dopo la modifica proposta. ACCESS_MAYBE_GAINED
Questo risultato può verificarsi per i seguenti motivi:
- L'entità non aveva accesso in base al criterio di autorizzazione corrente, ma il suo accesso dopo la modifica proposta è sconosciuto.
- L'accesso dell'entità in base al criterio di autorizzazione corrente è sconosciuto, ma avrà accesso dopo la modifica proposta.
UNKNOWN_CHANGE
L'accesso dell'entità sia in base al criterio di autorizzazione attuale sia in base 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 riproduzione descrive un tentativo di accesso il cui risultato sarebbe stato
diverso se la policy di autorizzazione proposta fosse stata in vigore al momento del
tentativo. Ad esempio, il seguente risultato della 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 il criterio di autorizzazione proposto fosse stato in vigore, 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 replay presenta 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 va a buon fine, il risultato contiene un campodiff.accessDiff
che indica la differenza tra i risultati del tentativo di accesso in base alle norme di autorizzazione attuali e a quelle proposte. Se il tentativo di riproduzione non va a buon fine, il risultato della riproduzione contiene un campoerror
con una descrizione dell'errore. Per saperne di più sugli errori di simulazione, vedi la sezione Errori in questa pagina.
Ogni differenza di accesso ha i seguenti componenti:
baseline
: il risultato dell'accesso quando viene utilizzata la norma di autorizzazione corrente. Questo valore viene segnalato come uno dei seguenti:GRANTED
,NOT_GRANTED
,UNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
. Se il risultato èUNKNOWN_CONDITIONAL
oUNKNOWN_INFO_DENIED
, la risposta elencherà anche gli errori associati alle informazioni sconosciute, nonché i criteri di autorizzazione associati a quell'errore. Per ulteriori informazioni sui valori diUNKNOWN
, vedi Risultati sconosciuti in questa pagina.simulated
: il risultato dell'accesso quando viene utilizzato il criterio di autorizzazione proposto. Questo viene segnalato 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 gli errori associati alle informazioni sconosciute, nonché i criteri di autorizzazione associati all'errore. Per ulteriori informazioni sui valori diUNKNOWN
, vedi Risultati sconosciuti in questa pagina.accessChange
: la differenza tra lo stato di accesso di base e lo stato di accesso simulato. Consulta la tabella seguente per un elenco dei 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 ai sensi dell'attuale criterio di autorizzazione, ma il suo accesso ai sensi del criterio di autorizzazione proposto è sconosciuto.
- L'accesso dell'entità in base al 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ò verificarsi per i seguenti motivi:
- L'entità non aveva accesso in base al criterio di autorizzazione corrente, ma il suo accesso dopo la modifica proposta è sconosciuto.
- L'accesso dell'entità in base al criterio di autorizzazione corrente è sconosciuto, ma avrà accesso dopo la modifica proposta.
UNKNOWN_CHANGE
L'accesso dell'entità sia in base al criterio di autorizzazione attuale sia in base 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 disponeva di informazioni sufficienti per valutare completamente il tentativo di accesso.
Console
Se un risultato di accesso è sconosciuto, il riquadro dei dettagli della modifica all'accesso indica il motivo per cui è sconosciuto, oltre ai ruoli, ai criteri di autorizzazione, alle appartenenze ai gruppi e alle condizioni specifici a cui non è stato possibile accedere o che non è stato possibile valutare.
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'appartenenza negate: 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 di ruoli condizionale nel criterio di autorizzazione in fase di test. Policy Simulator non supporta le condizioni, pertanto l'associazione non è stata valutata.
gcloud
Nella gcloud CLI, i risultati della simulazione indicheranno 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 dispone dell'autorizzazione per accedere alle informazioni necessarie per valutare lo stato di accesso. Ciò può verificarsi per uno dei seguenti motivi:- L'utente non dispone dell'autorizzazione per recuperare la policy di autorizzazione che viene simulata oppure non dispone dell'autorizzazione per recuperare le policy di autorizzazione per le risorse nei log di accesso.
- L'utente non dispone dell'autorizzazione per visualizzare l'appartenenza a un gruppo.
- L'utente non può recuperare le informazioni sul ruolo necessarie.
Per scoprire quali informazioni mancavano, consulta le informazioni sull'errore dopo lo stato di accesso segnalato.
UNKNOWN_CONDITIONAL
: nel criterio di autorizzazione in fase di test è presente un'associazione di ruoli condizionale. Policy Simulator non supporta le condizioni, pertanto l'associazione non è stata valutata.
Se il risultato è sconosciuto, il campo per la norma di autorizzazione (baseline
o
simulated
) contiene un campo errors
che descrive il motivo per cui le informazioni erano
sconosciute e un campo policies
che elenca le norme di autorizzazione associate agli
errori. Per ulteriori informazioni sugli errori, vedi la sezione Errori in questa pagina.
REST
Nell'API REST, i risultati della simulazione indicheranno 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 dispone dell'autorizzazione per accedere alle informazioni necessarie per valutare lo stato di accesso. Ciò può verificarsi per uno dei seguenti motivi:- L'utente non dispone dell'autorizzazione per recuperare la policy di autorizzazione che viene simulata oppure non dispone dell'autorizzazione per recuperare le policy di autorizzazione per le risorse nei log di accesso.
- L'utente non dispone dell'autorizzazione per visualizzare l'appartenenza a un gruppo.
- L'utente non può recuperare le informazioni sul ruolo necessarie.
Per scoprire quali informazioni mancavano, consulta le informazioni sull'errore dopo lo stato di accesso segnalato.
UNKNOWN_CONDITIONAL
: nel criterio di autorizzazione in fase di test è presente un'associazione di ruoli condizionale. Policy Simulator non supporta le condizioni, pertanto l'associazione non è stata valutata.
Se il risultato è sconosciuto, il campo per la norma di autorizzazione (baseline
o
simulated
) contiene un campo errors
che descrive il motivo per cui le informazioni erano
sconosciute e un campo policies
che elenca le norme di autorizzazione associate agli
errori. Per ulteriori informazioni sugli errori, vedi la sezione Errori in questa pagina.
Errori
Policy Simulator segnala anche eventuali errori verificatisi durante la simulazione. È importante esaminare questi errori per comprendere le potenziali lacune nella simulazione.
Console
Esistono diversi tipi di errori che Policy Simulator potrebbe segnalare:
Errori di operazione: non è stato possibile eseguire la simulazione. Policy Simulator segnala gli errori di operazione 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 tuo progetto o nella tua organizzazione, non puoi eseguire una simulazione sulla risorsa.
Se ricevi 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: la riproduzione di un singolo tentativo di accesso non è riuscita, pertanto Policy Simulator non è riuscito a determinare se il risultato del tentativo di accesso cambierebbe in base alla policy di autorizzazione proposta.
La console Google Cloud elenca gli errori di riproduzione nella tabella Modifiche all'accesso negli ultimi 90 giorni. Il riquadro Dettagli della modifica dell'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 al tipo di risorsa non supportato: la policy di autorizzazione proposta 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 in modo da sapere quali autorizzazioni non è stato possibile simulare.
gcloud
Nei risultati della simulazione di gcloud CLI, gli errori possono essere visualizzati in due posizioni:
- Il campo
replayResult.error
: se il tentativo di riproduzione non è andato a buon fine, Policy Simulatory segnala l'errore nel camporeplayResult.error
. Se un risultato di riproduzione contiene questo campo, non contiene un campodiff
. - Il campo
replayResult.diff.accessDiff.policy-type.errors
in cui policy-type èbaseline
osimulated
. Se il tentativo di riproduzione è andato a buon fine, ma il risultato èUNKNOWN_INFO_DENIED
oUNKNOWN_CONDITIONAL
, Policy Simulator indica il motivo per cui il risultato era 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 riuscire, contatta policy-simulator-feedback@google.com. |
INVALID_ACCESS_TUPLE |
3 | Policy Simulator non è riuscito a riprodurre il tentativo di accesso perché conteneva un'autorizzazione, un nome risorsa o un principal non validi. |
OUT_OF_RANGE_GROUP_TOO_LARGE |
11 | Policy Simulator non è riuscito a valutare l'appartenenza del principal al gruppo perché il gruppo ha troppi sottogruppi. Questo errore è associato a
modifiche all'accesso UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP |
7 | Policy Simulator
non è riuscito a valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per visualizzare l'appartenenza al gruppo. Questo errore è associato a
modifiche all'accesso UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_IAM_POLICY |
7 | Policy Simulator
non è riuscito a valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per recuperare una policy di autorizzazione. Questo tipo di errore è associato a
modifiche all'accesso UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_IAM_ROLE |
7 | Policy Simulator
non è riuscito a 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
modifiche all'accesso UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_PARENT_IAM_POLICY |
7 | Policy Simulator
non è riuscito a 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à non supportato da Policy Simulator. |
UNIMPLEMENTED_MEMBER |
12 | La tupla di accesso contiene un'entità non supportata da Policy Simulator. |
UNIMPLEMENTED_CONDITION |
12 | La tupla di accesso contiene una condizione non supportata da Policy Simulator. Questo tipo di errore è associato a
modifiche all'accesso UNKNOWN_CONDITIONAL . |
LOG_SIZE_TOO_LARGE |
8 | La risorsa è associata a troppi log di accesso, quindi Policy Simulator non è riuscito a eseguire la simulazione. Per ulteriori dettagli, consulta Dimensioni massime della riproduzione dei log nella pagina dei concetti di Policy Simulator. |
UNSUPPORTED_RESOURCE |
12 |
Le modifiche alla policy di autorizzazione proposte riguardano le autorizzazioni associate a 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 assistenza per i tipi di risorse nella pagina dei concetti di Policy Simulator. |
REST
Nei risultati della simulazione dell'API REST, gli errori possono essere visualizzati in due posizioni:
- Il campo
replayResult.error
: se il tentativo di riproduzione non è andato a buon fine, Policy Simulatory segnala l'errore nel camporeplayResult.error
. Se un risultato di riproduzione contiene questo campo, non contiene un campodiff
. - Il campo
replayResult.diff.accessDiff.policy-type.errors
in cui policy-type èbaseline
osimulated
. Se il tentativo di riproduzione è andato a buon fine, ma il risultato èUNKNOWN_INFO_DENIED
oUNKNOWN_CONDITIONAL
, Policy Simulator indica il motivo per cui il risultato era 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 riuscire, contatta policy-simulator-feedback@google.com. |
INVALID_ACCESS_TUPLE |
3 | Policy Simulator non è riuscito a riprodurre il tentativo di accesso perché conteneva un'autorizzazione, un nome risorsa o un principal non validi. |
OUT_OF_RANGE_GROUP_TOO_LARGE |
11 | Policy Simulator non è riuscito a valutare l'appartenenza del principal al gruppo perché il gruppo ha troppi sottogruppi. Questo errore è associato a
modifiche all'accesso UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_GROUP_MEMBERSHIP |
7 | Policy Simulator
non è riuscito a valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per visualizzare l'appartenenza al gruppo. Questo errore è associato a
modifiche all'accesso UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_IAM_POLICY |
7 | Policy Simulator
non è riuscito a valutare l'accesso di un utente perché il chiamante non dispone dell'autorizzazione
per recuperare una policy di autorizzazione. Questo tipo di errore è associato a
modifiche all'accesso UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_IAM_ROLE |
7 | Policy Simulator
non è riuscito a 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
modifiche all'accesso UNKNOWN_INFO_DENIED . |
PERMISSION_DENIED_ON_PARENT_IAM_POLICY |
7 | Policy Simulator
non è riuscito a 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à non supportato da Policy Simulator. |
UNIMPLEMENTED_MEMBER |
12 | La tupla di accesso contiene un'entità non supportata da Policy Simulator. |
UNIMPLEMENTED_CONDITION |
12 | La tupla di accesso contiene una condizione non supportata da Policy Simulator. Questo tipo di errore è associato a
modifiche all'accesso UNKNOWN_CONDITIONAL . |
LOG_SIZE_TOO_LARGE |
8 | La risorsa è associata a troppi log di accesso, quindi Policy Simulator non è riuscito a eseguire la simulazione. Per ulteriori dettagli, consulta la sezione Dimensioni massime della riproduzione dei log nella pagina dei concetti di Policy Simulator. |
UNSUPPORTED_RESOURCE |
12 |
Le modifiche alla policy di autorizzazione proposte riguardano le autorizzazioni associate a 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 assistenza per i tipi di risorse nella pagina dei concetti di Policy Simulator. |
Applica una modifica alla policy simulata
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 il comando set-iam-policy
e fornisci un percorso al file JSON contenente il criterio di autorizzazione simulato che vuoi applicare:
gcloud resource-type set-iam-policy resource-id filepath
Fornisci i seguenti valori:
resource-type
: il tipo di risorsa di cui vuoi aggiornare la policy di autorizzazione. Ad esempio,projects
.resource-id
: l'ID della risorsa di cui vuoi aggiornare la policy di autorizzazione. Ad esempio,my-project
.filepath
: il percorso di un file che contiene la policy di autorizzazione aggiornata.
La risposta contiene la policy di autorizzazione aggiornata. Se consideri le policy di autorizzazione IAM come codice e le memorizzi in un sistema di controllo delle versioni, devi memorizzare la policy di autorizzazione restituita da gcloud CLI, non il file JSON che contiene la policy di autorizzazione simulata.
REST
Imposta il criterio di autorizzazione proposto come nuovo criterio di autorizzazione della risorsa.
Per impostare la policy di autorizzazione nella richiesta come nuova policy di autorizzazione del progetto, utilizza il metodo
projects.setIamPolicy
dell'API Resource Manager.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: il tuo ID progetto Google Cloud . Gli ID progetto sono stringhe alfanumeriche, comemy-project
.POLICY
: una rappresentazione JSON della policy che vuoi impostare. Per ulteriori informazioni sul formato di un criterio, consulta la documentazione di riferimento sui criteri.
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 di queste opzioni:
La risposta contiene la policy di autorizzazione aggiornata.
Salvare i risultati della simulazione
Se utilizzi la gcloud CLI, puoi salvare i 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
quando esegui la 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 al comando replay-recent-access
quando esegui la 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
: Un nome per il file esportato.
Se vuoi, puoi aggiungere altri campi, ad esempio errors[]
, al
flag --flatten
. L'aggiunta di campi al flag --flatten
consente di elencare gli elementi in questi campi 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 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: principal, permission, resource, access change, baseline
access state e simulated access state.
Per ulteriori informazioni sulla formattazione con gcloud CLI, vedi formati.
Passaggi successivi
- Scopri come risolvere i problemi di accesso per i principal esistenti.
- Scopri di più sull'applicazione del principio del privilegio minimo con i suggerimenti sui ruoli.