Package google.iam.v1

Indice

IAMPolicy

Panoramica dell'API

Gestisce i criteri IAM (Identity and Access Management).

Qualsiasi implementazione di un'API che offre funzionalità di controllo dell'accesso dell'accesso implementa l'interfaccia google.iam.v1.IAMPolicy.

Modello dati

Il controllo dell'accesso viene applicato quando un'entità (utente o account di servizio) esegue alcune azioni su una risorsa esposta da un servizio. Le risorse, identificate da nomi di tipo URI, sono l'unità della specifica di controllo dell'accesso#39;accesso. Le implementazioni dei servizi possono scegliere la granularità del controllo dell'accesso'accesso e le autorizzazioni supportate per le proprie risorse. Ad esempio, un servizio di database può consentire di specificare il controllo dell'accesso dell'accesso solo a livello di tabella, mentre un altro può consentire di specificare il controllo dell'accesso dell'accesso anche a livello di colonna.

Struttura delle norme

Vedi google.iam.v1.Policy

Non si tratta intenzionalmente di un'API in stile CRUD perché i criteri di controllo dell'accesso vengono creati ed eliminati implicitamente con le risorse a cui sono collegati.

GetIamPolicy

rpc GetIamPolicy(GetIamPolicyRequest) returns (Policy)

Ottieni il criterio di controllo dell'accesso per una risorsa. Restituisce un criterio vuoto se la risorsa esiste e non è stato impostato un criterio.

Ambiti di autorizzazione

Richiede il seguente ambito OAuth:

  • https://www.googleapis.com/auth/cloud-platform

Per ulteriori informazioni, consulta la Panoramica dell'autenticazione.

SetIamPolicy

rpc SetIamPolicy(SetIamPolicyRequest) returns (Policy)

Imposta il criterio di controllo dell'accesso sulla risorsa specificata. Sostituisce qualsiasi criterio esistente.

Può restituire errori NOT_FOUND, INVALID_ARGUMENT e PERMISSION_DENIED.

Ambiti di autorizzazione

Richiede il seguente ambito OAuth:

  • https://www.googleapis.com/auth/cloud-platform

Per ulteriori informazioni, consulta la Panoramica dell'autenticazione.

TestIamPermissions

rpc TestIamPermissions(TestIamPermissionsRequest) returns (TestIamPermissionsResponse)

Restituisce le autorizzazioni di cui un chiamante dispone per la risorsa specificata. Se la risorsa non esiste, verrà restituito un insieme di autorizzazioni vuoto, non un errore NOT_FOUND.

Nota: questa operazione è progettata per essere utilizzata per la creazione di UI e strumenti a riga di comando sensibili alle autorizzazioni, non per il controllo delle autorizzazioni. Questa operazione potrebbe non riuscire ad aprirsi senza preavviso.

Ambiti di autorizzazione

Richiede il seguente ambito OAuth:

  • https://www.googleapis.com/auth/cloud-platform

Per ulteriori informazioni, consulta la Panoramica dell'autenticazione.

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 sono presenti AuditConfig sia per allServices sia per uno specifico servizio, per quel servizio viene utilizzata l'unione dei due AuditConfig: i log_type specificati in ogni AuditConfig sono abilitati, mentre gli excepted_members in ogni AuditLogConfig sono esenti.

Criterio di esempio con più AuditConfig:

