Questo argomento descrive come impostare l'accesso temporaneo (con scadenza) alle risorse Google Cloud utilizzando i binding dei ruoli condizionali nei criteri di autorizzazione. Utilizzando gli attributi data/ora, puoi applicare controlli basati sul tempo quando accedi a una determinata risorsa. Ad esempio, puoi concedere l'accesso temporaneo a un progetto che inizia e termina a un'ora specificata o su base pianificata e ricorrente.
Prima di iniziare
- Leggi la panoramica delle condizioni per comprendere le basi delle associazioni di ruoli condizionali di Identity and Access Management (IAM).
- Esamina gli attributi data/ora che possono essere utilizzati in un'espressione di condizione. Gli attributi di data/ora sono riconosciuti da tutti i servizi Google Cloud .
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire le associazioni di ruoli condizionali, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per gestire l'accesso ai progetti:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) sul progetto -
Per gestire l'accesso alle cartelle:
Amministratore cartella (
roles/resourcemanager.folderAdmin
) nella cartella -
Per gestire l'accesso a progetti, cartelle e organizzazioni:
Amministratore dell'organizzazione (
roles/resourcemanager.organizationAdmin
) nell'organizzazione -
Per gestire l'accesso a quasi tutte le risorse Google Cloud :
Amministratore della sicurezza (
roles/iam.securityAdmin
) nel progetto, nella cartella o nell'organizzazione di cui vuoi gestire l'accesso alle risorse
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 gestire le associazioni di ruoli condizionali. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per gestire le associazioni di ruoli condizionali sono necessarie le seguenti autorizzazioni:
-
Per gestire l'accesso ai progetti:
-
resourcemanager.projects.getIamPolicy
sul progetto -
resourcemanager.projects.setIamPolicy
sul progetto
-
-
Per gestire l'accesso alle cartelle:
-
resourcemanager.folders.getIamPolicy
nella cartella -
resourcemanager.folders.setIamPolicy
nella cartella
-
-
Per gestire l'accesso alle organizzazioni:
-
resourcemanager.organizations.getIamPolicy
sull'organizzazione -
resourcemanager.organizations.setIamPolicy
sull'organizzazione
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Concedere l'accesso temporaneo
Un binding del ruolo condizionale può essere utilizzato per concedere l'accesso a una risorsa per un periodo di tempo limitato, garantendo che un utente non possa più accedere alla risorsa dopo la data e l'ora di scadenza specificate.
Considera il seguente scenario: le norme di sicurezza delle informazioni dell'azienda ExampleCo sottolineano che nessun dipendente deve avere accesso illimitato alle risorse nei progetti di produzione. In precedenza, gli amministratori impostavano ed eliminavano manualmente i binding dei ruoli IAM per soddisfare le esigenze di emergenza degli ingegneri. Per ridurre il sovraccarico amministrativo, ExampleCo può invece configurare un binding di ruolo condizionale con una condizione di data/ora per impostare una data di fine per il binding.
Per concedere l'accesso temporaneo a una risorsa del progetto:
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. Poi, in Condizione IAM (facoltativo), fai clic su Aggiungi condizione IAM.
Nel riquadro Modifica condizione, inserisci un titolo e, facoltativamente, una descrizione per la condizione.
Puoi aggiungere un'espressione di condizione utilizzando il generatore di condizioni o l'editor di condizioni. Il generatore di condizioni fornisce un'interfaccia interattiva per selezionare il tipo di condizione, l'operatore e altri dettagli applicabili dell'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 in scadenza.
- Dal menu a discesa Operatore, seleziona by (per).
- Nel menu a discesa Ora, fai clic sul pulsante per selezionare un intervallo di date e ore.
- Fai clic su Salva per applicare la condizione.
- Dopo aver chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare la policy di autorizzazione.
Editor condizioni:
Fai clic sulla scheda Editor condizioni e inserisci la seguente espressione (sostituendo il timestamp con il tuo):
request.time < timestamp("2020-07-01T00:00:00.000Z")
Dopo aver inserito l'espressione, puoi scegliere facoltativamente di convalidare la sintassi CEL facendo clic su Esegui Linter sopra la casella di testo in alto a destra.
Fai clic su Salva per applicare la condizione.
Dopo aver chiuso il riquadro Modifica condizione, fai di nuovo clic su Salva nel riquadro Modifica autorizzazioni per aggiornare la policy di autorizzazione.
gcloud
I criteri di autorizzazione vengono impostati utilizzando il pattern di lettura, modifica e scrittura.
Esegui il comando
gcloud projects get-iam-policy
per ottenere la policy di autorizzazione corrente per il progetto. Nell'esempio
seguente, la versione JSON della policy di autorizzazione viene scaricata in un percorso su disco.
Comando:
gcloud projects get-iam-policy project-id --format=json > filepath
Viene scaricato il formato JSON della policy di autorizzazione:
{
"bindings": [
{
"members": [
"user:my-user@example.com"
],
"role": "roles/owner"
},
{
"members": [
"group:my-group@example.com"
],
"role": "roles/iam.securityReviewer"
}
],
"etag": "BwWKmjvelug=",
"version": 1
}
Per configurare il criterio di autorizzazione con accesso scaduto, aggiungi la seguente espressione di condizione evidenziata (sostituendo il timestamp con il tuo). gcloud CLI aggiorna automaticamente la versione:
{
"bindings": [
{
"members": [
"user:my-user@example.com"
],
"role": "roles/owner"
},
{
"members": [
"group:my-group@example.com"
],
"role": "roles/iam.securityReviewer",
"condition": {
"title": "Expires_July_1_2020",
"description": "Expires on July 1, 2020",
"expression":
"request.time < timestamp('2020-07-01T00:00:00.000Z')"
}
}
],
"etag": "BwWKmjvelug=",
"version": 3
}
Successivamente, imposta la nuova policy di autorizzazione eseguendo il comando
gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id filepath
Viene applicata la nuova policy di autorizzazione e la concessione del ruolo del gruppo scadrà all'ora specificata.
REST
Utilizza il pattern read-modify-write per consentire l'accesso fino a un'ora specifica.
Innanzitutto, leggi le norme di autorizzazione per il progetto:
Il metodo
projects.getIamPolicy
dell'API Resource Manager recupera la policy di autorizzazione di un progetto.
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:my-user@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "group:my-group@example.com" ] } ] }
Poi, modifica il criterio di autorizzazione in modo che consenta l'accesso fino a un'ora specifica. Assicurati di modificare il campo version
con il valore
3
:
{
"version": 3,
"etag": "BwWKmjvelug=",
"bindings": [
{
"role": "roles/owner",
"members": [
"user:my-user@example.com"
]
},
{
"role": "roles/iam.securityReviewer",
"members": [
"group:my-group@example.com"
],
"condition": {
"title": "Expires_July_1_2020",
"description": "Expires on July 1, 2020",
"expression":
"request.time < timestamp('2020-07-01T00:00:00.000Z')"
}
}
]
}
Infine, scrivi il criterio di autorizzazione aggiornato:
Il metodo
projects.setIamPolicy
dell'API Resource Manager imposta la policy di autorizzazione nella richiesta come nuova policy di autorizzazione del progetto.
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
.
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:my-user@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "group:my-group@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 di queste opzioni:
La risposta contiene la policy di autorizzazione aggiornata.
Gestire l'accesso in base ai giorni/alle ore della settimana
Un binding del ruolo condizionale può essere utilizzato per concedere l'accesso a una risorsa solo in determinati giorni o ore della settimana su base ricorrente.
Considera lo scenario seguente: l'azienda ExampleCo ha un progetto di controllo qualità. L'intero team QA deve disporre di ruoli con privilegi elevati per completare il proprio lavoro. ExampleCo deve rispettare le leggi sul lavoro nella sua sede, che limitano l'orario di lavoro dal lunedì al venerdì dalle 9:00 alle 17:00. ExampleCo può utilizzare le condizioni di data/ora per garantire che i propri dipendenti possano accedere aGoogle Cloud solo durante la settimana lavorativa e durante l'orario di lavoro programmato.
Per concedere l'accesso a una risorsa del progetto solo in determinati giorni o orari della settimana su base ricorrente:
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. Poi, in Condizione IAM (facoltativo), fai clic su Aggiungi condizione 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 di condizioni. Il generatore di condizioni fornisce un'interfaccia interattiva per selezionare il tipo di condizione, l'operatore e altri dettagli applicabili dell'espressione. L'editor delle condizioni fornisce un'interfaccia basata su testo per inserire manualmente un'espressione utilizzando la sintassi CEL.
Generatore di condizioni:
- Fai clic su Aggiungi.
- Dal menu a discesa Tipo di condizione, seleziona Ora Programma Giorno della settimana.
- Nel menu a discesa Operatore, seleziona Dopo o il giorno.
- Dal menu a discesa Giorno della settimana, seleziona Lunedì.
- Dal menu a discesa Scegli un fuso orario, seleziona il fuso orario che preferisci dall'elenco.
- Assicurati che l'operatore E sia selezionato a sinistra, poi fai di nuovo clic su Aggiungi.
- Dal menu a discesa Tipo di condizione, seleziona Ora Programma Giorno della settimana.
- Nel menu a discesa Operatore, seleziona Prima o il giorno.
- Dal menu a discesa Giorno della settimana, seleziona Venerdì.
- Dal menu a discesa Scegli un fuso orario, seleziona il fuso orario che preferisci dall'elenco.
A questo punto, hai configurato l'accesso solo dal lunedì al venerdì. Ora configurerai l'accesso dalle 9:00 alle 17:00.
- Assicurati che l'operatore E sia selezionato a sinistra, poi fai di nuovo clic su Aggiungi.
Dal menu a discesa Tipo di condizione, seleziona Ora
Pianificazione Ora del giorno.- Nel menu a discesa Operatore, seleziona Dopo o il giorno.
- Dal menu a discesa Ora del giorno, seleziona 9 (ore 9:00).
- Dal menu a discesa Scegli un fuso orario, seleziona il fuso orario che preferisci dall'elenco.
- Dal menu a discesa Tipo di condizione, seleziona Ora Pianificazione Ora del giorno.
- Nel menu a discesa Operatore, seleziona Prima o il giorno. Tieni presente che per questa selezione, "on" verrà valutato logicamente per tutte le ore tra le 17:00 e le 17:59. Per impostare la scadenza dell'accesso alle 16:59, assicurati che l'ora sia impostata su 16 anziché 17.
- Dal menu a discesa Ora del giorno, seleziona 17 (ore 17:00).
- Dal menu a discesa Scegli un fuso orario, seleziona il fuso orario che preferisci dall'elenco.
- 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 policy di autorizzazione.
Ora hai configurato l'accesso dal lunedì al venerdì, dalle 9:00 alle 17:00.
Editor condizioni:
Fai clic sulla scheda Editor condizioni e inserisci la seguente espressione (sostituendo i valori segnaposto con i tuoi):
request.time.getHours("Europe/Berlin") >= 9 && request.time.getHours("Europe/Berlin") <= 17 && request.time.getDayOfWeek("Europe/Berlin") >= 1 && request.time.getDayOfWeek("Europe/Berlin") <= 5
Dopo aver inserito l'espressione, puoi scegliere facoltativamente di convalidare la sintassi CEL facendo clic su Esegui Linter sopra la casella di testo 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 nel riquadro Modifica autorizzazioni per aggiornare la policy di autorizzazione.
gcloud
I criteri di autorizzazione vengono impostati utilizzando il pattern di lettura, modifica e scrittura.
Esegui il comando
gcloud projects get-iam-policy
per ottenere la policy di autorizzazione corrente per il progetto. Nell'esempio
seguente, la versione JSON della policy di autorizzazione viene scaricata in un percorso su disco.
Comando:
gcloud projects get-iam-policy project-id --format=json > filepath
Viene scaricato il formato JSON della policy di autorizzazione:
{
"bindings": [
{
"members": [
"user:my-user@example.com"
],
"role": "roles/owner"
},
{
"members": [
"group:my-group@example.com"
],
"role": "roles/bigquery.dataViewer"
}
],
"etag": "BwWKmjvelug=",
"version": 1
}
Per configurare il criterio di autorizzazione con accesso pianificato, aggiungi la seguente espressione di condizione evidenziata (sostituendo il timestamp con il tuo). gcloud CLI aggiorna automaticamente la versione:
{
"bindings": [
{
"members": [
"user:my-user@example.com"
],
"role": "roles/owner"
},
{
"members": [
"group:my-group@example.com"
],
"role": "roles/bigquery.dataViewer",
"condition": {
"title": "Business_hours",
"description": "Business hours Monday-Friday",
"expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5"
}
}
],
"etag": "BwWKmjvelug=",
"version": 3
}
Successivamente, imposta la nuova policy di autorizzazione eseguendo il comando
gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id filepath
Viene applicato il nuovo criterio di autorizzazione e la concessione del ruolo del gruppo consentirà l'accesso tra i giorni e gli orari specificati.
REST
Utilizza il pattern read-modify-write per consentire l'accesso pianificato.Innanzitutto, leggi le norme di autorizzazione per il progetto:
Il metodo
projects.getIamPolicy
dell'API Resource Manager recupera la policy di autorizzazione di un progetto.
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:my-user@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "group:my-group@example.com" ] } ] }
Successivamente, modifica la policy di autorizzazione per consentire l'accesso pianificato.
Aggiungi la seguente espressione di condizione evidenziata (sostituendo il timestamp con
il tuo). Assicurati di aver aggiornato il valore version
a
3
:
{
"etag": "BwWKmjvelug=",
"version": 3,
"bindings": [
{
"role": "roles/owner",
"members": [
"user:my-user@example.com"
]
},
{
"role": "roles/bigquery.dataViewer",
"members": [
"group:my-group@example.com"
],
"condition": {
"title": "Business_hours",
"description": "Business hours Monday-Friday",
"expression":
"request.time.getHours('Europe/Berlin') >= 9 &&
request.time.getHours('Europe/Berlin') <= 17 &&
request.time.getDayOfWeek('Europe/Berlin') >= 1 &&
request.time.getDayOfWeek('Europe/Berlin') <= 5"
}
}
]
}
Il metodo
projects.setIamPolicy
dell'API Resource Manager imposta la policy di autorizzazione nella richiesta come nuova policy di autorizzazione del progetto.
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
.
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:my-user@example.com" ] }, { "role": "roles/bigquery.dataViewer", "members": [ "group:my-group@example.com" ], "condition": { "title": "Business_hours", "description": "Business hours Monday-Friday", "expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5" } } ] } }
Per inviare la richiesta, espandi una di queste opzioni:
La risposta contiene la policy di autorizzazione aggiornata.
Passaggi successivi
- Scopri come gestire le associazioni di ruoli condizionali.
- Scopri come eseguire il controllo lint delle policy di autorizzazione.
- Scopri come utilizzare i binding dei ruoli condizionali per gestire l'accesso privilegiato just-in-time ai progetti.