Policy

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 (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. Os pedidos que especificam um valor inválido são rejeitados.

Qualquer operação que afete as associações de funções condicionais tem de especificar a versão 3. Este requisito aplica-se às seguintes operações:

  • Obter uma política que inclua uma associação de funções condicional
  • Adicionar uma associação de função condicional a uma política
  • Alterar uma associação de função condicional numa política
  • Remover qualquer associação de funções, com ou sem uma condição, de uma política que inclua condições

Importante: se usar condições do IAM, tem de incluir o campo etag sempre que chamar setIamPolicy. Se omitir este campo, o IAM permite-lhe 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 são perdidas.

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[]

object (Binding)

Associa uma lista de members, ou principais, a um role. Opcionalmente, pode especificar um condition que determine como e quando os bindings são aplicados. Cada um dos bindings tem de conter, pelo menos, um principal.

O bindings num Policy pode referir-se a até 1500 responsáveis; até 250 destes responsáveis podem ser grupos Google. Cada ocorrência de um principal conta para estes limites. Por exemplo, se a bindings conceder 50 funções diferentes a user:alice@example.com e a nenhum outro principal, pode adicionar mais 1450 principais à bindings no Policy.

auditConfigs[]

object (AuditConfig)

Especifica a configuração do registo de auditoria na nuvem para esta política.

etag

string (bytes format)

etag é usado para o controlo de simultaneidade otimista como forma de ajudar a evitar que as atualizações simultâneas de uma política se substituam mutuamente. É fortemente sugerido que os sistemas usem o etag no ciclo de leitura-modificação-escrita para fazer atualizações de políticas de modo a evitar condições de concorrência: é devolvido um etag na resposta a getIamPolicy, e espera-se que os sistemas coloquem esse etag no pedido a setIamPolicy para garantir que a respetiva alteração é aplicada à mesma versão da política.

Importante: se usar condições do IAM, tem de incluir o campo etag sempre que chamar setIamPolicy. Se omitir este campo, o IAM permite-lhe 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 são perdidas.

Uma string codificada em Base64.

Encadernação

Associa members, ou principais, a um role.

Representação JSON
{
  "role": string,
  "members": [
    string
  ],
  "condition": {
    object (Expr)
  }
}
Campos
role

string

Função atribuída à lista de members ou principais. Por exemplo, roles/viewer, roles/editor ou roles/owner.

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[]

string

Especifica os principais que pedem acesso a um recurso do Google Cloud. members pode ter os seguintes valores:

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

  • allAuthenticatedUsers: um identificador especial que representa qualquer pessoa autenticada com uma Conta Google ou uma conta de serviço. Não inclui identidades provenientes de fornecedores de identidade (IdPs) externos através da federação de identidades.

  • user:{emailid}: um endereço de email que representa uma conta Google específica. Por exemplo, alice@example.com .

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

  • serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]: um identificador de uma conta de serviço do Kubernetes. Por exemplo, my-project.svc.id.goog[my-namespace/my-kubernetes-sa].

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

  • domain:{domain}: o domínio do G Suite (principal) que representa todos os utilizadores desse domínio. Por exemplo, google.com ou example.com.
  • principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: uma única identidade num Workforce Identity Pool.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{groupId}: todas as identidades da força de trabalho num grupo.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}: todas as identidades da força de trabalho com um valor de atributo específico.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*: Todas as identidades num Workforce Identity Pool.

  • principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}: uma única identidade num Workload Identity Pool.

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{groupId}: Um grupo do Workload Identity Pool.

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}: Todas as identidades num Workload Identity Pool com um determinado atributo.

  • principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*: Todas as identidades num Workload Identity Pool.

  • deleted:user:{emailid}?uid={uniqueid}: um endereço de email (mais um identificador exclusivo) que representa um utilizador eliminado recentemente. Por exemplo, alice@example.com?uid=123456789012345678901. Se o utilizador for recuperado, este valor reverte para user:{emailid} e o utilizador recuperado mantém a função na associação.

  • deleted:serviceAccount:{emailid}?uid={uniqueid}: um endereço de email (mais um identificador exclusivo) que representa uma conta de serviço que foi eliminada recentemente. Por exemplo, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. Se a conta de serviço for anulada, este valor reverte para serviceAccount:{emailid} e a conta de serviço anulada mantém a função na associação.

  • deleted:group:{emailid}?uid={uniqueid}: um endereço de email (mais um identificador único) que representa um Grupo Google que foi eliminado recentemente. Por exemplo, admins@example.com?uid=123456789012345678901. Se o grupo for recuperado, este valor reverte para group:{emailid} e o grupo recuperado mantém a função na associação.

  • deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}: identidade única eliminada num Workforce Identity Pool. Por exemplo, deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value.

condition

object (Expr)

A condição associada a esta associação.

Se a condição for avaliada como true, esta associação aplica-se ao pedido atual.

Se a condição for avaliada como false, esta associação não se aplica ao pedido atual. No entanto, uma associação de funções diferente pode conceder a mesma função a um ou mais dos principais nesta associação.

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

string

Representação textual de uma expressão na sintaxe da linguagem de expressão comum.

title

string

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

string

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

string

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 (AuditLogConfig)
    }
  ]
}
Campos
service

string

Especifica um serviço que vai ser ativado para o registo de auditoria. Por exemplo, storage.googleapis.com, cloudsql.googleapis.com. allServices é um valor especial que abrange todos os serviços.

auditLogConfigs[]

object (AuditLogConfig)

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

enum (LogType)

O tipo de registo que esta configuração ativa.

exemptedMembers[]

string

Especifica as identidades que não causam registo para este tipo de autorização. Segue o mesmo formato de Binding.members.

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