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 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 gli exemptedMembers 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 il logging. 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 |