Uma política de gerenciamento de identidade e acesso (IAM, na sigla em inglês), que especifica controles de acesso para recursos do Google Cloud.
Um Policy
é uma coleção de bindings
. Uma binding
vincula um ou mais members
, ou principais, a um único role
. Os membros podem ser contas de usuário, contas de serviço, Grupos do Google e domínios, como o G Suite. Um role
é uma lista nomeada de permissões. Cada role
pode ser um papel pré-definido do IAM ou um papel personalizado criado pelo usuário.
Para determinados tipos de recursos do Google Cloud, uma binding
também pode especificar uma condition
, que é uma expressão lógica que permitirá acesso a um recurso somente se a expressão for avaliada como true
. Uma condição pode adicionar restrições com base nos atributos da solicitação, do recurso ou de ambos. Para saber quais recursos são compatíveis com as condições nas políticas do IAM, consulte a documentação do 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 dos recursos dele, 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 vinculações condicionais de papel precisa especificar a versão
Importante: se você usar as condições do IAM, precisará incluir o campo Se uma política não incluir nenhuma condição, as operações nessa política poderão especificar qualquer versão válida ou deixar o campo não definido. Para saber quais recursos são compatíveis com as condições nas políticas do IAM, consulte a documentação do IAM. |
bindings[] |
Associa uma lista de O |
auditConfigs[] |
Especifica a configuração do Cloud Audit Logging para esta política. |
etag |
Importante: se você usar as condições do IAM, precisará incluir o campo Uma string codificada em base64. |
Vinculação
Associa members
, ou principais, a um role
.
Representação JSON |
---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
Campos | |
---|---|
role |
Papel atribuído à lista de Para uma visão geral dos papéis e permissões do IAM, consulte a documentação do IAM. Consulte aqui uma lista dos papéis predefinidos disponíveis. |
members[] |
Especifica as identidades que solicitam acesso a um recurso do Google Cloud.
|
condition |
A condição que está associada a essa vinculação. Se a condição for avaliada como Se a condição for avaliada como Para saber quais recursos são compatíveis com as condições nas políticas do IAM, consulte a documentação do IAM. |
Expr
Representa uma expressão textual na sintaxe Common Expression Language (CEL). A CEL é uma linguagem de expressão semelhante a C. A sintaxe e a semântica do 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 funções exatas que podem ser referenciadas em uma expressão são determinadas pelo serviço que a avalia. Consulte a documentação do serviço para mais informações.
Representação JSON |
---|
{ "expression": string, "title": string, "description": string, "location": string } |
Campos | |
---|---|
expression |
Representação textual de uma expressão na sintaxe Common Expression Language. |
title |
Opcional. Título da expressão, ou seja, uma string curta que descreve sua finalidade. Isso pode ser usado, por exemplo, em IUs que permitam inserir 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 é passado sobre ela em uma IU. |
location |
Opcional. String que indica o local da expressão para o relatório de erros, por exemplo, um nome de arquivo e uma posição no arquivo. |
AuditConfig
Especifica a configuração de auditoria para um serviço. A configuração determina quais tipos de permissão são registrados e quais identidades, se houver, estão isentas de geração de registros. Um AuditConfig precisa ter um ou mais AuditLogConfigs.
Se houver AuditConfigs para allServices
e um serviço específico, a união dos dois AuditConfigs será usada para esse serviço: os tipos de registro especificados em cada AuditConfig são ativados e os exemptedMembers em cada AuditLogConfig são isentos.
Exemplo de política com vários 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 sampleservice, essa política permite a geração de registros de DATA_READ, DATA_WRITE e ADMIN_READ. Ela também isenta jose@example.com
da geração de registros de DATA_READ e aliya@example.com
da geração de registros de DATA_WRITE.
Representação JSON |
---|
{
"service": string,
"auditLogConfigs": [
{
object ( |
Campos | |
---|---|
service |
Especifica um serviço que é ativado para geração de registros de auditoria. Por exemplo: |
auditLogConfigs[] |
A configuração para a geração de registros de cada tipo de permissão. |
AuditLogConfig
Fornece a configuração para geração de registros de um tipo de permissões. Exemplo:
{
"auditLogConfigs": [
{
"logType": "DATA_READ",
"exemptedMembers": [
"user:jose@example.com"
]
},
{
"logType": "DATA_WRITE"
}
]
}
Isso ativa a geração de registros de DATA_READ e DATA_WRITE e isenta jose@example.com da geração de registros de DATA_READ.
Representação JSON |
---|
{
"logType": enum ( |
Campos | |
---|---|
logType |
O tipo de registro permitido por essa configuração. |
exemptedMembers[] |
Especifica as identidades que não causam geração de registros para esse tipo de permissão. Segue o mesmo formato de |
LogType
A lista de tipos de permissão válidos para os quais a geração de registros pode ser configurada. As gravações de administrador sempre são registradas e não são configuráveis.
Tipos enumerados | |
---|---|
LOG_TYPE_UNSPECIFIED |
Caso padrão. Nunca deve ser isso. |
ADMIN_READ |
O administrador lê. Exemplo: CloudIAM getIamPolicy |
DATA_WRITE |
Dados são gravados. Exemplo: CloudSQL Users create |
DATA_READ |
Dados são lidos. Exemplo: CloudSQL Users list |