Questo argomento descrive come aggiungere, modificare e rimuovere le associazioni di ruoli condizionali nei criteri di autorizzazione di Identity and Access Management (IAM).
Prima di iniziare
Enable the IAM API.
Leggi la panoramica delle condizioni IAM per comprendere le nozioni di base delle associazioni di ruoli condizionali IAM.
Consulta il riferimento agli attributi per scoprire i diversi attributi condizione che possono essere utilizzati in un'espressione.
Ruoli obbligatori
Per gestire le associazioni di ruolo condizionali nel criterio di autorizzazione di una risorsa, devi disporre delle autorizzazioni per recuperare la risorsa e per recuperare e impostare il criterio di autorizzazione per la risorsa. Queste autorizzazioni hanno il seguente formato, dove SERVICE
è il nome del servizio proprietario della risorsa e RESOURCE_TYPE
è il nome del tipo di risorsa a cui vuoi gestire l'accesso:
SERVICE.RESOURCE_TYPE.get
SERVICE.RESOURCE_TYPE.getIamPolicy
SERVICE.RESOURCE_TYPE.setIamPolicy
Ad esempio, per gestire le associazioni condizionali dei ruoli nel criterio di autorizzazione di un progetto, devi disporre delle seguenti autorizzazioni:
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.setIamPolicy
Per ottenere le autorizzazioni necessarie, chiedi all'amministratore di concederti una
predefinito o personalizzato che includa le autorizzazioni. Ad esempio, l'amministratore potrebbe concederti il ruolo Amministratore della sicurezza (roles/iam.securityAdmin
), che include le autorizzazioni per recuperare quasi tutte le risorse Google Cloud e gestire i relativi criteri di autorizzazione.
Aggiungere un'associazione di ruoli condizionale a un criterio
È possibile aggiungere associazioni di ruoli condizionali ai criteri di autorizzazione nuovi o esistenti per controllare ulteriormente l'accesso alle risorse Google Cloud. In questa sezione viene illustrato come aggiungere una semplice condizione basata sul tempo a un modello di autorizzazione esistente utilizzando la console Google Cloud, Google Cloud CLI e l'API REST.
Per aggiungere un'associazione di ruoli condizionale a un criterio di autorizzazione esistente:
Console
Nella console Google Cloud, vai alla pagina IAM.
Nell'elenco delle entità, individua l'entità che ti interessa e fai clic sul pulsante
.Nel riquadro Modifica autorizzazioni, individua il ruolo per cui vuoi configurare una condizione. Quindi, in Condizione IAM (facoltativa), fai clic su Aggiungi IAM. .
Nel riquadro Modifica condizione, inserisci un titolo e una descrizione facoltativa per la condizione.
Puoi aggiungere un'espressione di condizione utilizzando il Generatore di condizioni o l'Editor delle condizioni. Il generatore di condizioni fornisce un'interfaccia a riga di comando per selezionare il tipo di condizione, l'operatore e altri i dettagli applicabili sull'espressione. L'editor delle condizioni fornisce un'interfaccia basata su testo per inserire manualmente un'espressione utilizzando la sintassi CEL.
Generatore di condizioni:
- Dal menu a discesa Tipo di condizione, seleziona Accesso con scadenza.
- Dal menu a discesa Operatore, seleziona per.
- Nel menu a discesa Ora, fai clic sul pulsante per selezionare una data e un intervallo di tempo.
- Fai clic su Salva per applicare la condizione.
- Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare la norma di autorizzazione.
Editor condizioni:
Fai clic sulla scheda Editor delle condizioni e inserisci la seguente espressione (sostituendo il timestamp con il tuo):
request.time < timestamp("2019-12-31T12:00:00.000Z")
Dopo aver inserito l'espressione, puoi scegliere di convalidare il valore la sintassi CEL facendo clic su Esegui Linter sopra la casella di testo nella in alto a destra.
Fai clic su Salva per applicare la condizione.
Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva da il riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.
gcloud
I criteri di autorizzazione vengono impostati utilizzando il pattern di read-modify-write.
Esegui il comando gcloud projects get-iam-policy
per ottenere
l'attuale criterio di autorizzazione per il progetto. Nell'esempio seguente, la versione JSON del criterio di autorizzazione viene scaricata in un percorso sul disco.
Comando:
gcloud projects get-iam-policy project-id --format json > file-path
Viene scaricato il formato JSON del criterio di autorizzazione:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:travis@example.com" ], "role": "roles/iam.securityReviewer" } ], "etag": "BwWKmjvelug=", "version": 1 }
Tieni presente l'attuale version
del criterio di autorizzazione, che è
1
. Per configurare il criterio di autorizzazione con accesso con scadenza, aggiungi la seguente espressione di condizione evidenziata (sostituendo il timestamp con il tuo). L'interfaccia a riga di comando gcloud aggiorna la versione automaticamente:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:travis@example.com" ], "role": "roles/iam.securityReviewer", "condition": { "title": "Expires_2019", "description": "Expires at noon on 2019-12-31", "expression": "request.time < timestamp('2019-12-31T12:00:00Z')" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Quindi, imposta il nuovo criterio di autorizzazione eseguendo il comando
Comando gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id file-path
Il nuovo criterio di autorizzazione viene applicato e l'associazione del ruolo di travis@example.com
scadono all'ora specificata.
REST
Utilizza il pattern di lettura, modifica e scrittura per consentire l'accesso fino a quando in un determinato momento.
Prima di tutto, leggi il criterio di autorizzazione per il progetto:
Il metodo
projects.getIamPolicy
dell'API Resource Manager recupera il criterio di autorizzazione di un progetto.
Prima di utilizzare i dati della richiesta, apporta 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 restituire. Le richieste devono specificare la versione del criterio più recente, ovvero la versione del criterio 3. Per maggiori dettagli, consulta la sezione Specificare una versione delle norme al momento dell'ottenimento di una norma.
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:travis@example.com" ] } ] }
Tieni presente l'attuale version
del criterio di autorizzazione, che è
1
.
Successivamente, modifica il criterio di autorizzazione in modo che consenta l'accesso fino a quando
volta. Assicurati di modificare il campo version
in modo che abbia il valore
3
:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "condition": { "title": "Expires_2019", "description": "Expires at noon on 2019-12-31", "expression": "request.time < timestamp('2019-12-31T12:00:00Z')" }, "members": [ "user:travis@example.com" ] } ] }
Infine, scrivi il criterio di autorizzazione aggiornato:
L'API Resource Manager
projects.setIamPolicy
imposta il criterio di autorizzazione nella richiesta come nuovo criterio di autorizzazione del progetto.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Corpo JSON della richiesta:
{ "policy": { "version": 3, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "user:travis@example.com" ], "condition": { "title": "Expires_July_1_2020", "description": "Expires on July 1, 2020", "expression": "request.time < timestamp('2020-07-01T00:00:00.000Z')" } } ] } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Modificare un'associazione di ruoli condizionali esistente
Dopo aver creato una associazione di ruoli condizionale, puoi modificare l'espressione condizione in qualsiasi momento. Questa sezione mostra come aggiornare una condizione basata sul tempo in un criterio di autorizzazione esistente utilizzando la console Google Cloud, Google Cloud CLI e l'API REST.
Per modificare un'associazione di ruoli condizionale in un criterio di autorizzazione esistente:
Console
Nella console Google Cloud, vai alla pagina IAM.
Dall'elenco delle entità, individua quella che ti interessa e fai clic sulla
.Nel riquadro Modifica autorizzazioni, individua il ruolo per cui vuoi configurare una condizione. Quindi, in Condizione IAM (facoltativa), fai clic sul nome del condizione esistente per modificarla.
Nel riquadro Modifica condizione, puoi mantenere o aggiornare la condizione esistente titolo e descrizione della condizione.
Puoi modificare l'espressione della condizione esistente o aggiungerne una nuova utilizzando il Generatore di condizioni o l'Editor delle condizioni. Il generatore di condizioni fornisce un'interfaccia interattiva per selezionare il tipo di condizione, l'operatore e altri dettagli applicabili all'espressione. La l'editor delle condizioni fornisce un'interfaccia di testo per inserire manualmente un utilizzando la sintassi CEL.
Generatore di condizioni:
- Aggiungi una nuova espressione della condizione o modifica la condizione esistente un'espressione di base.
- Fai clic su Salva per applicare la condizione.
- Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare la norma di autorizzazione.
Editor condizioni:
- Fai clic sulla scheda Editor delle condizioni e aggiungi una nuova expressione di condizione o modifica quella esistente.
- Dopo aver inserito l'espressione, puoi scegliere di convalidare il valore la sintassi CEL facendo clic su Esegui Linter sopra la casella di testo nella in alto a destra.
- Fai clic su Salva per applicare la condizione.
- Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva da il riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.
gcloud
I criteri Consenti vengono impostati utilizzando il pattern lettura, modifica e scrittura.
Esegui il comando gcloud projects get-iam-policy
per ottenere
l'attuale criterio di autorizzazione per il progetto. Nell'esempio seguente, la versione JSON del criterio di autorizzazione viene scaricata in un percorso sul disco.
Comando:
gcloud projects get-iam-policy project-id --format json > file-path
Viene scaricato il formato JSON del criterio di autorizzazione:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" } } ], "etag": "BwWKmjvelug=", "version": 3 }
In questo esempio, aggiorneremo title
,
description
e valori di timestamp nell'espressione da modificare
la durata della condizione di accesso pianificata. Aggiorna la seguente
parte evidenziata della condizione (sostituendo i valori con i tuoi):
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_5_months", "description": "Expires in 5 months on 2020-01-12", "expression": "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Successivamente, imposta il nuovo criterio di autorizzazione eseguendo il comando
gcloud projects set-iam-policy
.
gcloud projects set-iam-policy project-id file-path
Il criterio di autorizzazione aggiornato viene applicato e l'associazione del ruolo di fatima@example.com
scade al nuovo orario.
REST
Utilizza il pattern lettura, modifica e scrittura per modificare la condizione dell'associazione di ruoli.
Prima di tutto, leggi il criterio di autorizzazione per il progetto:
Il metodo
projects.getIamPolicy
dell'API Resource Manager recupera il criterio di autorizzazione di un progetto.
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
.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": 3 } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" }, "members": [ "user:fatima@example.com" ] } ] }
Successivamente, modifica l'associazione condizionale dei ruoli nel criterio di autorizzazione. In questo Ad esempio, aggiorneremo i valori del timestamp per modificare la durata una condizione di accesso pianificato. Aggiorna la seguente parte evidenziata dell'espressione della condizione (sostituendo il timestamp con il tuo):
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_5_months", "description": "Expires in 5 months on 2020-01-12", "expression": "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')" }, "members": [ "user:fatima@example.com" ] } ] }
Infine, scrivi il criterio di autorizzazione aggiornato:
L'API Resource Manager
projects.setIamPolicy
imposta il criterio di autorizzazione nella richiesta come nuovo criterio di autorizzazione del progetto.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Corpo JSON della richiesta:
{ "policy": { "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_5_months", "description": "Expires in 5 months on 2020-01-12", "expression": "request.time > timestamp('2019-07-12T07:00:00.000Z') && request.time < timestamp('2020-01-12T07:00:00.000Z')" }, "members": [ "user:fatima@example.com" ], } ] } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Rimuovere una condizione da un'associazione di ruoli
La rimozione di una condizione da un'associazione di ruolo non comporta la revoca del ruolo. Invece, consente a tutte le entità in quel ruolo di associazione di utilizzare le autorizzazioni nel ruolo incondizionatamente.
Questa sezione mostra come rimuovere una condizione basata sul tempo in un criterio di autorizzazione utilizzando la console Google Cloud, GCloud CLI e l'API REST.
Per rimuovere una condizione da un'associazione di ruoli in un criterio di autorizzazione:
Console
Nella console Google Cloud, vai alla pagina IAM.
Dall'elenco delle entità, individua quella che ti interessa e fai clic sulla Pulsante
.Nel riquadro Modifica autorizzazioni, individua l'associazione del ruolo che ti interessa. Poi In Condizione IAM (facoltativa), fai clic sul nome di una condizione esistente.
Nel riquadro Modifica condizione, fai clic sul pulsante
per rimuovere la condizione. Ti verrà chiesto di confermare l'eliminazione della condizione.Una volta chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva dalla Modifica autorizzazioni per aggiornare il criterio di autorizzazione.
gcloud
I criteri Consenti vengono impostati utilizzando il pattern lettura, modifica e scrittura.
Esegui il comando gcloud projects get-iam-policy
per ottenere
l'attuale criterio di autorizzazione per il progetto. Nell'esempio seguente, il codice JSON
del criterio di autorizzazione viene scaricata in un percorso su disco.
Comando:
gcloud projects get-iam-policy project-id --format json > file-path
Viene scaricato il formato JSON del criterio di autorizzazione:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" } } ], "etag": "BwWKmjvelug=", "version": 3 }
Per rimuovere l'associazione dei ruoli condizionali dal criterio di autorizzazione, rimuovi il blocco condition
come mostrato di seguito:
{ "bindings": [ { "members": [ "user:project-owner@example.com" ], "role": "roles/owner" }, { "members": [ "user:fatima@example.com" ], "role": "roles/bigquery.dataViewer", } ], "etag": "BwWKmjvelug=", "version": 3 }
Tieni presente che version
è ancora impostato su 3
, nonostante
il fatto che le associazioni di ruoli incondizionati richiedono solo una versione
Criterio di autorizzazione 1
. Ti consigliamo di utilizzare sempre
numero di versione più elevato durante l'impostazione di un criterio di autorizzazione, sia per il ruolo condizionale
e associazioni di ruoli incondizionali. Per ulteriori informazioni, consulta i requisiti delle versioni. L'interfaccia a riga di comando gcloud aggiorna automaticamente il numero di versione per il criterio di autorizzazione.
Quindi, imposta il criterio di autorizzazione aggiornato eseguendo il comando
Comando gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id file-path
Viene applicato il criterio di autorizzazione aggiornato, rimuovendo l'associazione di ruoli condizionale per
fatima@example.com
. L'associazione dei ruoli non scadrà più.
REST
Utilizza il pattern lettura, modifica e scrittura per rimuovere la condizione dell'associazione di ruoli.
Innanzitutto, leggi il criterio di autorizzazione per il progetto:
L'API Resource Manager
projects.getIamPolicy
ottiene il criterio di autorizzazione di un progetto.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": 3 } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "condition": { "title": "Duration_3_months", "description": "Expires in 3 months on 2019-10-12", "expression": "request.time > timestamp(\"2019-07-12T07:00:00.000Z\") && request.time < timestamp(\"2019-10-12T07:00:00.000Z\")" }, "members": [ "user:fatima@example.com" ] } ] }
Successivamente, modifica il criterio di autorizzazione rimuovendo l'associazione del ruolo condizionale:
{ "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "user:fatima@example.com" ] } ] }
Tieni presente che version
è ancora impostato su 3
, nonostante
il fatto che le associazioni di ruoli incondizionati richiedono solo una versione
Criterio di autorizzazione 1
. Ti consigliamo di utilizzare sempre il numero di versione più alto quando imposti un criterio di autorizzazione, sia per le associazioni di ruoli condizionali sia per quelle incondizionali. Consulta:
requisiti della versione per ulteriori informazioni.
Infine, scrivi il criterio di autorizzazione aggiornato:
L'API Resource Manager
projects.setIamPolicy
imposta il criterio di autorizzazione nella richiesta come nuovo criterio di autorizzazione del progetto.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: il tuo progetto Google Cloud ID. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy
Corpo JSON della richiesta:
{ "policy": { "etag": "BwWKmjvelug=", "version": 3, "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "user:fatima@example.com" ] } ] } }
Per inviare la richiesta, espandi una delle seguenti opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Passaggi successivi
- Riferimento degli attributi per le condizioni IAM
- Tipi di risorse che accettano associazioni di ruoli condizionali