{
  "audit_configs": [
    {
      "service": "allServices",
      "audit_log_configs": [
        {
          "log_type": "DATA_READ",
          "exempted_members": [
            "user:jose@example.com"
          ]
        },
        {
          "log_type": "DATA_WRITE"
        },
        {
          "log_type": "ADMIN_READ"
        }
      ]
    },
    {
      "service": "sampleservice.googleapis.com",
      "audit_log_configs": [
        {
          "log_type": "DATA_READ"
        },
        {
          "log_type": "DATA_WRITE",
          "exempted_members": [
            "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.

Campi
service

string

Specifica un servizio che verrà abilitato per l'audit logging. Ad esempio, storage.googleapis.com, cloudsql.googleapis.com. allServices è un valore speciale che copre tutti i servizi.

audit_log_configs[]

AuditLogConfig

La configurazione per il logging di ciascun tipo di autorizzazione.

AuditLogConfig

Fornisce la configurazione per il logging di un tipo di autorizzazione. Esempio:

{
  "audit_log_configs": [
    {
      "log_type": "DATA_READ",
      "exempted_members": [
        "user:jose@example.com"
      ]
    },
    {
      "log_type": "DATA_WRITE"
    }
  ]
}

Questo abilita il logging "DATA_READ" e "DATA_WRITE", escludendo jose@example.com dal logging DATA_READ.

Campi
log_type

AuditLogConfig.LogType

Il tipo di log abilitato da questa configurazione.

exempted_members[]

string

Specifica le identità che non causano il logging per questo tipo di autorizzazione. Deve seguire lo stesso formato di Binding.members.

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

Associazione

Associa members, o entità, a un role.

Campi
role

string

Ruolo assegnato all'elenco di members, o entità. Ad esempio, roles/viewer, roles/editor o roles/owner.

members[]

string

Specifica le entità che richiedono l'accesso per una risorsa Google Cloud. members può avere i seguenti valori:

  • allUsers: un identificatore speciale che rappresenta tutti gli utenti di internet, con o senza un Account Google.

  • allAuthenticatedUsers: un identificatore speciale che rappresenta chiunque sia autenticato con un Account Google o un account di servizio. Non include le identità che provengono da provider di identità (IdP) esterni tramite la federazione delle identità.

  • user:{emailid}: un indirizzo email che rappresenta uno specifico Account Google. Ad esempio, alice@example.com .

  • serviceAccount:{emailid}: un indirizzo email che rappresenta un account di servizio Google. Ad esempio, my-other-app@appspot.gserviceaccount.com.

  • serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: un identificatore di un account di servizio Kubernetes. Ad esempio: my-project.svc.id.goog[my-namespace/my-kubernetes-sa].

  • group:{emailid}: un indirizzo email che rappresenta un gruppo Google. Ad esempio, admins@example.com.

  • domain:{domain}: il dominio G Suite (principale) che rappresenta tutti gli utenti del dominio. Ad esempio, google.com o example.com.
  • principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: un'unica identità in un pool di identità della forza lavoro.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}: tutte le identità della forza lavoro in un gruppo.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}: tutte le identità della forza lavoro con un valore di attributo specifico.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*: tutte le identità in un pool di identità della forza lavoro.

  • principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}: una singola identità in un pool di identità per i carichi di lavoro.

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}: un gruppo di pool di identità per i carichi di lavoro.

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}: tutte le identità in un pool di identità per i carichi di lavoro con un determinato attributo.

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*: tutte le identità in un pool di identità per i carichi di lavoro.

  • deleted:user:{emailid}?uid={uniqueid}: un indirizzo email (più un identificatore univoco) che rappresenta un utente che è stato eliminato di recente. Ad esempio, alice@example.com?uid=123456789012345678901. Se l'utente viene recuperato, questo valore viene ripristinato su user:{emailid} e l'utente recuperato manterrà il ruolo nell'associazione.

  • deleted:serviceAccount:{emailid}?uid={uniqueid}: un indirizzo email (più un identificatore univoco) che rappresenta un account di servizio eliminato di recente. Ad esempio, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. Se l'account di servizio non viene eliminato, questo valore viene ripristinato su serviceAccount:{emailid} e l'account di servizio non eliminato manterrà il ruolo nell'associazione.

  • deleted:group:{emailid}?uid={uniqueid}: un indirizzo email (più un identificatore univoco) che rappresenta un gruppo Google eliminato di recente. Ad esempio, admins@example.com?uid=123456789012345678901. Se il gruppo viene recuperato, questo valore viene ripristinato su group:{emailid} e il gruppo recuperato manterrà il ruolo nell'associazione.

  • deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: singola identità eliminata in un pool di identità della forza lavoro. Ad esempio, deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value.

condition

Expr

La condizione associata a questa associazione.

Se la condizione ha come valore true, questa associazione si applica alla richiesta corrente.

Se la condizione ha come valore false, questa associazione non si applica alla richiesta corrente. Tuttavia, un'associazione di ruoli diversa potrebbe concedere lo stesso ruolo a una o più entità in questa associazione.

Per sapere quali risorse supportano le condizioni nei criteri IAM, consulta la documentazione IAM.

GetIamPolicyRequest

Messaggio di richiesta per il metodo GetIamPolicy.

Campi
resource

string

OBBLIGATORIO: la risorsa per cui viene richiesto il criterio. Consulta Nomi delle risorse per il valore appropriato per questo campo.

options

GetPolicyOptions

FACOLTATIVO: un oggetto GetPolicyOptions per specificare le opzioni per GetIamPolicy.

GetPolicyOptions

Incapsula le impostazioni fornite a GetIamPolicy.

Campi
requested_policy_version

int32

Facoltativo. La versione massima del criterio che verrà utilizzata per formattare il criterio.

I valori validi sono 0, 1 e 3. Le richieste che specificano un valore non valido verranno rifiutate.

Le richieste di criteri con qualsiasi associazione di ruoli condizionali devono specificare la versione 3. I criteri senza associazioni di ruoli condizionali possono specificare un valore valido o lasciare il campo non impostato.

Il criterio nella risposta potrebbe utilizzare la versione del criterio specificata o una versione precedente. Ad esempio, se specifichi la versione 3, ma il criterio non ha associazioni di ruoli condizionali, la risposta utilizza la versione 1.

Per sapere quali risorse supportano le condizioni nei criteri IAM, consulta la documentazione IAM.

Criterio

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.

Campi
version

int32

Specifica il formato del criterio.

I valori validi sono 0, 1 e 3. Le richieste che specificano un valore non valido vengono rifiutate.

Per qualsiasi operazione che influisce sulle associazioni di ruoli condizionali deve specificare la versione 3. Questo requisito si applica alle seguenti operazioni:

  • Recupero di un criterio che include un'associazione di ruolo condizionale
  • Aggiunta di un'associazione di ruolo condizionale a un criterio
  • Modificare un'associazione di ruolo condizionale in un criterio
  • Rimuovere qualsiasi associazione di ruoli, con o senza una condizione, da un criterio che include condizioni

Importante:se utilizzi le condizioni IAM, devi includere il campo etag ogni volta che chiami setIamPolicy. Se ometti questo campo, IAM consente di sovrascrivere un criterio della versione 3 con un criterio della versione 1 e tutte le condizioni del criterio della versione 3 andranno perse.

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[]

Binding

Associa un elenco di members, o entità, a un role. Facoltativamente, puoi specificare un condition che determina come e quando verranno applicati i bindings. Ciascun elemento bindings deve contenere almeno un'entità.

L'elemento bindings in un Policy può fare riferimento a un massimo di 1500 entità,fino a 250 possono essere gruppi Google. Ogni occorrenza di un'entità viene conteggiata per questi limiti. Ad esempio, se l'bindings concede 50 ruoli diversi a user:alice@example.com e non a qualsiasi altra entità, puoi aggiungere altre 1450 entità a bindings in Policy.

audit_configs[]

AuditConfig

Specifica la configurazione dell'audit logging del cloud per questo criterio.

etag

bytes

etag viene utilizzato per il controllo ottimistico della contemporaneità per evitare che gli aggiornamenti simultanei di un criterio si sovrascrivano a vicenda. Si consiglia vivamente ai sistemi di utilizzare etag nel ciclo di lettura, modifica e scrittura per eseguire aggiornamenti dei criteri al fine di evitare le condizioni di gara: viene restituito un etag nella risposta a getIamPolicy e i sistemi dovrebbero inserire questo etag nella richiesta a setIamPolicy per garantire che la modifica venga applicata alla stessa versione del criterio.

Importante:se utilizzi le condizioni IAM, devi includere il campo etag ogni volta che chiami setIamPolicy. Se ometti questo campo, IAM consente di sovrascrivere un criterio della versione 3 con un criterio della versione 1 e tutte le condizioni del criterio della versione 3 andranno perse.

SetIamPolicyRequest

Messaggio di richiesta per il metodo SetIamPolicy.

Campi
resource

string

OBBLIGATORIO: la risorsa per cui viene specificato il criterio. Consulta Nomi delle risorse per il valore appropriato per questo campo.

policy

Policy

OBBLIGATORIO: il criterio completo da applicare a resource. La dimensione del criterio è limitata ad alcuni 10 secondi della knowledge base. Un criterio vuoto è un criterio valido, ma alcuni servizi Google Cloud (come i progetti) potrebbero rifiutarlo.

update_mask

FieldMask

FACOLTATIVO: una maschera di campo che specifica i campi del criterio da modificare. Verranno modificati solo i campi nella maschera. Se non viene fornita alcuna maschera, viene utilizzata la seguente maschera predefinita:

paths: "bindings, etag"

TestIamPermissionsRequest

Messaggio di richiesta per il metodo TestIamPermissions.

Campi
resource

string

OBBLIGATORIO: la risorsa per cui vengono richiesti i dettagli del criterio. Consulta Nomi delle risorse per il valore appropriato per questo campo.

permissions[]

string

L'insieme di autorizzazioni da verificare per resource. Le autorizzazioni con caratteri jolly (come * o storage.*) non sono consentite. Per ulteriori informazioni, consulta la panoramica IAM.

TestIamPermissionsResponse

Messaggio di risposta per il metodo TestIamPermissions.

Campi
permissions[]

string

Un sottoinsieme di TestPermissionsRequest.permissions consentito dal chiamante.