Un criterio IAM (Identity and Access Management), che specifica i controlli di accesso per le risorse Google Cloud.
Un Policy
è una raccolta di bindings
. Un elemento binding
associa una o più members
, o entità, a un singolo role
. Le entità possono essere account utente, account di servizio, gruppi Google e domini, ad esempio G Suite. Un role
è un elenco denominato di autorizzazioni. Ogni role
può essere un ruolo IAM predefinito o un ruolo personalizzato creato dall'utente.
Per alcuni tipi di risorse Google Cloud, un binding
può anche specificare un condition
, che è un'espressione logica che consente l'accesso a una risorsa solo se l'espressione restituisce true
. Una condizione può aggiungere vincoli in base agli attributi della richiesta, della risorsa o di entrambe. Per sapere quali risorse supportano le condizioni nei criteri IAM, consulta la documentazione IAM.
Esempio di JSON:
{
"bindings": [
{
"role": "roles/resourcemanager.organizationAdmin",
"members": [
"user:mike@example.com",
"group:admins@example.com",
"domain:google.com",
"serviceAccount:my-project-id@appspot.gserviceaccount.com"
]
},
{
"role": "roles/resourcemanager.organizationViewer",
"members": [
"user:eve@example.com"
],
"condition": {
"title": "expirable access",
"description": "Does not grant access after Sep 2020",
"expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
}
}
],
"etag": "BwWWja0YfJA=",
"version": 3
}
Esempio YAML:
bindings:
- members:
- user:mike@example.com
- group:admins@example.com
- domain:google.com
- serviceAccount:my-project-id@appspot.gserviceaccount.com
role: roles/resourcemanager.organizationAdmin
- members:
- user:eve@example.com
role: roles/resourcemanager.organizationViewer
condition:
title: expirable access
description: Does not grant access after Sep 2020
expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
etag: BwWWja0YfJA=
version: 3
Per una descrizione di IAM e delle sue funzionalità, consulta la documentazione IAM.
Rappresentazione JSON |
---|
{ "version": integer, "bindings": [ { object ( |
Campi | |
---|---|
version |
Specifica il formato del criterio. I valori validi sono Per qualsiasi operazione che influisce sulle associazioni di ruoli condizionali deve specificare la versione
Importante:se utilizzi le condizioni IAM, devi includere il campo Se un criterio non include condizioni, le operazioni su quel criterio possono specificare qualsiasi versione valida o lasciare il campo non impostato. Per sapere quali risorse supportano le condizioni nei criteri IAM, consulta la documentazione IAM. |
bindings[] |
Associa un elenco di L'elemento |
auditConfigs[] |
Specifica la configurazione dell'audit logging del cloud per questo criterio. |
etag |
Importante:se utilizzi le condizioni IAM, devi includere il campo Una stringa con codifica Base64. |
Associazione
Associa members
, o entità, a un role
.
Rappresentazione JSON |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
Campi | |
---|---|
role |
Ruolo assegnato all'elenco di Per una panoramica dei ruoli e delle autorizzazioni IAM, consulta la documentazione IAM. Per un elenco dei ruoli predefiniti disponibili, vedi qui. |
members[] |
Specifica le entità che richiedono l'accesso per una risorsa Google Cloud.
|
condition |
La condizione associata a questa associazione. Se la condizione ha come valore Se la condizione ha come valore Per sapere quali risorse supportano le condizioni nei criteri IAM, consulta la documentazione IAM. |
Expr
Rappresenta un'espressione testuale nella sintassi Common Expression Language (CEL). Il CEL è un linguaggio di espressione simile al C. La sintassi e la semantica della tecnologia CEL sono illustrate all'indirizzo https://github.com/google/cel-spec.
Esempio (confronto):
title: "Summary size limit"
description: "Determines if a summary is less than 100 chars"
expression: "document.summary.size() < 100"
Esempio (Uguaglianza):
title: "Requestor is owner"
description: "Determines if requestor is the document owner"
expression: "document.owner == request.auth.claims.email"
Esempio (Logica):
title: "Public documents"
description: "Determine whether the document should be publicly visible"
expression: "document.type != 'private' && document.type != 'internal'"
Esempio (manipolazione di dati):
title: "Notification string"
description: "Create a notification string with a timestamp."
expression: "'New message received at ' + string(document.create_time)"
Le variabili e le funzioni esatte a cui è possibile fare riferimento all'interno di un'espressione sono determinate dal servizio che la valuta. Per ulteriori informazioni, consulta la documentazione del servizio.
Rappresentazione JSON |
---|
{ "expression": string, "title": string, "description": string, "location": string } |
Campi | |
---|---|
expression |
Rappresentazione testuale di un'espressione nella sintassi Common Expression Language. |
title |
Facoltativo. Titolo dell'espressione, ad esempio una breve stringa che ne descrive lo scopo. Può essere utilizzato, ad esempio, nelle UI che consentono di inserire l'espressione. |
description |
Facoltativo. Descrizione dell'espressione. Si tratta di un testo più lungo che descrive l'espressione, ad esempio passando il mouse sopra l'espressione in un'interfaccia utente. |
location |
Facoltativo. Stringa che indica la posizione dell'espressione per la segnalazione degli errori, ad esempio il nome di un file e una posizione nel file. |
AuditConfig
Specifica la configurazione dell'audit per un servizio. La configurazione determina quali tipi di autorizzazione vengono registrati e quali identità, se presenti, sono esenti dal logging. Un AuditConfig deve avere uno o più AuditLogConfig.
Se esistono AuditConfig sia per allServices
sia per un servizio specifico, per quel servizio viene utilizzata l'unione dei due AuditConfig: i log_type specificati in ogni AuditConfig sono abilitati, mentre gli elementi exceptedMembers in ogni AuditLogConfig sono esenti.
Criterio di esempio con più AuditConfig:
{
"auditConfigs": [
{
"service": "allServices",
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
},
{
"logType": "ADMIN_READ"
}
]
},
{
"service": "sampleservice.googleapis.com",
"auditLogConfigs": [
{
"logType": "DATA_READ"
},
{
"logType": "DATA_WRITE",
"exemptedMembers": [
"user:aliya@example.com"
]
}
]
}
]
}
Per sampleservice, questo criterio consente il logging DATA_READ, DATA_WRITE e ADMIN_READ. Esclude inoltre jose@example.com
dal logging DATA_READ e aliya@example.com
dal logging DATA_WRITE.
Rappresentazione JSON |
---|
{
"service": string,
"auditLogConfigs": [
{
object ( |
Campi | |
---|---|
service |
Specifica un servizio che verrà abilitato per l'audit logging. Ad esempio, |
auditLogConfigs[] |
La configurazione per il logging di ciascun tipo di autorizzazione. |
AuditLogConfig
Fornisce la configurazione per il logging di un tipo di autorizzazione. Esempio:
{
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
}
]
}
Questo abilita il logging "DATA_READ" e "DATA_WRITE", escludendo jose@example.com dal logging DATA_READ.
Rappresentazione JSON |
---|
{
"logType": enum ( |
Campi | |
---|---|
logType |
Il tipo di log abilitato da questa configurazione. |
exemptedMembers[] |
Specifica le identità che non causano il logging per questo tipo di autorizzazione. Deve seguire lo stesso formato di |
LogType
L'elenco dei tipi di autorizzazione validi per i quali è possibile configurare il logging. Le scritture amministrative vengono sempre registrate e non sono configurabili.
Enum | |
---|---|
LOG_TYPE_UNSPECIFIED |
Maiuscole predefinite. Non dovrebbe mai essere così. |
ADMIN_READ |
Letture dell'amministratore. Esempio: CloudIAM getIamPolicy |
DATA_WRITE |
Operazioni di scrittura dati. Esempio: gli utenti Cloud SQL creano |
DATA_READ |
Letture dei dati. Esempio: elenco utenti Cloud SQL |