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.
I valori validi sono 0, 1 e 3. Le richieste che specificano un valore non valido vengono rifiutate.
Qualsiasi operazione che influisce sulle associazioni di ruoli condizionali deve specificare la versione 3. Questo requisito si applica alle seguenti operazioni:
Ottenere un criterio che include un'associazione di ruoli condizionale
Aggiunta di un'associazione di ruoli condizionale a un criterio
Modificare un'associazione di ruoli condizionali in un criterio
Rimozione di qualsiasi associazione di ruolo, 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 ti 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 scoprire quali risorse supportano le condizioni nei propri criteri IAM, consulta la documentazione di IAM.
Associa un elenco di members o entità a un role. Se vuoi, puoi specificare un condition che determina come e quando vengono applicati i bindings. Ciascun bindings deve contenere almeno un principale.
Il bindings in un Policy può fare riferimento a un massimo di 1500 entità; fino a 250 di queste entità possono essere gruppi Google. Ogni occorrenza di un principale viene conteggiata ai fini di questi limiti. Ad esempio, se bindings concede 50 ruoli diversi a user:alice@example.com e non ad altri entità, puoi aggiungere altri 1450 entità a bindings in Policy.
etag viene utilizzato per il controllo della concorrenza ottimistica come metodo per evitare che gli aggiornamenti simultanei di un criterio si sovrascrivano a vicenda. È vivamente consigliato che i sistemi utilizzino etag nel ciclo di lettura, modifica e scrittura per eseguire aggiornamenti dei criteri al fine di evitare condizioni di gara: un etag viene restituito nella risposta a getIamPolicy e i sistemi devono inserire questo etag nella richiesta a setIamPolicy per assicurarsi 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 ti 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.
Ruolo assegnato all'elenco di members o entità. Ad esempio, roles/viewer, roles/editor o roles/owner.
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[]
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à provenienti da provider di identità esterni (IdP) tramite la federazione delle identità.
user:{emailid}: un indirizzo email che rappresenta un Account Google specifico. 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 per 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 di quel dominio. Ad esempio, google.com o example.com.
principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: una singola identità in un pool di identità della forza lavoro.
principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{groupId}: 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à del personale con un valore dell'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/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}: una singola identità in un pool di identità del workload.
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/group/{groupId}: un gruppo di pool di identità del workload.
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}: tutte le identità in un pool di identità del workload con un determinato attributo.
principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/*: tutte le identità in un pool di identità del workload.
deleted:user:{emailid}?uid={uniqueid}: un indirizzo email (oltre a un identificatore univoco) che rappresenta un utente eliminato di recente. Ad esempio, alice@example.com?uid=123456789012345678901. Se l'utente viene recuperato, questo valore torna a user:{emailid} e l'utente recuperato mantiene il ruolo nella associazione.
deleted:serviceAccount:{emailid}?uid={uniqueid}: un indirizzo email (oltre a 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 viene ripristinato, questo valore torna a serviceAccount:{emailid} e l'account di servizio ripristinato mantiene il ruolo nella associazione.
deleted:group:{emailid}?uid={uniqueid}: un indirizzo email (oltre a 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 torna a group:{emailid} e il gruppo recuperato mantiene il ruolo nella associazione.
deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: È stata eliminata una singola identità 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.
Se la condizione ha valore true, questa associazione si applica alla richiesta corrente.
Se la condizione ha valore false, questa associazione non si applica alla richiesta corrente. Tuttavia, un'associazione di ruoli diversa potrebbe concedere lo stesso ruolo a uno o più degli entità in questa associazione.
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 testuale di un'espressione nella sintassi di Common Expression Language.
title
string
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
string
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
string
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.
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.
Specifica un servizio per cui verrà attivato l'audit logging. Ad esempio, storage.googleapis.com, cloudsql.googleapis.com. allServices è un valore speciale che copre tutti i servizi.
Il tipo di log abilitato da questa configurazione.
exemptedMembers[]
string
Specifica le identità che non generano log per questo tipo di autorizzazione. Deve seguire lo stesso formato di Binding.members.
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.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-30 UTC."],[[["\u003cp\u003eIAM policies manage access control for Google Cloud resources through a collection of bindings.\u003c/p\u003e\n"],["\u003cp\u003eA binding in an IAM policy links one or more principals (members) to a single role, with principals including user accounts, service accounts, Google groups, and domains.\u003c/p\u003e\n"],["\u003cp\u003eIAM policies can also contain a condition, which is a logical expression that must evaluate to true for the binding to apply, enabling constraint-based access.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eetag\u003c/code\u003e field in the policy JSON is crucial for optimistic concurrency control, especially when using IAM Conditions, to prevent simultaneous updates from overwriting each other.\u003c/p\u003e\n"],["\u003cp\u003eAudit configurations (\u003ccode\u003eauditConfigs\u003c/code\u003e) within an IAM policy allow for specifying which types of permissions are logged, and can also list exempted members for specific types of logging.\u003c/p\u003e\n"]]],[],null,["# Policy\n\n- [JSON representation](#SCHEMA_REPRESENTATION)\n- [Binding](#Binding)\n - [JSON representation](#Binding.SCHEMA_REPRESENTATION)\n- [Expr](#Expr)\n - [JSON representation](#Expr.SCHEMA_REPRESENTATION)\n- [AuditConfig](#AuditConfig)\n - [JSON representation](#AuditConfig.SCHEMA_REPRESENTATION)\n- [AuditLogConfig](#AuditLogConfig)\n - [JSON representation](#AuditLogConfig.SCHEMA_REPRESENTATION)\n- [LogType](#LogType)\n\nAn Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.\n\nA `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role.\n\nFor some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).\n\n**JSON example:** \n\n {\n \"bindings\": [\n {\n \"role\": \"roles/resourcemanager.organizationAdmin\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-project-id@appspot.gserviceaccount.com\"\n ]\n },\n {\n \"role\": \"roles/resourcemanager.organizationViewer\",\n \"members\": [\n \"user:eve@example.com\"\n ],\n \"condition\": {\n \"title\": \"expirable access\",\n \"description\": \"Does not grant access after Sep 2020\",\n \"expression\": \"request.time \u003c timestamp('2020-10-01T00:00:00.000Z')\",\n }\n }\n ],\n \"etag\": \"BwWWja0YfJA=\",\n \"version\": 3\n }\n\n**YAML example:** \n\n bindings:\n - members:\n - user:mike@example.com\n - group:admins@example.com\n - domain:google.com\n - serviceAccount:my-project-id@appspot.gserviceaccount.com\n role: roles/resourcemanager.organizationAdmin\n - members:\n - user:eve@example.com\n role: roles/resourcemanager.organizationViewer\n condition:\n title: expirable access\n description: Does not grant access after Sep 2020\n expression: request.time \u003c timestamp('2020-10-01T00:00:00.000Z')\n etag: BwWWja0YfJA=\n version: 3\n\nFor a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).\n\nBinding\n-------\n\nAssociates `members`, or principals, with a `role`.\n\nExpr\n----\n\nRepresents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at \u003chttps://github.com/google/cel-spec\u003e.\n\nExample (Comparison): \n\n title: \"Summary size limit\"\n description: \"Determines if a summary is less than 100 chars\"\n expression: \"document.summary.size() \u003c 100\"\n\nExample (Equality): \n\n title: \"Requestor is owner\"\n description: \"Determines if requestor is the document owner\"\n expression: \"document.owner == request.auth.claims.email\"\n\nExample (Logic): \n\n title: \"Public documents\"\n description: \"Determine whether the document should be publicly visible\"\n expression: \"document.type != 'private' && document.type != 'internal'\"\n\nExample (Data Manipulation): \n\n title: \"Notification string\"\n description: \"Create a notification string with a timestamp.\"\n expression: \"'New message received at ' + string(document.create_time)\"\n\nThe exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.\n\nAuditConfig\n-----------\n\nSpecifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exemptedMembers in each AuditLogConfig are exempted.\n\nExample Policy with multiple AuditConfigs: \n\n {\n \"auditConfigs\": [\n {\n \"service\": \"allServices\",\n \"auditLogConfigs\": [\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\n \"user:jose@example.com\"\n ]\n },\n {\n \"logType\": \"DATA_WRITE\"\n },\n {\n \"logType\": \"ADMIN_READ\"\n }\n ]\n },\n {\n \"service\": \"sampleservice.googleapis.com\",\n \"auditLogConfigs\": [\n {\n \"logType\": \"DATA_READ\"\n },\n {\n \"logType\": \"DATA_WRITE\",\n \"exemptedMembers\": [\n \"user:aliya@example.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.\n\nAuditLogConfig\n--------------\n\nProvides the configuration for logging a type of permissions. Example: \n\n {\n \"auditLogConfigs\": [\n {\n \"logType\": \"DATA_READ\",\n \"exemptedMembers\": [\n \"user:jose@example.com\"\n ]\n },\n {\n \"logType\": \"DATA_WRITE\"\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting [jose@example.com](mailto:jose@example.com) from DATA_READ logging.\n\nLogType\n-------\n\nThe list of valid permission types for which logging can be configured. Admin writes are always logged, and are not configurable."]]