Uma política de gestão de identidade e de acesso (IAM), que especifica os controlos de acesso para os recursos do Google Cloud.
Um Policy
é uma coleção de bindings
. Uma binding
associa um ou mais members
, ou principais, a um único role
. Os principais podem ser contas de utilizador, contas de serviço, grupos Google e domínios (como o G Suite). Uma role
é uma lista de autorizações com nome; cada role
pode ser uma função predefinida do IAM ou uma função personalizada criada pelo utilizador.
Para alguns tipos de recursos do Google Cloud, uma binding
também pode especificar uma condition
, que é uma expressão lógica que permite o acesso a um recurso apenas se a expressão for avaliada como true
. Uma condição pode adicionar restrições com base nos atributos do pedido, do recurso ou de ambos. Para saber que recursos suportam condições nas respetivas políticas de IAM, consulte a documentação da IAM.
Exemplo de 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
}
Exemplo de 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
Para uma descrição do IAM e das respetivas funcionalidades, consulte a documentação do IAM.
Representação JSON |
---|
{ "version": integer, "bindings": [ { object ( |
Campos | |
---|---|
version |
Especifica o formato da política. Os valores válidos são Qualquer operação que afete as associações de funções condicionais tem de especificar a versão
Importante: se usar condições do IAM, tem de incluir o campo Se uma política não incluir condições, as operações nessa política podem especificar qualquer versão válida ou deixar o campo não definido. Para saber que recursos suportam condições nas respetivas políticas de IAM, consulte a documentação da IAM. |
bindings[] |
Associa uma lista de O |
auditConfigs[] |
Especifica a configuração do registo de auditoria na nuvem para esta política. |
etag |
Importante: se usar condições do IAM, tem de incluir o campo Uma string codificada em Base64. |
Encadernação
Associa members
, ou principais, a um role
.
Representação JSON |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
Campos | |
---|---|
role |
Função atribuída à lista de Para uma vista geral das funções e autorizações de IAM, consulte a documentação de IAM. Para ver uma lista das funções predefinidas disponíveis, consulte aqui. |
members[] |
Especifica os principais que pedem acesso a um recurso do Google Cloud.
|
condition |
A condição associada a esta associação. Se a condição for avaliada como Se a condição for avaliada como Para saber que recursos suportam condições nas respetivas políticas de IAM, consulte a documentação da IAM. |
Expr
Representa uma expressão textual na sintaxe do Idioma de expressão comum (IEC). O IEC é um idioma de expressão semelhante a C. A sintaxe e a semântica da CEL estão documentadas em https://github.com/google/cel-spec.
Exemplo (comparação):
title: "Summary size limit"
description: "Determines if a summary is less than 100 chars"
expression: "document.summary.size() < 100"
Exemplo (igualdade):
title: "Requestor is owner"
description: "Determines if requestor is the document owner"
expression: "document.owner == request.auth.claims.email"
Exemplo (lógica):
title: "Public documents"
description: "Determine whether the document should be publicly visible"
expression: "document.type != 'private' && document.type != 'internal'"
Exemplo (manipulação de dados):
title: "Notification string"
description: "Create a notification string with a timestamp."
expression: "'New message received at ' + string(document.create_time)"
As variáveis e as funções exatas que podem ser referenciadas numa expressão são determinadas pelo serviço que a avalia. Consulte a documentação do serviço para obter informações adicionais.
Representação JSON |
---|
{ "expression": string, "title": string, "description": string, "location": string } |
Campos | |
---|---|
expression |
Representação textual de uma expressão na sintaxe da linguagem de expressão comum. |
title |
Opcional. Título da expressão, ou seja, uma string curta que descreve a respetiva finalidade. Isto pode ser usado, por exemplo, em IUs que permitem introduzir a expressão. |
description |
Opcional. Descrição da expressão. Este é um texto mais longo que descreve a expressão, por exemplo, quando o cursor passa sobre a mesma numa IU. |
location |
Opcional. String que indica a localização da expressão para a comunicação de erros, por exemplo, um nome de ficheiro e uma posição no ficheiro. |
AuditConfig
Especifica a configuração de auditoria para um serviço. A configuração determina que tipos de autorizações são registados e que identidades, se existirem, estão isentas do registo. Um AuditConfig tem de ter um ou mais AuditLogConfigs.
Se existirem AuditConfigs para allServices
e um serviço específico, é usada a união dos dois AuditConfigs para esse serviço: os log_types especificados em cada AuditConfig são ativados e os exemptedMembers em cada AuditLogConfig são isentos.
Exemplo de política com várias AuditConfigs:
{
"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"
]
}
]
}
]
}
Para o sampleservice, esta política ativa o registo de DATA_READ, DATA_WRITE e ADMIN_READ. Também isenta jose@example.com
do registo DATA_READ e aliya@example.com
do registo DATA_WRITE.
Representação JSON |
---|
{
"service": string,
"auditLogConfigs": [
{
object ( |
Campos | |
---|---|
service |
Especifica um serviço que vai ser ativado para o registo de auditoria. Por exemplo, |
auditLogConfigs[] |
A configuração para o registo de cada tipo de autorização. |
AuditLogConfig
Fornece a configuração para registar um tipo de autorizações. Exemplo:
{
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
}
]
}
Isto ativa o registo "DATA_READ" e "DATA_WRITE", ao mesmo tempo que isenta jose@example.com do registo DATA_READ.
Representação JSON |
---|
{
"logType": enum ( |
Campos | |
---|---|
logType |
O tipo de registo que esta configuração ativa. |
exemptedMembers[] |
Especifica as identidades que não causam registo para este tipo de autorização. Segue o mesmo formato de |
LogType
A lista de tipos de autorização válidos para os quais o registo pode ser configurado. As gravações de administrador são sempre registadas e não são configuráveis.
Enumerações | |
---|---|
LOG_TYPE_UNSPECIFIED |
Predefinição. Nunca deve ser este valor. |
ADMIN_READ |
Leituras de administrador. Exemplo: CloudIAM getIamPolicy |
DATA_WRITE |
Escritas de dados. Exemplo: CloudSQL Users create |
DATA_READ |
Leituras de dados. Exemplo: lista de utilizadores do CloudSQL |