Questo argomento descrive come impostare l'accesso temporaneo (con scadenza) alle risorse Google Cloud utilizzando le associazioni di 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 si interrompe a un'ora specificata o su base pianificata e ricorrente.
Prima di iniziare
- Leggi la Panoramica delle condizioni per comprendere le nozioni di base 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 data/ora sono riconosciuti da tutti i servizi Google Cloud.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire le associazioni condizionali di ruoli, chiedi all'amministratore di concederti seguenti ruoli IAM:
-
Per gestire l'accesso ai progetti:
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) nel 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 Gestire l'accesso a progetti, cartelle e organizzazioni.
Questi ruoli predefiniti le autorizzazioni necessarie per gestire le associazioni di ruoli condizionali. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:
Autorizzazioni obbligatorie
Per gestire le associazioni di ruoli condizionali sono necessarie le seguenti autorizzazioni:
-
Per gestire l'accesso ai progetti:
-
resourcemanager.projects.getIamPolicy
del progetto -
resourcemanager.projects.setIamPolicy
sul progetto
-
-
Per gestire l'accesso alle cartelle:
-
resourcemanager.folders.getIamPolicy
sulla cartella -
resourcemanager.folders.setIamPolicy
sulla cartella
-
-
Per gestire l'accesso alle organizzazioni:
-
resourcemanager.organizations.getIamPolicy
dell'organizzazione -
resourcemanager.organizations.setIamPolicy
dell'organizzazione
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Concedere l'accesso temporaneo
Un'associazione di ruoli condizionale può essere utilizzata per concedere l'accesso a una risorsa in un determinato periodo di tempo, garantendo che un utente non possa più accedere alla risorsa dopo la data e l'ora di scadenza specificate.
Considera il seguente scenario: la sicurezza delle informazioni dell'azienda ExampleCo sottolineano che nessun dipendente dovrebbe avere accesso indefinito alle risorse per i progetti di produzione. In precedenza, gli amministratori impostavano manualmente delle associazioni di ruoli IAM per soddisfare le esigenze un'emergenza e alle esigenze aziendali. Per ridurre il sovraccarico amministrativo, la società ExampleCo può invece configurare un'associazione di ruoli condizionale con una condizione di data/ora per impostare una data di fine per l'associazione.
Per concedere l'accesso con scadenza a una risorsa di progetto:
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 il ruolo per cui vuoi configurare una condizione. Quindi, in Condizione IAM (facoltativa), 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 delle condizioni. Il generatore di condizioni fornisce un'interfaccia interattiva per selezionare il tipo di condizione, l'operatore e altri dettagli applicabili all'espressione. L'editor delle condizioni fornisce un'interfaccia di testo inserisci manualmente un'espressione utilizzando Sintassi CEL.
Generatore di condizioni:
- Dal menu a discesa Tipo di condizione, seleziona In scadenza Accesso.
- Dal menu a discesa Operatore, seleziona per.
- Nel menu a discesa Ora, fai clic sull'icona per selezionare un intervallo di date e ore.
- Fai clic su Salva per applicare la condizione.
- Dopo aver chiuso il riquadro Modifica condizione, fai clic su Salva. dal riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.
Editor condizioni:
Fai clic sulla scheda Editor delle condizioni e inserisci la seguente expression (sostituendo il timestamp con il tuo):
request.time < timestamp("2020-07-01T00:00:00.000Z")
Dopo aver inserito l'espressione, puoi scegliere 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 clic su Salva. dal riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.
gcloud
I criteri di autorizzazione vengono impostati utilizzando read-modify-write pattern.
Esegui il comando
gcloud projects get-iam-policy
per ottenere il criterio di autorizzazione corrente per il progetto. Nel seguente
Ad esempio, la versione JSON del criterio 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 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
}
Per configurare il criterio di autorizzazione con accesso con scadenza, aggiungi la seguente expression condizione evidenziata (sostituendo il timestamp con il tuo). La gcloud CLI 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_July_1_2020",
"description": "Expires on July 1, 2020",
"expression":
"request.time < timestamp('2020-07-01T00:00:00.000Z')"
}
}
],
"etag": "BwWKmjvelug=",
"version": 3
}
Quindi, imposta il nuovo criterio di autorizzazione eseguendo il comando
gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id filepath
La nuova norma di autorizzazione viene applicata e la concessione del ruolo di travis@example.com
scade all'ora specificata.
REST
Usare lo strumento read-modify-write per consentire l'accesso fino a un momento specifico.
Innanzitutto, 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
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.POLICY_VERSION
: la versione del criterio da utilizzare restituito. Le richieste devono specificare la versione del criterio più recente, ovvero la versione del criterio 3. Consulta la sezione Specificare una versione del criterio quando si riceve un criterio per maggiori dettagli.
Metodo HTTP e URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy
Corpo JSON della richiesta:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Per inviare la richiesta, espandi una 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:travis@example.com" ] } ] }
Successivamente, modifica il criterio di autorizzazione in modo che consenta l'accesso fino a un'ora specifica. Assicurati di modificare il campo version
in modo che abbia il valore
3
:
{
"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')"
}
}
]
}
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
: l'ID del tuo progetto Google Cloud. 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 di queste opzioni:
La risposta contiene il criterio di autorizzazione aggiornato.
Gestisci l'accesso in base a giorni/ore della settimana
Un'associazione di ruoli condizionale può essere utilizzata per concedere l'accesso a una risorsa solo in determinati giorni o ore della settimana su base ricorrente.
Considera il seguente scenario: l'azienda ExampleCo dispone di un controllo di qualità progetto. L'intero team di QA deve disporre di ruoli con privilegi elevati per svolgere il proprio lavoro. La ExampleCo deve rispettare le leggi sul lavoro vigenti nella sua località, che limitano l'orario di lavoro dal lunedì al venerdì dalle 9:00 alle 17:00. ExampleCo può utilizzare condizioni di data/ora per assicurarsi che i dipendenti possano accedere solo Google Cloud durante la settimana lavorativa e durante l'orario di lavoro programmato.
Per concedere l'accesso a una risorsa di progetto solo per determinati giorni o ore della settimana su base ricorrente:
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 il ruolo per cui vuoi configurare una condizione. Quindi, in Condizione IAM (facoltativa), 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 la colonna Condizione Builder o l'editor condizioni. La condizione Builder offre un'interfaccia interattiva per selezionare il tipo di condizione, l'operatore e altri dettagli applicabili sulla un'espressione di base. L'editor delle condizioni fornisce un'interfaccia di testo inserisci manualmente un'espressione utilizzando Sintassi CEL.
Generatore di condizioni:
- Fai clic su Aggiungi.
- Dal menu a discesa Tipo di condizione, seleziona Ora. Programmazione Giorno della settimana.
- Dal menu a discesa Operatore, seleziona Dopo o On.
- Dal menu a discesa Giorno della settimana, seleziona Lunedì.
- Dal menu a discesa Scegli un fuso orario, seleziona l'ora che preferisci zona attiva nell'elenco.
- Assicurati che a sinistra sia selezionato l'operatore E, quindi fai di nuovo clic su Aggiungi.
- Dal menu a discesa Tipo di condizione, seleziona Ora. Programmazione Giorno della settimana.
- Nel menu a discesa Operatore, seleziona Prima o In data.
- 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 09:00 alle 17:00.
- Assicurati che l'operatore And sia selezionato a sinistra, quindi fai di nuovo clic su Aggiungi.
Nel menu a discesa Tipo di condizione, seleziona Ora
Pianificazione Ora del giorno.- Nel menu a discesa Operatore, seleziona Dopo o On.
- Dal menu a discesa Ora del giorno, seleziona 9 (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. Programmazione Ora del giorno.
- Dal menu a discesa Operatore, seleziona Prima o Su. Nota che, per questa selezione, "on" eseguirà logicamente la valutazione tra le 17:00 (17:00) e le 17:59 (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 (17:00).
- Dal menu a discesa Scegli un fuso orario, seleziona l'ora che preferisci zona attiva nell'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 il criterio di autorizzazione.
Hai configurato l'accesso dal lunedì al venerdì, dalle 9:00 alle 17:00.
Editor condizioni:
Fai clic sulla scheda Editor condizioni e inserisci quanto segue (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 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 clic su Salva. dal riquadro Modifica autorizzazioni per aggiornare il criterio di autorizzazione.
gcloud
I criteri di autorizzazione vengono impostati utilizzando read-modify-write pattern.
Esegui il comando
gcloud projects get-iam-policy
per ottenere il criterio di autorizzazione corrente per il progetto. Nel seguente
Ad esempio, la versione JSON del criterio 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 del criterio di autorizzazione:
{
"bindings": [
{
"members": [
"user:project-owner@example.com"
],
"role": "roles/owner"
},
{
"members": [
"user:rita@example.com"
],
"role": "roles/bigquery.dataViewer"
}
],
"etag": "BwWKmjvelug=",
"version": 1
}
Per configurare il criterio di autorizzazione con accesso pianificato, aggiungi quanto segue espressione di condizione evidenziata (sostituendo il timestamp con la tua). L'interfaccia a riga di comando gcloud aggiorna automaticamente la versione:
{
"bindings": [
{
"members": [
"user:project-owner@example.com"
],
"role": "roles/owner"
},
{
"members": [
"user:rita@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
}
Quindi, imposta il nuovo criterio di autorizzazione eseguendo il comando
gcloud projects set-iam-policy
:
gcloud projects set-iam-policy project-id filepath
Il nuovo criterio di autorizzazione viene applicato e la concessione del ruolo di rita@example.com
consentirà
l'accesso tra i giorni e gli orari specificati.
REST
Usare lo strumento read-modify-write per consentire l'accesso programmato.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
: l'ID del tuo progetto Google Cloud. Gli ID progetto sono stringhe alfanumeriche, ad esempiomy-project
.POLICY_VERSION
: la versione del criterio da utilizzare restituito. Le richieste devono specificare la versione più recente dei criteri, ovvero la versione 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 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/bigquery.dataViewer", "members": [ "user:rita@example.com" ] } ] }
Successivamente, modifica il criterio 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
in
3
:
{
"etag": "BwWKmjvelug=",
"version": 3,
"bindings": [
{
"role": "roles/owner",
"members": [
"user:project-owner@example.com"
]
},
{
"role": "roles/bigquery.dataViewer",
"members": [
"user:rita@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 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
: l'ID del tuo progetto Google Cloud. 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:rita@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 il criterio di autorizzazione aggiornato.
Passaggi successivi
- Scopri come gestire le associazioni di ruoli condizionali.
- Scopri come eseguire l'accesso tramite lint dei criteri di autorizzazione.
- Scopri come utilizzare le associazioni di ruoli condizionali per gestire l'accesso privilegiato just-in-time ai progetti.