Policy

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 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 predefinido do IAM ou um papel personalizado criado pelo usuário.

Opcionalmente, um binding pode especificar um condition, que é uma expressão lógica que permite acesso a um recurso apenas 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.

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 (Binding)
    }
  ],
  "auditConfigs": [
    {
      object (AuditConfig)
    }
  ],
  "etag": string
}
Campos
version

integer

Especifica o formato da política.

Os valores válidos são 0, 1, e 3. As solicitações que especificam um valor inválido são rejeitadas.

Qualquer operação que afete vinculações de papéis condicionais precisa especificar a versão 3. Esse requisito se aplica às seguintes operações:

  • Como conseguir uma política que inclua uma vinculação de papel condicional
  • Como adicionar uma vinculação de papel condicional a uma política
  • Como alterar uma vinculação de papel condicional em uma política
  • Como remover qualquer vinculação de papel, com ou sem uma condição, de uma política que inclua condições

Importante: se você usar as condições do IAM, precisará incluir o campo etag sempre que chamar setIamPolicy. Se você omitir esse campo, o IAM permitirá substituir uma política de versão 3 por uma política de versão 1, e todas as condições na política de versão 3 serão perdidas.

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.

bindings[]

object (Binding)

Associa uma lista de members a um role. Como alternativa, pode especificar um condition que determina como e quando o bindings é aplicado. Cada bindings precisa conter pelo menos um membro.

auditConfigs[]

object (AuditConfig)

Especifica a configuração do Cloud Audit Logging para esta política.

etag

string (bytes format)

etag é usado para otimização do controle de simultaneidade, para ajudar a evitar que atualizações simultâneas de uma política substituam-se mutuamente. É altamente recomendável que os sistemas usem etag no ciclo de leitura-modificação-gravação para fazer atualizações de política e evitar disputas. Um etag é retornado na resposta a getIamPolicy e ele é colocado na solicitação a setIamPolicy para garantir que a alteração seja aplicada à mesma versão da política.

Importante: se você usar as condições do IAM, precisará incluir o campo etag sempre que chamar setIamPolicy. Se você omitir esse campo, o IAM permitirá substituir uma política de versão 3 por uma política de versão 1, e todas as condições na política de versão 3 serão perdidas.

Uma string codificada em base64.

Vinculação

Associa members a um role.

Representação JSON

{
  "role": string,
  "members": [
    string
  ],
  "condition": {
    object (Expr)
  }
}
Campos
role

string

Papel atribuído aos members. Por exemplo, roles/viewer, roles/editor ou roles/owner.

members[]

string

Especifica as identidades que solicitam acesso a um recurso do Cloud Platform. Os membersmembers podem ter os seguintes valores:

  • allUsers: um identificador especial que representa qualquer pessoa na Internet, com ou sem uma conta do Google.

  • allAuthenticatedUsers: um identificador especial que representa qualquer pessoa autenticada com uma Conta do Google ou uma conta de serviço.

  • user:{emailid}: um endereço de e-mail que representa uma Conta do Google específica. Por exemplo, alice@example.com.

  • serviceAccount:{emailid}: um endereço de e-mail que representa uma conta de serviço. Por exemplo, my-other-app@appspot.gserviceaccount.com.

  • group:{emailid}: um endereço de e-mail que representa um grupo do Google. Por exemplo, admins@example.com.

  • deleted:user:{emailid}?uid={uniqueid}: um endereço de e-mail (mais identificador exclusivo) que representa um usuário que foi excluído recentemente. Por exemplo, alice@example.com?uid=123456789012345678901. Se o usuário for recuperado, esse valor será revertido para user:{emailid} e o usuário recuperado manterá o papel na vinculação.

  • deleted:serviceAccount:{emailid}?uid={uniqueid}: um endereço de e-mail (além do identificador exclusivo) que representa uma conta de serviço que foi excluída recentemente. Por exemplo, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. Se a exclusão da conta de serviço for revertida, esse valor será revertido para serviceAccount:{emailid}, e a conta de serviço não excluída manterá o papel na vinculação.

  • deleted:group:{emailid}?uid={uniqueid}: um endereço de e-mail (além do identificador exclusivo) que representa um grupo do Google que foi excluído recentemente. Por exemplo, admins@example.com?uid=123456789012345678901. Se o grupo for recuperado, esse valor será revertido para group:{emailid} e o grupo recuperado manterá o papel na vinculação.

  • domain:{domain}: domínio do G Suite (principal) que representa todos os usuários dele. Por exemplo, google.com ou example.com.
condition

object (Expr)

A condição que está associada a essa vinculação. OBSERVAÇÃO: uma condição não satisfeita impede o acesso do usuário pela vinculação atual. Vinculações diferentes, incluindo as próprias condições, são examinadas de maneira independente.

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

string

Representação textual de uma expressão na sintaxe Common Expression Language.

title

string

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

string

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

string

Opcional. Uma sequência indicando a localização da expressão para relatórios 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. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.

Representação JSON

{
  "service": string,
  "auditLogConfigs": [
    {
      object (AuditLogConfig)
    }
  ]
}
Campos
service

string

Especifica um serviço que é ativado para geração de registros de auditoria. Por exemplo: storage.googleapis.com e cloudsql.googleapis.com. allServices é um valor especial que abrange todos os serviços.

auditLogConfigs[]

object (AuditLogConfig)

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 (LogType),
  "exemptedMembers": [
    string
  ]
}
Campos
logType

enum (LogType)

O tipo de registro permitido por essa configuração.

exemptedMembers[]

string

Especifica as identidades que não causam geração de registros para esse tipo de permissão. Segue o mesmo formato de Binding.members.

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