Policy

Uma política de gerenciamento de identidade e acesso (IAM), que especifica controles de acesso para recursos do Google Cloud.

Uma Policy é uma coleção de bindings . Uma binding vincula um ou mais members , ou principais, a uma única role . Os principais podem ser contas de usuário, contas de serviço, grupos do Google e domínios (como o G Suite). Uma role é uma lista nomeada de permissões; cada role pode ser uma função predefinida do IAM ou uma função personalizada criada pelo usuário.

Para alguns tipos de recursos do Google Cloud, uma binding também pode especificar uma condition , que é uma expressão lógica que permite 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 oferecem suporte a condições em suas políticas do IAM, consulte a documentação do IAM .

Exemplo JSON:

    {
      "bindings": [
        {
          "role": "roles/resourcemanager.organizationAdmin",
          "members": [
            "user:[email protected]",
            "group:[email protected]",
            "domain:google.com",
            "serviceAccount:[email protected]"
          ]
        },
        {
          "role": "roles/resourcemanager.organizationViewer",
          "members": [
            "user:[email protected]"
          ],
          "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:[email protected]
      - group:[email protected]
      - domain:google.com
      - serviceAccount:[email protected]
      role: roles/resourcemanager.organizationAdmin
    - members:
      - user:[email protected]
      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 obter uma descrição do IAM e seus recursos, 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 Solicitações que especificam um valor inválido são rejeitadas.

Qualquer operação que afete vinculações de funções condicionais deve especificar a versão 3 Este requisito se aplica às seguintes operações:

  • Obtendo uma política que inclui uma vinculação de função condicional
  • Adicionando uma vinculação de função condicional a uma política
  • Alterando uma vinculação de função condicional em uma política
  • Removendo qualquer vinculação de função, com ou sem condição, de uma política que inclui condições

Importante: Se você usar as Condições do IAM, deverá incluir o campo etag sempre que chamar setIamPolicy . Se você omitir esse campo, o IAM permitirá que você substitua uma política da versão 3 por uma política da versão 1 , e todas as condições da política da 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 indefinido.

Para saber quais recursos oferecem suporte a condições em suas políticas do IAM, consulte a documentação do IAM .

bindings[]

object ( Binding )

Associa uma lista de members , ou principais, a uma role . Opcionalmente, pode especificar uma condition que determina como e quando as bindings são aplicadas. Cada uma das bindings deve conter pelo menos um principal.

As bindings em uma Policy podem se referir a até 1.500 entidades principais; até 250 dessas entidades principais podem ser grupos do Google. Cada ocorrência de uma entidade principal conta para esses limites. Por exemplo, se as bindings atribuírem 50 funções diferentes a user:[email protected] e a nenhuma outra entidade principal, você poderá adicionar outras 1.450 entidades principais às bindings na Policy .

auditConfigs[]

object ( AuditConfig )

Especifica a configuração de registro de auditoria em nuvem para esta política.

etag

string ( bytes format)

etag é usada para controle de concorrência otimista como forma de ajudar a evitar que atualizações simultâneas de uma política se sobrescrevam. É altamente recomendável que os sistemas utilizem a etag no ciclo de leitura-modificação-gravação para realizar atualizações de políticas, a fim de evitar condições de corrida: uma etag é retornada na resposta a getIamPolicy , e espera-se que os sistemas insiram essa etag 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, deverá incluir o campo etag sempre que chamar setIamPolicy . Se você omitir esse campo, o IAM permitirá que você substitua uma política da versão 3 por uma política da versão 1 , e todas as condições da política da versão 3 serão perdidas.

Uma string codificada em base64.

Vinculativo

members associados, ou principais, com uma 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 visão geral das funções e permissões do IAM, consulte a documentação do IAM . Para uma lista das funções predefinidas disponíveis, consulte aqui .

members[]

string

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

  • allUsers : Um identificador especial que representa qualquer pessoa que esteja 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. Não inclui identidades provenientes de provedores de identidade externos (IdPs) por meio de federação de identidades.

  • user:{emailid} : Um endereço de e-mail que representa uma conta específica do Google. Por exemplo, [email protected] .

  • serviceAccount:{emailid} : um endereço de e-mail que representa uma conta de serviço do Google. Por exemplo, [email protected] .

  • serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}] : Um identificador para 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 e-mail que representa um grupo do Google. Por exemplo, [email protected] .

  • domain:{domain} : o domínio do G Suite (primário) que representa todos os usuários 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 em um pool de identidades da força de trabalho.

  • principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{groupId} : todas as identidades da força de trabalho em um 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 em um pool de identidades da força de trabalho.

  • principal://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value} : Uma única identidade em um pool de identidades de carga de trabalho.

  • principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/group/{groupId} : Um grupo de pools de identidade de carga de trabalho.

  • principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value} : todas as identidades em um pool de identidades de carga de trabalho com um determinado atributo.

  • principalSet://iam.googleapis.com/projects/{projectNumber}/locations/global/workloadIdentityPools/{pool_id}/* : Todas as identidades em um pool de identidades de carga de trabalho.

  • deleted:user:{emailid}?uid={uniqueid} : Um endereço de e-mail (mais um identificador exclusivo) representando um usuário que foi excluído recentemente. Por exemplo, [email protected]?uid=123456789012345678901 . Se o usuário for recuperado, este valor será revertido para user:{emailid} e o usuário recuperado manterá a função na vinculação.

  • deleted:serviceAccount:{emailid}?uid={uniqueid} : Um endereço de e-mail (mais um identificador exclusivo) representando uma conta de serviço que foi excluída recentemente. Por exemplo, [email protected]?uid=123456789012345678901 . Se a conta de serviço for recuperada, este valor será revertido para serviceAccount:{emailid} e a conta de serviço recuperada manterá a função na vinculação.

  • deleted:group:{emailid}?uid={uniqueid} : Um endereço de e-mail (mais um identificador exclusivo) representando um grupo do Google que foi excluído recentemente. Por exemplo, [email protected]?uid=123456789012345678901 . Se o grupo for recuperado, este valor será revertido para group:{emailid} e o grupo recuperado manterá a função na vinculação.

  • deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value} : Identidade única excluída em um pool de identidades da força de trabalho. 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 ligação.

