Referência de atributos para condições do IAM

Este documento descreve os atributos compatíveis em uma expressão de condição.

Atributos de condição compatíveis

As seções a seguir resumem os atributos compatíveis e indicam quais serviços doTrusted Cloud by S3NS reconhecem cada um deles.

Atributos de recurso

Os atributos a seguir estão relacionados ao recurso mencionado na solicitação.

Atributo Resumo do uso Serviços Trusted Cloud compatíveis
Atributo do serviço de recurso

Gerencie o acesso com base no serviço Trusted Cloud que está sendo usado.

É possível usar esse atributo nas vinculações de papéis da política de permissão.

  • BigQuery
  • API BigQuery Reservation
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
Atributo de tipo de recurso

Gerencie o acesso com base no tipo de recurso.

É possível usar esse atributo nas vinculações de papéis da política de permissão.

  • BigQuery
  • API BigQuery Reservation
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
Atributo de nome de recurso

Gerencie o acesso com base no nome do recurso.

É possível usar esse atributo nas vinculações de papéis da política de permissão.

  • BigQuery
  • API BigQuery Reservation
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
Tags de recurso

Gerencie o acesso com base nas tags anexadas ao recurso.

Você pode usar esse atributo nos seguintes lugares:

  • Permitir vinculações de papéis da política
  • Regras de negação da política de negação

Todos os serviços do Trusted Cloud (consulte Suporte para condições herdadas)

Para mais detalhes sobre os atributos de recursos, consulte Atributos de recurso nesta página.

Atributos de solicitação

Os atributos a seguir estão relacionados aos detalhes da solicitação.

Atributo Resumo do uso Serviços Trusted Cloud compatíveis

Atributos de API

Gerencie o acesso com base nos dados fornecidos por uma API ou um serviço específico do Trusted Cloud.

É possível usar esse atributo nas vinculações de papéis da política de permissão.

  • Cloud Key Management Service
  • Cloud Storage
  • Compute Engine
  • Identity and Access Management
  • Resource Manager

Atributos de data/hora

Defina o acesso expirável, programado ou de duração limitada aos recursos do Trusted Cloud .

É possível usar esses atributos nas vinculações de papéis de política de permissão.

Todos os serviços do Trusted Cloud (consulte Suporte para condições herdadas)

Atributos da regra de encaminhamento

Especifique os tipos de regras de encaminhamento que um principal pode criar. Por exemplo, é possível permitir que um principal crie regras de encaminhamento para balanceadores de carga Trusted Cloud by S3NS internos, que processam tráfego originário de uma rede Trusted Cloud , mas não para balanceadores de carga Trusted Cloud externos, que processam tráfego originário da Internet.

É possível usar esses atributos nas vinculações de papéis de política de permissão.

Para mais detalhes sobre os atributos de solicitação, consulte Atributos de solicitação nesta página.

Compatibilidade com condições herdadas

Alguns tipos de recursos do Trusted Cloud não permitem condições nas políticas de permissão. No entanto, é possível adicionar vinculações de papéis condicionais no nível da organização, da pasta ou do projeto, e outros recursos herdarão essas vinculações de papéis por meio da hierarquia de recursos. Para mais detalhes, consulte Tipos de recursos que aceitam vinculações de papéis condicionais.

Quando usar atributos no nível da organização, pasta ou projeto, lembre-se de que a maioria dos atributos está disponível apenas para tipos de recursos específicos. Se parte de uma condição usar um atributo que não está disponível, essa parte da condição nunca será interpretada como concessão de acesso. Por exemplo, a condição resource.name.endsWith == devResource nunca concede acesso a nenhum recurso do IAM porque eles não fornecem o nome do recurso.

Para evitar esse problema, use os atributos tipo de recurso e serviço de recurso descritos nesta página para limitar o escopo da condição. Por exemplo, a condição a seguir é avaliada como true para todos os tipos de recursos diferentes de instâncias do Compute Engine. Por outro lado, para instâncias do Compute Engine, a condição verifica o nome do recurso:

resource.type != 'compute.googleapis.com/Disk' ||
    resource.name.endsWith('devResource')

Você não precisa limitar o escopo das condições que verificam as tags anexadas a um recurso. Quando as condições e os valores das tags forem verificados, uma condição não verificará outros atributos, incluindo o tipo e o serviço de recurso.

Atributos de recurso

