Questa pagina spiega come ripristinare una versione precedente di una policy di autorizzazione IAM dopo aver apportato modifiche involontarie o eliminazioni accidentali.
Per ripristinare una policy IAM precedente, trova l'ultima setIamPolicy riuscita prima della modifica o dell'eliminazione e utilizzala per ripristinare la policy.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per ripristinare una precedente policy di autorizzazione, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto, nella cartella o nell'organizzazione:
-
Ripristina le policy di autorizzazione con
setIamPolicy:- Visualizzatore log (
roles/logging.viewer) - Amministratore dell'organizzazione (
roles/resourcemanager.organizationAdmin) - Proprietario (
roles/owner)
- Visualizzatore log (
-
Ripristina le policy di autorizzazione con Cloud Asset Inventory:
Proprietario asset cloud (
roles/cloudasset.owner)
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Quando ripristini le policy di autorizzazione consetIamPolicy, il ruolo Amministratore dell'organizzazione è necessario per le policy di autorizzazione a livello di organizzazione e cartella, mentre il ruolo Proprietario è necessario per le policy di autorizzazione a livello di progetto.
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Ripristina una policy di autorizzazione con l'ultima istanza setIamPolicy riuscita
Per ripristinare una policy di autorizzazione a una versione precedente, puoi esaminare i log di controllo
dell'ultima istanza riuscita di setIamPolicy prima della modifica o
dell'eliminazione e utilizzare le informazioni di quell'istanza per ripristinare la policy. Questo
processo prevede i seguenti passaggi:
- Identifica l'ultima istanza
setIamPolicyriuscita per la policy di autorizzazione e recuperainsertId. - Utilizza
insertIddalla richiestasetIamPolicyper esportare la policy di autorizzazione in formato YAML o JSON. - Modifica il file di output in modo che corrisponda alla precedente policy di autorizzazione funzionante e sovrascrivi la policy di autorizzazione attuale.
Identifica l'ultima istanza riuscita di setIamPolicy e recupera insertId
Per identificare l'ultima istanza riuscita di setIamPolicy e recuperare il
isertId, utilizza la console Cloud de Confiance o gcloud CLI per esaminare i log di controllo.
Console
Nella console Cloud de Confiance , vai alla pagina Esplora log.
Nell'editor di query, inserisci una delle seguenti query. Queste query cercano nei tuoi audit log le voci che contengono
SetIamPolicynel campomethodNamediprotoPayload:Per ottenere i log di tutte le modifiche alla policy di autorizzazione apportate a una risorsa, utilizza la seguente query:
logName="RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" protoPayload.methodName:SetIamPolicy
Per ottenere i log delle modifiche ai criteri di autorizzazione che coinvolgono un utente o un account di servizio specifico, utilizza la seguente query:
logName="RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity" protoPayload.methodName:SetIamPolicy protoPayload.serviceData.policyDelta.bindingDeltas.member:"EMAIL_ADDRESS"
Sostituisci quanto segue:
RESOURCE_TYPE: Il tipo di risorsa per cui stai elencando gli audit log. I valori validi sonoprojects,foldersoorganizations.RESOURCE_ID: l'ID progetto, cartella o organizzazione Cloud de Confiance . Gli ID progetto sono alfanumerici, ad esempiomy-project. Gli ID cartella e organizzazione sono numerici, ad esempio123456789012.EMAIL_ADDRESS: l'indirizzo email dell'utente o delaccount di serviziot, ad esempioexample-service-account@example-project.s3ns.iam.gserviceaccount.com.
Per eseguire la query, fai clic su Esegui query.
Utilizza il selettore Sequenza temporale per specificare l'intervallo di tempo appropriato per la query. In alternativa, puoi aggiungere un'espressione timestamp direttamente all'editor di query. Per saperne di più, vedi Visualizzare i log per intervallo di tempo.
Copia
insertIddall'ultima istanza riuscita disetIamPolicyprima della modifica o dell'eliminazione.
gcloud
Il comando
gcloud logging read
legge le voci di log.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
-
RESOURCE_TYPE: Il tipo di risorsa per cui stai elencando i log di controllo. Utilizza il valoreprojects,foldersoorganizations. -
RESOURCE_ID: l'ID Cloud de Confiance del progetto, dell'organizzazione o della cartella. Gli ID progetto sono stringhe alfanumeriche, comemy-project. Gli ID cartella e organizzazione sono numerici, ad esempio123456789012. -
TIME_PERIOD: il periodo di tempo per cui stai elencando i log di controllo. Le voci restituite non sono precedenti a questo valore. Se non specificato, il valore predefinito è1d. Per informazioni sui formati di ora, consulta gcloud topic datetimes. -
RESOURCE_TYPE_SINGULAR: Il tipo di risorsa per cui stai elencando i log di controllo. Utilizza il valoreproject,folderoorganization.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud logging read \ 'logName:RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity AND protoPayload.methodName=SetIamPolicy' \ --freshness=TIME_PERIOD \ --RESOURCE_TYPE_SINGULAR=RESOURCE_ID
Windows (PowerShell)
gcloud logging read ` 'logName:RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity AND protoPayload.methodName=SetIamPolicy' ` --freshness=TIME_PERIOD ` --RESOURCE_TYPE_SINGULAR=RESOURCE_ID
Windows (cmd.exe)
gcloud logging read ^ 'logName:RESOURCE_TYPE/RESOURCE_ID/logs/cloudaudit.googleapis.com%2Factivity AND protoPayload.methodName=SetIamPolicy' ^ --freshness=TIME_PERIOD ^ --RESOURCE_TYPE_SINGULAR=RESOURCE_ID
Copia insertId dall'ultima istanza riuscita di setIamPolicy prima
della modifica o dell'eliminazione.
Utilizza insertId per esportare la policy di autorizzazione
Utilizza insertId recuperato dall'ultima istanza riuscita di setIamPolicy per eseguire il seguente comando in gcloud CLI per esportare la policy di autorizzazione in formato JSON o YAML. Puoi esportare le policy di autorizzazione
per organizzazioni e progetti.
Livello dell'organizzazione
Il comando
gcloud logging read
legge le voci di log.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
-
ORGANIZATION_ID: l'organizzazione per cui vuoi visualizzare ed esportare la policy di autorizzazione. -
INSERT_ID: ilinsertIddella richiestasetIamPolicy. -
FORMAT: il formato della risposta. Utilizzajsonoyaml. -
TIME_PERIOD: Il periodo di tempo per cui stai elencando i log di controllo. Le voci restituite non sono precedenti a questo valore. Se non specificato, il valore predefinito è1d. Per informazioni sui formati di ora, consulta gcloud topic datetimes. -
OUTPUT_FILE: il nome e l'estensione del file di output. Ad esempio,previous_policy.jsonoprevious_policy.yaml.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud logging read organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com insertId="INSERT_ID"' --organization=ORGANIZATION_ID --format="FORMAT(protoPayload.request.policy)" --freshness=TIME_PERIOD > OUTPUT_FILE
Windows (PowerShell)
gcloud logging read organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com insertId="INSERT_ID"' --organization=ORGANIZATION_ID --format="FORMAT(protoPayload.request.policy)" --freshness=TIME_PERIOD > OUTPUT_FILE
Windows (cmd.exe)
gcloud logging read organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com insertId="INSERT_ID"' --organization=ORGANIZATION_ID --format="FORMAT(protoPayload.request.policy)" --freshness=TIME_PERIOD > OUTPUT_FILE
Livello progetto
Il comando
gcloud logging read
legge le voci di log.
Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
-
INSERT_ID: ilinsertIddella richiestasetIamPolicy. -
TIME_PERIOD: Il periodo di tempo per cui stai elencando i log di controllo. Le voci restituite non sono precedenti a questo valore. Se non specificato, il valore predefinito è1d. Per informazioni sui formati di ora, consulta gcloud topic datetimes. -
FORMAT: il formato della risposta. Utilizzajsonoyaml. -
OUTPUT_FILE: il nome del file in cui vuoi salvare l'output, ad esempioprevious_policy.jsonoprevious_policy.yaml.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud logging read \ 'protoPayload.methodName="SetIamPolicy" AND insertId="INSERT_ID"' \ --freshness=TIME_PERIOD \ --format="FORMAT(protoPayload.request.policy)" > OUTPUT_FILE
Windows (PowerShell)
gcloud logging read ` 'protoPayload.methodName="SetIamPolicy" AND insertId="INSERT_ID"' ` --freshness=TIME_PERIOD ` --format="FORMAT(protoPayload.request.policy)" > OUTPUT_FILE
Windows (cmd.exe)
gcloud logging read ^ 'protoPayload.methodName="SetIamPolicy" AND insertId="INSERT_ID"' ^ --freshness=TIME_PERIOD ^ --format="FORMAT(protoPayload.request.policy)" > OUTPUT_FILE
Modificare il file di output e ignorare la policy di autorizzazione corrente
Modifica il file di output nei seguenti modi e sostituisci la policy di autorizzazione corrente.
Modifica il file di output in modo programmatico o utilizzando un editor di testo eliminando le seguenti righe:
--- protoPayload: request: policy:Il file risultante inizia con
auditConfigs:.Recupera la policy di autorizzazione attuale.
gcloud
Il comando
gcloud get-iam-policyrecupera il criterio di autorizzazione di un progetto, una cartella o un'organizzazione.Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
-
RESOURCE_TYPE: Il tipo di risorsa per cui vuoi ottenere la policy di autorizzazione. I valori validi sonoprojects,resource-manager foldersoorganizations. -
RESOURCE_ID: l'ID progetto, cartella o organizzazione Cloud de Confiance . Gli ID progetto sono alfanumerici, ad esempiomy-project. Gli ID cartella e organizzazione sono numerici, ad esempio123456789012. -
FORMAT: Il formato desiderato per la policy di autorizzazione. Utilizzajsonoyaml. -
PATH: il percorso di un nuovo file di output per la policy consenti.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH
Windows (PowerShell)
gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH
Windows (cmd.exe)
gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH
Ad esempio, il seguente comando recupera la policy di autorizzazione per il progetto
my-projecte la salva nella tua home directory in formato JSON:gcloud projects get-iam-policy my-project --format json > ~/policy.json
C#
Per eseguire l'autenticazione in Resource Manager, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.
Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta Librerie client di Resource Manager.
L'esempio seguente mostra come ottenere la policy di autorizzazione per un progetto. Per scoprire come ottenere la policy di autorizzazione di una cartella o di un'organizzazione, consulta la documentazione della libreria client Resource Manager per il tuo linguaggio di programmazione.
Java
Per eseguire l'autenticazione in Resource Manager, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.
Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta Librerie client di Resource Manager.
L'esempio seguente mostra come ottenere la policy di autorizzazione per un progetto. Per scoprire come ottenere la policy di autorizzazione di una cartella o di un'organizzazione, consulta la documentazione della libreria client Resource Manager per il tuo linguaggio di programmazione.
Python
Per eseguire l'autenticazione in Resource Manager, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.
Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta Librerie client di Resource Manager.
L'esempio seguente mostra come ottenere la policy di autorizzazione per un progetto. Per scoprire come ottenere la policy di autorizzazione di una cartella o di un'organizzazione, consulta la documentazione della libreria client Resource Manager per il tuo linguaggio di programmazione.
REST
Il metodo
get-iam-policydell'API Resource Manager recupera la policy di autorizzazione di un progetto, una cartella o un'organizzazione.Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
API_VERSION: la versione dell'API da utilizzare. Per progetti e organizzazioni, utilizzav1. Per le cartelle, utilizzav2.RESOURCE_TYPE: Il tipo di risorsa di cui vuoi gestire la policy. Utilizza il valoreprojects,foldersoorganizations.RESOURCE_ID: l'ID Cloud de Confiance del progetto, dell'organizzazione o della cartella. Gli ID progetto sono stringhe alfanumeriche, comemy-project. Gli ID cartella e organizzazione sono numerici, ad esempio123456789012.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/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene la policy di autorizzazione della risorsa. Ad esempio:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }Salva la risposta in un file del tipo appropriato (
jsonoyaml).-
Copia il valore di
etagdalla policy di autorizzazione corrente.Sostituisci il valore
etagnel file di output con il valoreetagche hai copiato dal criterio di autorizzazione corrente. Iletagnel file di output deve corrispondere aletagattuale per avviare una nuova richiestasetIamPolicy. Assicurati che la spaziatura dell'etag non sia cambiata nel file di output.Rivedi il file per assicurarti che corrisponda alla precedente policy di autorizzazione funzionante. Potresti valutare la possibilità di creare un nuovo progetto e applicare la policy per assicurarti che funzioni come previsto.
Imposta la policy di autorizzazione in modo che sostituisca quella attuale con quella nel file di output che hai creato.
gcloud
Il comando
gcloud set-iam-policyimposta la policy nella richiesta come nuova policy di autorizzazione per il progetto, la cartella o l'organizzazione.Prima di utilizzare i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
-
RESOURCE_TYPE: Il tipo di risorsa per cui vuoi impostare la policy di autorizzazione. I valori validi sonoprojects,resource-manager foldersoorganizations. -
RESOURCE_ID: l'ID progetto, cartella o organizzazione Cloud de Confiance . Gli ID progetto sono alfanumerici, ad esempiomy-project. Gli ID cartella e organizzazione sono numerici, ad esempio123456789012. -
PATH: il percorso di un file che contiene la nuova policy di autorizzazione.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH
Windows (PowerShell)
gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH
Windows (cmd.exe)
gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH
La risposta contiene la policy di autorizzazione aggiornata.
Ad esempio, il seguente comando imposta la policy di autorizzazione archiviata in
policy.jsoncome policy di autorizzazione per il progettomy-project:gcloud projects set-iam-policy my-project ~/policy.json
C#
Java
Per eseguire l'autenticazione in Resource Manager, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.
Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta Librerie client di Resource Manager.
L'esempio seguente mostra come impostare la policy di autorizzazione per un progetto. Per scoprire come impostare la policy di autorizzazione di una cartella o di un'organizzazione, consulta la documentazione della libreria client Resource Manager per il tuo linguaggio di programmazione.
Python
Per eseguire l'autenticazione in Resource Manager, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Prima di iniziare.
Per scoprire come installare e utilizzare la libreria client per Resource Manager, consulta Librerie client di Resource Manager.
L'esempio seguente mostra come impostare la policy di autorizzazione per un progetto. Per scoprire come impostare la policy di autorizzazione di una cartella o di un'organizzazione, consulta la documentazione della libreria client Resource Manager per il tuo linguaggio di programmazione.
REST
Il metodo
set-iam-policydell'API Resource Manager imposta il criterio nella richiesta come nuovo criterio di autorizzazione per il progetto, la cartella o l'organizzazione.Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
API_VERSION: la versione dell'API da utilizzare. Per progetti e organizzazioni, utilizzav1. Per le cartelle, utilizzav2.RESOURCE_TYPE: Il tipo di risorsa di cui vuoi gestire la policy. Utilizza il valoreprojects,foldersoorganizations.RESOURCE_ID: l'ID Cloud de Confiance del progetto, dell'organizzazione o della cartella. Gli ID progetto sono stringhe alfanumeriche, comemy-project. Gli ID cartella e organizzazione sono numerici, ad esempio123456789012.-
POLICY: una rappresentazione JSON della policy che vuoi impostare. Per ulteriori informazioni sul formato di una policy, consulta il riferimento alle policy.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_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.
-