Se a condição for avaliada como true , essa vinculação será aplicada à solicitação atual.

Se a condição for avaliada como false , essa vinculação não se aplica à solicitação atual. No entanto, uma vinculação de função diferente pode conceder a mesma função a um ou mais dos principais nessa vinculação.

Para saber quais recursos oferecem suporte a condições em suas políticas do IAM, consulte a documentação do IAM .

Expr

Representa uma expressão textual na sintaxe da Linguagem de Expressão Comum (CEL). CEL é uma linguagem de expressão semelhante à linguagem 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 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 obter 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 da Common Expression Language.

title

string

Opcional. Título para a expressão, ou seja, uma string curta descrevendo sua finalidade. Isso pode ser usado, por exemplo, em interfaces de usuário que permitem a inserção da expressão.

description

string

Opcional. Descrição da expressão. Este é um texto mais longo que descreve a expressão, por exemplo, ao passar o mouse sobre ela em uma interface de usuário.

location

string

Opcional. String que indica a localização da expressão para relatório de erros, por exemplo, um nome de arquivo e uma posição no arquivo.

Configuração de auditoria

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, são isentas de registro. Uma AuditConfig deve ter uma 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 log_types especificados em cada AuditConfig serão habilitados e os exemptedMembers em cada AuditLogConfig serão isentos.

Exemplo de política com vários AuditConfigs:

{
  "auditConfigs": [
    {
      "service": "allServices",
      "auditLogConfigs": [
        {
          "logType": "DATA_READ",
          "exemptedMembers": [
            "user:[email protected]"
          ]
        },
        {
          "logType": "DATA_WRITE"
        },
        {
          "logType": "ADMIN_READ"
        }
      ]
    },
    {
      "service": "sampleservice.googleapis.com",
      "auditLogConfigs": [
        {
          "logType": "DATA_READ"
        },
        {
          "logType": "DATA_WRITE",
          "exemptedMembers": [
            "user:[email protected]"
          ]
        }
      ]
    }
  ]
}

Para o sampleservice, esta política habilita os registros DATA_READ, DATA_WRITE e ADMIN_READ. Ela também isenta [email protected] do registro DATA_READ e [email protected] do registro DATA_WRITE.

Representação JSON
{
  "service": string,
  "auditLogConfigs": [
    {
      object (AuditLogConfig)
    }
  ]
}
Campos
service

string

Especifica um serviço que será habilitado para registro 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 registro de cada tipo de permissão.

Configuração do Log de Auditoria

Fornece a configuração para registrar um tipo de permissão. Exemplo:

{
  "auditLogConfigs": [
    {
      "logType": "DATA_READ",
      "exemptedMembers": [
        "user:[email protected]"
      ]
    },
    {
      "logType": "DATA_WRITE"
    }
  ]
}

Isso habilita o registro 'DATA_READ' e 'DATA_WRITE', ao mesmo tempo que isenta [email protected] do registro DATA_READ.

Representação JSON
{
  "logType": enum (LogType),
  "exemptedMembers": [
    string
  ]
}
Campos
logType

enum ( LogType )

O tipo de log que esta configuração habilita.

exemptedMembers[]

string

Especifica as identidades que não geram registro para este tipo de permissão. Segue o mesmo formato de Binding.members .

Tipo de log

A lista de tipos de permissão válidos para os quais o registro pode ser configurado. As gravações de administrador são sempre registradas e não são configuráveis.

Enumerações
LOG_TYPE_UNSPECIFIED Caso padrão. Nunca deveria ser assim.
ADMIN_READ O administrador lê. Exemplo: CloudIAM getIamPolicy
DATA_WRITE Gravações de dados. Exemplo: usuários do CloudSQL criam
DATA_READ Leituras de dados. Exemplo: Lista de usuários do CloudSQL