Os atributos de serviço, tipo e nome do recurso geralmente são usados para alterar o escopo de uma concessão de acesso fornecida pela vinculação de papel. Quando um papel contém permissões aplicáveis a diferentes atributos específicos de recursos, condições baseadas em recursos podem ser usadas para conceder um subconjunto das permissões do papel para tipos específicos ou para serviços específicos.

Atributo resource.service

O atributo resource.service permite definir uma condição com base no serviçoTrusted Cloud que está sendo usado. Por exemplo, é possível definir uma condição que limite o acesso de um usuário a recursos que usam o serviço cloudresourcemanager.googleapis.com. Para ver uma lista de valores compatíveis, consulte Valores de serviço de recursos.

É possível usar esse atributo resource.service nas vinculações de papéis da política de permissão.

Variável de atributo resource.service
Tipo de atributo

string

Para ver uma lista de valores compatíveis, consulte Valores de serviço de recursos.

Operadores com suporte ,
Detalhes Ao usar o atributo resource.type nas condições, verifique a igualdade exata () ou a desigualdade exata () com o atributo. Outras comparações, como a verificação de um prefixo ou sufixo, podem gerar resultados inesperados.
Exemplo

Retorna true para os recursos do Compute Engine:

resource.service == "compute.googleapis.com"
Serviços compatíveis
  • BigQuery
  • API BigQuery Reservation
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager

Atributo resource.type

O atributo resource.type permite definir uma condição com base no tipo de recurso. Por exemplo, é possível definir uma condição que limite o acesso de um usuário a recursos do tipo storage.googleapis.com/Object. Para ver uma lista de valores compatíveis, consulte Valores de tipo de recurso.

Se sua condição usar o atributo resource.name, recomendamos que você use o atributo resource.type para controlar a quais tipos de recurso a condição se aplica. Para detalhes, consulte o atributo resource.name nesta página.

É possível usar esse atributo resource.type nas vinculações de papéis da política de permissão.

Variável de atributo resource.type
Tipo de atributo

string

Para ver uma lista de valores compatíveis, consulteValores de tipo de recurso. .

Operadores com suporte ,
Detalhes Ao usar o atributo resource.type nas condições, verifique a igualdade exata () ou a desigualdade exata () com o atributo. Outras comparações, como a verificação de um prefixo ou sufixo, podem gerar resultados inesperados.
Exemplos

Retorna true, a menos que o recurso seja uma imagem do Compute Engine:

resource.type != "compute.googleapis.com/Image"

Retornará true somente se o recurso for uma imagem ou um disco permanente do Compute Engine:

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
Tipos de recursos compatíveis
BigQuery
  • Conjuntos de dados
  • Modelos
  • Rotinas
  • Tabelas
API BigQuery Reservation
  • Atividades
  • Reservas de BI
  • Compromissos de capacidade
  • Locais
  • Reservas
Cloud Key Management Service
  • Versões de chaves de criptografia
  • Chaves de criptografia
  • Keyrings
  • Locais
Cloud Logging
  • Buckets de registros
  • Visualizações de registro
Cloud SQL
  • Execuções de backup
  • Instâncias
Cloud Storage
  • Buckets
  • Pastas gerenciadas
  • Objetos
Compute Engine
  • Serviços de back-end (global e regional)
  • Firewalls
  • Regras de encaminhamento (global e regional)
  • Imagens
  • Modelos de instância
  • Instâncias
  • Discos permanentes (regional e por zona)
  • Snapshots
  • Proxies HTTP(S) de destino (global e regional)
  • Proxies SSL de destino
  • Proxies TCP de destino
Trusted Cloud by S3NS
  • Locais1
Google Kubernetes Engine
  • Clusters
Firestore
  • Bancos de dados
Resource Manager
  • Projetos

1 O Cloud Key Management Service usa esse tipo de recurso como pai dos recursos de keyring.

Atributo resource.name

O atributo resource.name permite definir uma condição com base em todo ou em parte de um nome de recurso. Para ver uma lista de formatos de nome de recurso, consulte Formato de nome do recurso.

O atributo resource.name está disponível apenas para tipos de recursos específicos, que estão listados na tabela desta seção. É recomendável que você limite a aplicação da condição ao tipo de recurso pretendido. Se um papel contiver permissões para um tipo de recurso que não fornece o atributo resource.name, certifique-se de que essas permissões não sejam restritas pela parte da condição que verifica resource.name.

O exemplo a seguir mostra como garantir esse comportamento. Neste exemplo, a condição permite o acesso a todos os tipos de recursos, exceto buckets e objetos do Cloud Storage. Por outro lado, para buckets e objetos, a condição só permite acesso ao bucket example-bucket e aos objetos que ele contém:

