Un criterio Identity and Access Management (IAM) che specifica i controlli di accesso per le risorse Google Cloud.
Un Policy
è una raccolta di bindings
. Un binding
associa uno 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
, ovvero un'espressione logica che consente l'accesso a una risorsa solo se l'espressione ha il valore true
. Una condizione può aggiungere vincoli in base agli attributi della richiesta, della risorsa o di entrambi. Per scoprire quali risorse supportano le condizioni nei propri criteri IAM, consulta la documentazione di 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 di IAM.
Rappresentazione JSON |
---|
{ "version": integer, "bindings": [ { object ( |
Campi | |
---|---|
version |
Specifica il formato del criterio. I valori validi sono 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 scoprire quali risorse supportano le condizioni nei propri criteri IAM, consulta la documentazione di IAM. |
bindings[] |
Associa un elenco di Il |
auditConfigs[] |
Specifica la configurazione dell'audit logging di 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 di IAM. Per un elenco dei ruoli predefiniti disponibili, consulta questa pagina. |
members[] |
Specifica le entità che richiedono l'accesso per una risorsa Google Cloud.
|
condition |
La condizione associata a questa associazione. Se la condizione ha valore Se la condizione ha valore Per scoprire quali risorse supportano le condizioni nei propri criteri IAM, consulta la documentazione di IAM. |
Expr
Rappresenta un'espressione di testo nella sintassi del Common Expression Language (CEL). CEL è un linguaggio di espressioni simile a C. La sintassi e la semantica di CEL sono documentate 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 dei 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 può essere fatto 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 di Common Expression Language. |
title |
Facoltativo. Titolo dell'espressione, ovvero 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 quando si passa 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 un nome file e una posizione nel file. |
AuditConfig
Specifica la configurazione di controllo per un servizio. La configurazione determina quali tipi di autorizzazioni vengono registrati e quali identità, se presenti, sono esenti dalla registrazione. Un AuditConfig deve avere uno o più AuditLogConfig.
Se sono presenti AuditConfig sia per allServices
sia per un servizio specifico, per quel servizio viene utilizzata l'unione dei due AuditConfig: i log_types specificati in ogni AuditConfig sono abilitati e i membri esenti in ogni AuditLogConfig sono esenti.
Esempio di norme 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 attiva il logging di DATA_READ, DATA_WRITE e ADMIN_READ. Inoltre, esenta jose@example.com
dal logging DATA_READ ed aliya@example.com
dal logging DATA_WRITE.
Rappresentazione JSON |
---|
{
"service": string,
"auditLogConfigs": [
{
object ( |
Campi | |
---|---|
service |
Specifica un servizio per cui verrà attivato l'audit logging. Ad esempio, |
auditLogConfigs[] |
La configurazione per la registrazione di ogni tipo di autorizzazione. |
AuditLogConfig
Fornisce la configurazione per la registrazione di un tipo di autorizzazioni. Esempio:
{
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
}
]
}
In questo modo vengono attivati i log "DATA_READ" e "DATA_WRITE", mentre jose@example.com viene esentato dal logging DATA_READ.
Rappresentazione JSON |
---|
{
"logType": enum ( |
Campi | |
---|---|
logType |
Il tipo di log abilitato da questa configurazione. |
exemptedMembers[] |
Specifica le identità che non generano log per questo tipo di autorizzazione. Deve seguire lo stesso formato di |
LogType
L'elenco dei tipi di autorizzazioni validi per i quali è possibile configurare la registrazione. Le scritture amministrative vengono sempre registrate e non sono configurabili.
Enum | |
---|---|
LOG_TYPE_UNSPECIFIED |
Caso predefinito. Non dovrebbe mai essere così. |
ADMIN_READ |
Letture amministratore. Esempio: CloudIAM getIamPolicy |
DATA_WRITE |
Scritture di dati. Esempio: creazione di utenti CloudSQL |
DATA_READ |
Letture dei dati. Esempio: elenco utenti CloudSQL |