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
. Um binding
vincula um ou mais members
, ou principais, a um único role
. Os principais 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 predefinido do IAM ou um papel personalizado criado pelo usuário.
Para determinados tipos de recursos do Google Cloud, um 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 Registro de Auditoria do Cloud para esta política. |
etag |
Importante: se você usar as condições do IAM, precisará incluir o campo Uma string codificada em base64. |
Binding
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. Para uma lista dos papéis predefinidos disponíveis, consulte aqui. |
members[] |
Especifica os principais 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.
Enums | |
---|---|
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 |