(resource.type != 'storage.googleapis.com/Bucket' &&
 resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')

A primeira parte da condição verifica se o recurso não é um bucket nem um objeto. Se o recurso tiver um tipo diferente, toda a condição será avaliada como true, independentemente do nome do recurso.

Além disso, a condição verifica o atributo resource.type, não o resource.service. Há alguns benefícios de verificar o atributo resource.type:

  • Ele limita a verificação resource.name ao conjunto apropriado de recursos. Por exemplo, se você quer conceder acesso a instâncias do Compute Engine com um nome específico, faz sentido excluir todos os tipos de recursos, exceto instâncias do Compute Engine.
  • Ela impede que o escopo da condição seja alterado se um serviço adicionar novos tipos de recursos no futuro.

Por fim, a condição usa a função startsWith() para avaliar o nome do recurso em vez de verificar a igualdade com o operador . Como a condição analisa o início do nome do recurso, ela corresponde a um bucket e aos objetos dele. Se ele verificasse a igualdade, corresponderia apenas ao bucket.

Não é possível usar caracteres curinga como * para fazer correspondência a vários nomes de recursos. Considere estas alternativas:

  • Use a função extract() para extrair um valor de um nome de recurso. Por exemplo, é possível extrair um ID do projeto por meio do nome do recurso de uma instância de VM do Compute Engine e, em seguida, escrever uma expressão de condição que se refere ao ID do projeto.

    Para detalhes, consulte Como extrair valores de atributos nesta página.

  • Use a função startsWith() ou endsWith() para escrever uma condição que avalie o início ou o fim do nome do recurso.

É possível usar esse atributo resource.name nas vinculações de papéis da política de permissão.

Variável de atributo resource.name
Tipo de atributo

string

Cada tipo de recurso usa um formato específico para o nome do recurso. Para uma lista de formatos, consulte Formato do nome do recurso.

Funções e operadores compatíveis startsWith(), endsWith(), extract(), ,
Detalhes

O resource.name contém o nome do recurso relativo para o recurso de destino na solicitação. O nome do recurso relativo é um caminho de URI sem uma barra à esquerda (/).

A função startsWith() usa o literal de string de prefixo a ser avaliado em relação a resource.name.

A função endsWith() usa o literal de string de sufixo a ser avaliado em relação a resource.name.

A função extract() usa um modelo de extração para extrair parte de resource.name. Para detalhes, consulte Como extrair valores de nomes de recursos nesta página.

Os operadores e são para comparação com o resource.name inteiro, ou uma parte extraída do resource.name.

Exemplos

Retorna true, a menos que o nome do recurso identifique um bucket do Cloud Storage chamado secret-bucket-123:

resource.name != "projects/_/buckets/secret-bucket-123"

Retornará true se o nome do recurso começar com o prefixo especificado, no formato usado pelas instâncias de VM do Compute Engine:

resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")

Retornará true se o nome do recurso começar com o prefixo especificado, no formato usado pelos buckets do Cloud Storage:

resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")

Retornará true se o nome do recurso terminar com o sufixo especificado. Por exemplo, a extensão de arquivo de um objeto do Cloud Storage:

resource.name.endsWith(".jpg")

Retorna o nome ou o número do projeto, se houver:

resource.name.extract("projects/{project}/")
Tipos de recursos compatíveis
BigQuery
  • Conjuntos de dados
  • Modelos
  • Rotinas
  • Tabelas
API BigQuery Reservation
  • Atividades
  • Reservas de BI
  • Compromissos de capacidade
  • Locais
  • Reservas
Cloud Key Management Service
  • Chaves de criptografia
  • Versões de chaves de criptografia
  • Keyrings
Cloud Logging
  • Buckets de registros
  • Visualizações de registro
Cloud SQL
  • Execuções de backup
  • Instâncias
Cloud Storage
  • Buckets
  • Pastas gerenciadas
  • Objetos
Compute Engine
  • Serviços de back-end (global e regional)
  • Firewalls
  • Regras de encaminhamento (global e regional)
  • Imagens
  • Modelos de instância
  • Instâncias
  • Discos permanentes (regional e por zona)
  • Snapshots
  • Proxies HTTP(S) de destino (global e regional)
  • Proxies SSL de destino
  • Proxies TCP de destino
Google Kubernetes Engine
  • Clusters

Tags de recurso

As funções de tag de recurso permitem definir uma condição com base nas tags anexadas aos recursos compatíveis ou herdadas pelos descendentes desses recursos. Por exemplo, é possível definir uma condição que conceda uma função somente a recursos que tenham a tag env: prod anexada. Para saber mais sobre como controlar o acesso com tags, consulte Tags e controle de acesso.

Cada tag consiste em uma chave e um valor. Há alguns tipos diferentes de identificadores para cada chave e valor:

  • Um código permanente, que é globalmente exclusivo e não pode ser reutilizado. Por exemplo, uma chave de tag pode ter o ID permanente tagKeys/123456789012 e um valor de tag pode ter o ID permanente tagValues/567890123456.
  • Um nome curto. O nome curto de cada chave precisa ser exclusivo no projeto ou na organização em que a chave é definida, e o nome curto de cada valor precisa ser exclusivo para a chave associada. Por exemplo, uma chave de tag pode ter o nome abreviado env, e um valor de tag pode ter o nome abreviado prod.
  • Um nome de namespace, que adiciona o ID numérico da sua organização ou do projeto ao nome curto de uma chave de tag. Por exemplo, uma chave de tag criada para uma organização pode ter o nome de namespace 123456789012/env. Para saber como conseguir o ID da organização, consulte Como conseguir o ID do recurso da sua organização. Uma chave de tag criada para um projeto pode ter o nome de namespace myproject/env. Para saber como conseguir o ID do projeto, consulte Como identificar projetos.

Para orientações sobre como escolher o tipo de identificador a ser usado nas suas condições, consulte Definições e identificadores de tags.

É possível usar condições baseadas em tags para condicionar o acesso a qualquer recurso. Isso inclui recursos com tags próprias, assim como recursos que herdam tags de outros recursos. Para saber mais sobre como as tags são herdadas pela hierarquia de recursos, consulte Herança de tags.

No entanto, algumas áreas do console Trusted Cloud não reconhecem vinculações de papéis da política de permissão com condições baseadas em tags. Como resultado, se você tiver uma função com uma condição baseada em tag, o console Trusted Cloud poderá impedir incorretamente que você realize determinadas ações. Se você encontrar esse problema, use um método alternativo, como a CLI gcloud, para realizar a ação.

É possível usar condições com base em tags nos seguintes recursos:

  • Permitir vinculações de papéis da política
  • Regras de negação da política de negação

Você pode usar as seguintes funções para definir condições com base nas tags:

Função Descrição
resource.hasTagKey(
  keyName: string
)
  bool

Verifica se o recurso da solicitação tem uma tag com a chave especificada. A chave da tag é pesquisada pelo nome do namespace. Para verificar uma chave de tag usando o código permanente, use a função resource.hasTagKeyId().

Parâmetro
keyName: o nome de namespace da chave de tag, com o ID numérico da organização e uma barra como prefixo. Exemplo:123456789012/env
Exemplo

trueenv Retorna se o recurso da solicitação tiver uma tag com a chave .

resource.hasTagKey('123456789012/env')
resource.hasTagKeyId(
  keyId: string
)
  bool

Verifica se o recurso da solicitação tem uma tag com a chave especificada. A chave da tag é pesquisada pelo código permanente. Para verificar a chave de uma tag usando o nome de namespace dela, use a função resource.hasTagKey().

Parâmetro
keyId: o ID permanente da chave de tag. Exemplo:tagKeys/123456789012
Exemplo

truetagKeys/123456789012 Retorna se o recurso da solicitação tiver uma tag com a chave .

resource.hasTagKeyId('tagKeys/123456789012')
resource.matchTag(
  keyName: string,
  valueShortName: string
)
  bool

Verifica se o recurso da solicitação tem uma tag com a chave e o valor especificados. A chave é pesquisada pelo nome do namespace e o valor é pesquisado pelo nome curto. Para verificar uma chave de tag e um valor usando os códigos permanentes, use a função resource.matchTagId().

Parâmetros
  • keyName: o nome do namespace da chave de tag, com o ID numérico da organização e uma barra como prefixo. Por exemplo, 123456789012/env.
  • valueShortName: o nome abreviado do valor da tag. Por exemplo, prod.
Exemplo

true123456789012/env Retorna prod se o recurso da solicitação tiver uma tag com a chave e o valor .

resource.matchTag('123456789012/env', 'prod')
resource.matchTagId(
  keyId: string,
  valueId: string
)
  bool

Verifica se o recurso da solicitação tem uma tag com a chave e o valor especificados. A chave e o valor são pesquisados pelos códigos permanentes. Para verificar uma chave de tag usando o nome de namespace e um valor com nome curto, use a função resource.matchTag().

Parâmetros
  • keyId: o ID permanente da chave de tag. Exemplo:tagKeys/123456789012
  • valueId: o ID permanente do valor da tag. Exemplo:tagValues/567890123456
Exemplo

truetagKeys/123456789012 Retorna tagValues/567890123456 se o recurso da solicitação tiver uma tag com a chave e o valor .

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

Atributos de solicitação

Os atributos de solicitação permitem criar condições que avaliam detalhes sobre a solicitação, como os papéis modificados por ela ou a data e hora da solicitação.

Atributos de API

Os atributos da API ajudam você a gerenciar o acesso com base nos dados fornecidos por uma API ou um serviço doTrusted Cloud específico. É possível usar atributos de API nas vinculações de papéis da política de permissão.

Para exemplos de quando pode ser necessário usar atributos de API em uma condição, consulte as seguintes páginas:

  • Como definir limites ao conceder papéis
  • Nem todos os serviços reconhecem atributos da API. As seções a seguir indicam quais serviços reconhecem cada atributo da API.

    Funções para atributos de API

    Use a seguinte função para trabalhar com atributos de API:

    Função Descrição
    api.getAttribute(
      attributeName: string,
      defaultValue: V<T>
    )
      V<T>

    Recebe o atributo de API solicitado.

    Parâmetros
    • attributeName: o atributo de API a ser recebido. Para valores aceitos, consulte Atributos da API Cloud Storage e Atributos da API IAM nesta página.
    • defaultValue: o valor padrão (V) a ser usado se o atributo da API não estiver disponível. O valor V é do tipo T, em que T é o mesmo tipo do valor do atributo da API. Por exemplo, se o valor do atributo da API for uma string, você pode usar uma string vazia ou um marcador de posição, como undefined.

    Exemplo

    Retorna uma das seguintes opções:

    • Para solicitações de concessão ou revogação de um papel, retorna uma lista de papéis que foram modificados pela solicitação.
    • Para todos os outros tipos de solicitações, retorna uma lista vazia.
    api.getAttribute("iam.googleapis.com/modifiedGrantsByRole", [])
    hasOnly(
      items: list<T>
    )
      bool

    Função: verifica se uma lista contém apenas os itens permitidos ou um subconjunto desses itens. Chame a função em uma lista retornada por api.getAttribute().

    Parâmetro
    items: uma lista de itens com o tipo T. Cada item é um valor que o atributo de API pode conter.
    Exemplo

    Verifica se a solicitação concederia ou revogaria qualquer papel que não fosse o Editor do Pub/Sub (roles/pubsub.editor) ou o Editor do Pub/Sub (roles/pubsub.publisher):

    api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
        .hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

    Veja a seguir o resultado de diferentes valores de solicitação:

    Papéis concedidos ou revogados Resultado
    Nenhum

    true

    Se nenhum papel for modificado, api.getAttribute() retornará o valor padrão. Para esse atributo, o valor padrão é sempre uma lista vazia. Por definição, uma lista vazia não contém valores que não estão na lista de permissões.

    roles/pubsub.editor

    true

    O papel está na lista de permissões.

    roles/pubsub.editor
    roles/pubsub.publisher

    true

    Ambos os papéis estão na lista de permissões.

    roles/billing.admin

    false

    O papel não está na lista de permissões.

    roles/billing.admin
    roles/pubsub.editor

    false

    Há um papel na lista de permissões, mas o outro não.

    Atributos da API IAM

    O IAM fornece o seguinte atributo de API:

    Variável de atributo iam.googleapis.com/modifiedGrantsByRole
    Tipo de atributo list<string>
    Detalhes

    Para uma solicitação que define a política de permissão de um recurso, este atributo contém os nomes dos papéis das vinculações de papéis que a solicitação modifica.

    Para outros tipos de solicitação, o atributo não é definido.

    Tipos de recursos que aceitam esse atributo

    Os tipos de recurso a seguir aceitam condições com o atributo modifiedGrantsByRole nas políticas de permissão:

    • Projetos
    • Pastas
    • Organizações
    Serviços que reconhecem esse atributo:

    Os serviços a seguir reconhecem o atributo modifiedGrantsByRole:

    • Cloud Key Management Service
    • Cloud Storage
    • Compute Engine
    • Identity and Access Management
    • Resource Manager

    Atributo de data/hora

    O atributo de data/hora é usado para definir acesso expirável, programado ou de duração limitada aos recursos do Trusted Cloud . É possível usar atributos de data/hora em vinculações de função de política de permissão.

    Esse atributo está disponível para todos os Trusted Cloud serviços e tipos de recursos. Para saber como aplicar condições de data/hora a recursos que não são diretamente compatíveis com elas, consulte Suporte para condições herdadas nesta página.

    O atributo request.time contém o carimbo de data/hora da solicitação. É possível comparar esse carimbo de data/hora a outro ou a um período.

    As seções a seguir listam as funções que podem ser usadas para definir condições com base em carimbos de data/hora e durações.

    Criar, comparar e modificar carimbos de data/hora e durações

    Função ou operador Descrição
    date(
      value: string
    )
      Timestamp

    Converte uma data de um string em um Timestamp.

    Parâmetro
    value: uma data no formato YYYY-MM-DD, em que YYYY é o ano, MM é o mês com dois dígitos e DD é o dia com dois dígitos. O Timestamp de data/hora resultante contém a data especificada e a hora 00:00:00.000 UTC.
    Exemplo

    Cria um Timestamp que representa a data 2023-02-01 e a hora 00:00:00.000 UTC:

    date("2023-02-01")
    duration(
      value: string
    )
      Duration

    Converte um período de um string em um Duration.

    Parâmetro
    value: um Duration em segundos, seguido por s.
    Exemplos

    Uma duração que representa 1,5 minuto.

    duration("90s")

    Uma duração que representa 30 dias.

    duration("2592000s")
    timestamp(
      value: string
    )
      Timestamp

    Converte um string em um Timestamp.

    Parâmetro

    value: um carimbo de data/hora UTC que está em conformidade com o RFC 3339.

    Exemplo

    Cria um carimbo de data/hora que representa 12 de abril de 2023, às 23:20:50.52 em UTC:

    timestamp("2023-04-12T23:20:50.52Z")
    , , ,

    Compara dois valores Timestamp.

    Exemplos

    Retornará true se o horário da solicitação for antes de 12 de abril de 2022, às 00:00:00 UTC:

    request.time < timestamp("2022-04-12T00:00:00.00Z")

    Retornará true se o horário da solicitação for antes ou igual a 12 de abril de 2022, às 00:00:00 UTC:

    request.time <= timestamp("2022-04-12T00:00:00.00Z")

    Retornará true se o horário da solicitação for depois de 12 de abril de 2022, às 00:00:00 UTC:

    request.time > timestamp("2022-04-12T00:00:00.00Z")

    Retornará true se o horário da solicitação for depois ou igual a 12 de abril de 2022, às 00:00:00 UTC:

    request.time >= timestamp("2022-04-12T00:00:00.00Z")
    • timestamp + duration   Timestamp
    • timestamp - duration   Timestamp

    Adicione ou subtraia um Duration de um Timestamp.

    Exemplos

    Retorna a Timestamp que cai 30 minutos após as 14:30:00 UTC em 2024-04-12:

    timestamp("2024-04-12T14:30:00.00Z") + duration("1800s")

    Retorna o Timestamp que cai 60 dias antes das 14:30:00 UTC em 2024-04-12:

    timestamp("2024-04-12T14:30:00.00Z") - duration("5184000s")

    Extrair informações de um carimbo de data/hora

    As funções nesta seção permitem extrair informações de um carimbo de data/hora, como o dia da semana em que ele se enquadra.

    Nas condições do IAM, todos os carimbos de data/hora estão em UTC. No entanto, talvez você queira extrair informações com base em um fuso horário diferente. Por exemplo, talvez você queira saber se um carimbo de data/hora UTC cai em uma segunda-feira no fuso horário de Berlim, na Alemanha.

    Para especificar um fuso horário diferente, transfira o fuso para a função. Use um nome ou deslocamento UTC do banco de dados de fuso horário da IETF. Por exemplo, use Europe/Berlin ou +01:00 para o horário da Europa Central (CET, na sigla em inglês).

    Funções e operadores compatíveis Descrição
    Timestamp.getDate(
      timeZone: string
    )
      int

    Recebe o dia do mês da Timestamp. O valor usa indexação baseada em um. o primeiro dia do mês é 1.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    Exemplo

    Retornará true se a solicitação for enviada após o 15o dia do mês em UTC:

    request.time.getDate() > 15
    Timestamp.getDayOfMonth(
      timeZone: string
    )
      int

    Recebe o dia do mês da Timestamp. O valor usa indexação com base em zero; o primeiro dia do mês é 0.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    Exemplo

    Retornará true se a solicitação for enviada após o 15o dia do mês em UTC:

    request.time.getDayOfMonth() > 14
    Timestamp.getDayOfWeek(
      timeZone: string
    )
      int

    Recebe o dia da semana da Timestamp. O valor usa indexação com base em zero; Por exemplo, domingo é 0.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    Exemplo

    Retornará true se a solicitação for enviada entre segunda e sexta-feira em Berlim, Alemanha:

    request.time.getDayOfWeek("Europe/Berlin") > 0 &&
        request.time.getDayOfWeek("Europe/Berlin") < 6
    Timestamp.getDayOfYear(
      timeZone: string
    )
      int

    Recebe o dia do ano da Timestamp. O valor usa indexação com base em zero; o primeiro dia do ano é 0.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    Exemplo

    Retornará true se a solicitação for enviada durante os primeiros cinco dias do ano em Mountain View, Califórnia:

    request.time.getDayOfYear("America/Los_Angeles") >= 0 &&
        request.time.getDayOfYear("America/Los_Angeles") < 5
    Timestamp.getFullYear(
      timeZone: string
    )
      int

    Recebe o ano da Timestamp.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    Exemplo

    Retornará true se a solicitação for enviada durante o ano de 2023 em Mountain View, Califórnia:

    request.time.getFullYear("America/Los_Angeles") == 2023

    Retornará true se a solicitação for enviada durante o ano de 2022 em UTC:

    request.time.getFullYear() == 2022
    Timestamp.getHours(
      timeZone: string
    )
      int

    Recebe a hora do dia de Timestamp. O valor usa indexação com base em zero; os valores variam de 0 a 23.

    É possível combinar essa função com getDayofWeek() para conceder acesso somente durante o horário de trabalho permitido na jurisdição.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    Exemplo

    Retornará true se a solicitação for enviada entre 9h e 17h (17h) em um dia da semana em Berlim, Alemanha:

    request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
        request.time.getDayOfWeek("Europe/Berlin") <= 5 &&
        request.time.getHours("Europe/Berlin") >= 9 &&
        request.time.getHours("Europe/Berlin") <= 17
    Timestamp.getMilliseconds(
      timeZone: string
    )
      int

    Recebe o número de milissegundos do Timestamp. O valor usa indexação com base em zero; os valores variam de 0 a 999.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    Timestamp.getMinutes(
      timeZone: string
    )
      int

    Recebe o número de minutos após a hora no Timestamp. O valor usa indexação com base em zero; os valores variam de 0 a 59.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    Exemplo

    Retornará true se a solicitação for enviada às 9h30 ou às 9h30 em Berlim, na Alemanha:

    request.time.getHours("Europe/Berlin") >= 9 &&
        request.time.getMinutes("Europe/Berlin") >= 30
    Timestamp.getMonth(
      timeZone: string
    )
      int

    Recebe o mês do ano da Timestamp. O valor usa indexação com base em zero; os valores variam de 0 a 11.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    Exemplo

    Retornará true se a solicitação for enviada durante o mês de abril em Mountain View, na Califórnia:

    request.time.getMonth("America/Los_Angeles") == 3
    Timestamp.getSeconds(
      timeZone: string
    )
      int

    Recebe o número de segundos do Timestamp. O valor usa indexação com base em zero; os valores variam de 0 a 59.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. O padrão é UTC.
    , , ,

    Compara a saída de duas funções nesta tabela.

    Atributos da regra de encaminhamento

    Os atributos da regra de encaminhamento permitem especificar os tipos de regras de encaminhamento que um principal pode criar. Por exemplo, é possível permitir que um principal crie regras de encaminhamento para balanceadores de carga Trusted Cloud by S3NSinternos, que processam tráfego proveniente de uma rede Trusted Cloud , mas não para balanceadores de carga Trusted Cloudexternos, que processam tráfego originário da Internet. É possível usar atributos da regra de encaminhamento em vinculações de papel de política de permissão.

    Para o Cloud Load Balancing, os atributos da regra de encaminhamento não afetam a capacidade de criar outros componentes de um balanceador de carga Trusted Cloud , como serviços de back-end, proxies de destino, verificações de integridade e mapas de URL.

    Funções compatíveis

    Função Descrição
    compute.isForwardingRuleCreationOperation()   bool

    Verifica se a solicitação está criando uma regra de encaminhamento.

    Exemplo
    Veja o exemplo para compute.matchLoadBalancingSchemes().
    compute.matchLoadBalancingSchemes(
      schemes: list<string>
    )
      bool

    Verifica se a solicitação afeta um dos tipos especificados de esquema de balanceamento de carga. Para encontrar o identificador de cada esquema de balanceamento de carga, além de mais detalhes, consulte Como usar condições do IAM em balanceadores de carga do Trusted Cloud .

    Parâmetro
    schemes: os esquemas de balanceamento de carga que a solicitação pode afetar.
    Exemplo

    Retorna uma das seguintes opções:

    • Se a solicitação não estiver criando uma regra de encaminhamento, retornará true.
    • Se a solicitação estiver criando uma regra de encaminhamento, retornará true somente se a regra afetar uma INTERNAL, INTERNAL_MANAGED ou INTERNAL_SELF_MANAGED de balanceamento de carga.
    !compute.isForwardingRuleCreationOperation() || (
      compute.isForwardingRuleCreationOperation() &&
      compute.matchLoadBalancingSchemes([
        'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
      ])
    )

    Tipos de recursos compatíveis

    Esse atributo está disponível para solicitações de criação dos seguintes tipos de recursos:

    Serviço Tipos de recurso
    Cloud Load Balancing Regras de encaminhamento
    Cloud VPN Regras de encaminhamento (global e regional)
    Compute Engine Regras de encaminhamento (para encaminhamento de protocolo)
    Cloud Service Mesh1 Regras de encaminhamento

    1 Usa os atributos de recurso do Compute Engine.

    Extrair valores de atributos

    É possível usar a função extract() para extrair um valor de um atributo. Por exemplo, é possível extrair uma parte arbitrária de um nome de recurso e, em seguida, escrever uma expressão de condição que se refere ao texto extraído.

    Para usar a função extract(), insira um modelo de extração, que especifica a parte do atributo a ser extraída. Por exemplo, se você quiser extrair um ID do projeto do nome do recurso de uma instância de VM do Compute Engine, use o modelo projects/{project}/.

    Um modelo de extração contém as seguintes partes:

    • Um identificador, entre chaves, que identifica a substring a ser extraída.

      Escolha um identificador pequeno e significativo que deixe claro qual valor você quer extrair. Use letras maiúsculas e minúsculas de A a Z, dígitos numéricos e sublinhados (_).

      No modelo projects/{project}/, o identificador é project.

    • Opcional: um prefixo, que precisa aparecer antes da substring a ser extraída.

      No modelo projects/{project}/, o prefixo é projects/.

    • Opcional: um sufixo, que precisa aparecer depois da substring a ser extraída.

      No modelo projects/{project}/, o sufixo é /.

    A função extract() extrai partes diferentes do atributo com base no modelo de extração ter um prefixo, um sufixo ou ambos:

    Tem prefixo Tem sufixo Valor extraído
    Todo o atributo
    Os caracteres após a primeira ocorrência do prefixo ou uma string em branco se não houver caracteres depois do prefixo
    Os caracteres antes da primeira ocorrência do sufixo ou uma string em branco se não houver caracteres antes do sufixo
    Os caracteres entre a primeira ocorrência do prefixo e a primeira ocorrência subsequente do sufixo, ou uma string vazia se não houver caracteres entre o prefixo e o sufixo

    Se você especificar um prefixo ou sufixo que não apareça no atributo, ou se o sufixo aparecer somente antes do prefixo, a função extract() retornará uma string vazia.

    Nos exemplos a seguir, mostramos a saída de vários modelos de extração diferentes. Estes exemplos se referem a um nome de recurso para um objeto do Cloud Storage, projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876:

    Modelo de extração Saída
    /order_date={date}/ 2019-11-03
    buckets/{name}/ acme-orders-aaa
    /orders/{empty}order_date Esvaziar string
    {start}/objects/data_lake projects/_/buckets/acme-orders-aaa
    orders/{end} order_date=2019-11-03/aef87g87ae0876
    {all} projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876
    /orders/{none}/order_date= Esvaziar string
    /orders/order_date=2019-11-03/{id}/data_lake Esvaziar string

    Se você extrair uma string que represente uma data, use as funções e operadores de data/hora nesta página para converter o valor extraído em um Timestamp de data/hora. Para exemplos, consulte Como configurar o acesso com base em recursos.