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

Este documento descreve os atributos suportados numa expressão de condição.

Atributos de condição suportados

As secções seguintes resumem os atributos suportados e indicam que Trusted Cloud by S3NS serviços reconhecem cada atributo.

Atributos do recurso

Os seguintes atributos estão relacionados com o recurso que é o assunto do pedido.

Atributo Resumo de utilização Serviços Trusted Cloud suportados
Atributo do serviço de recursos

Faça a gestão do acesso com base no Trusted Cloud serviço que está a ser usado.

Pode usar este atributo em associações de funções de políticas 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

Faça a gestão do acesso com base no tipo de recurso.

Pode usar este atributo em associações de funções de políticas 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 do recurso

Faça a gestão do acesso com base no nome do recurso.

Pode usar este atributo em associações de funções de políticas de permissão.

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

Faça a gestão do acesso com base nas etiquetas anexadas ao recurso.

Pode usar este atributo nos seguintes locais:

  • Permitir associações de funções de políticas
  • Regras de negação de políticas de negação

Todos os Trusted Cloud serviços (consulte a secção Suporte para condições herdadas)

Para ver mais detalhes sobre os atributos de recursos, consulte a secção Atributos de recursos nesta página.

Atributos de pedido

Os seguintes atributos estão relacionados com os detalhes do pedido.

Atributo Resumo de utilização Serviços Trusted Cloud suportados

Atributos da API

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

Pode usar este atributo em associações de funções de políticas de permissão.

  • Cloud Storage
  • Compute Engine
  • Gestão de identidade e de acesso
  • Resource Manager

Atributos de data/hora

Definir acesso com data de validade, agendado ou de duração limitada aos recursos Trusted Cloud .

Pode usar estes atributos em associações de funções de políticas de permissão.

Todos os Trusted Cloud serviços (consulte a secção Suporte para condições herdadas)

Atributos das regras de encaminhamento

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

Pode usar estes atributos em associações de funções de políticas de permissão.

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

Apoio técnico para condições herdadas

Alguns tipos de Trusted Cloud recursos não permitem condições nas respetivas políticas de autorização. No entanto, pode adicionar associações de funções condicionais ao nível da organização, da pasta ou do projeto, e outros recursos herdam essas associações de funções através da hierarquia de recursos. Para ver detalhes, consulte Tipos de recursos que aceitam associações de funções condicionais.

Quando usa atributos ao nível da organização, da pasta ou do projeto, tenha em atenção que a maioria dos atributos só está disponível 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 é interpretada como concessão de acesso. Por exemplo, a condição resource.name.endsWith == devResource nunca concede acesso a nenhum recurso do IAM, porque os recursos do IAM não fornecem o nome do recurso.

Para evitar este problema, use os atributos tipo de recurso e serviço de recurso descritos nesta página para limitar o âmbito da condição. Por exemplo, a seguinte condição é avaliada como true para todos os tipos de recursos que não sejam instâncias do Compute Engine; em contrapartida, para instâncias do Compute Engine, a condição verifica o nome do recurso:

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

Não tem de limitar o âmbito das condições que verificam as etiquetas anexadas a um recurso. Quando uma condição verifica as chaves e os valores das etiquetas, não pode verificar outros atributos, incluindo o tipo de recurso e o serviço de recursos.

Atributos do recurso

Os atributos de serviço de recursos, tipo de recurso e nome do recurso são normalmente usados para alterar o âmbito de uma concessão de acesso fornecida pela associação de funções. Quando uma função contém autorizações que se aplicam a diferentes atributos específicos de recursos, é possível usar condições baseadas em recursos para conceder um subconjunto das autorizações da função 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 Trusted Cloud serviço que está a ser usado. Por exemplo, pode definir uma condição que limite o acesso de um utilizador a recursos que usam o serviço cloudresourcemanager.googleapis.com. Para ver uma lista de valores suportados, consulte Valores do serviço de recursos.

Pode usar o atributo resource.service em associações de funções de políticas de permissão.

Variável de atributo resource.service
Tipo de atributo

string

Para ver uma lista de valores suportados, consulte os valores do serviço de recursos.

Operadores suportados ,
Detalhes Quando usa o atributo resource.type em condições, verifique a igualdade exata () ou a desigualdade exata () com o atributo. Outras comparações, como verificar um prefixo ou um sufixo, podem dar-lhe resultados inesperados.
Exemplo

Devolve true para recursos do Compute Engine:

resource.service == "compute.googleapis.com"
Serviços suportados
  • 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, pode definir uma condição que limite o acesso de um utilizador a recursos do tipo storage.googleapis.com/Object. Para ver uma lista de valores suportados, consulte o artigo Valores do tipo de recurso.

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

Pode usar o atributo resource.type em associações de funções de políticas de permissão.

Variável de atributo resource.type
Tipo de atributo

string

Para ver uma lista de valores suportados, consulte os valores do tipo de recurso.

Operadores suportados ,
Detalhes Quando usa o atributo resource.type em condições, verifique a igualdade exata () ou a desigualdade exata () com o atributo. Outras comparações, como verificar um prefixo ou um sufixo, podem dar-lhe resultados inesperados.
Exemplos

Devolve true, exceto se o recurso for uma imagem do Compute Engine:

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

Devolve true apenas se o recurso for uma imagem do Compute Engine ou um disco persistente:

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
Tipos de recursos suportados
BigQuery
  • Conjuntos de dados
  • Modelos
  • Rotinas
  • Tabelas
API BigQuery Reservation
  • Tarefas
  • Reservas de BI
  • Consolidações de capacidade
  • Localizações
  • Reservas
Cloud Key Management Service
  • Versões de chaves criptográficas
  • Chaves criptográficas
  • Conjuntos de chaves
  • Localizações
Cloud Logging
  • Contentores de registo
  • Visualizações de registos
Cloud SQL
  • Execuções de cópia de segurança
  • Instâncias
Cloud Storage
  • Contentores
  • Pastas geridas
  • Objetos
Compute Engine
  • Serviços de back-end (globais e regionais)
  • Firewalls
  • Regras de encaminhamento (globais e regionais)
  • Imagens
  • Modelos de instâncias
  • Instâncias
  • Discos persistentes (regionais e zonais)
  • Instantâneos
  • Proxies HTTP(S) de destino (globais e regionais)
  • Proxies SSL de destino
  • Proxies TCP de destino
Trusted Cloud by S3NS
  • Localizações1
Google Kubernetes Engine
  • Clusters
Firestore
  • Bases de dados
Resource Manager
  • Projetos

1 O Cloud Key Management Service usa este tipo de recurso como o principal dos recursos do conjunto de chaves.

atributo resource.name

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

O atributo resource.name só está disponível para tipos de recursos específicos, que estão listados na tabela nesta secção. Recomendamos vivamente que limite a aplicabilidade da condição ao tipo de recurso pretendido. Se uma função contiver autorizações para um tipo de recurso que não faculte o atributo resource.name, deve garantir que essas autorizações não são restritas pela parte da condição que verifica resource.name.

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

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

Tenha em atenção que a primeira parte da condição verifica se o recurso não é um contentor nem um objeto. Se o recurso tiver um tipo diferente, toda a condição é avaliada como true, independentemente do nome do recurso.

Tenha também em atenção que a condição verifica o atributo resource.type e não o atributo resource.service. Existem algumas vantagens em verificar o atributo resource.type:

  • Limita a verificação resource.name ao conjunto adequado de recursos. Por exemplo, se quiser conceder acesso a instâncias do Compute Engine com um nome específico, faz sentido excluir todos os tipos de recursos que não sejam instâncias do Compute Engine.
  • Impede que o âmbito da condição seja alterado se um serviço adicionar novos tipos de recursos no futuro.

Por último, tenha em atenção que a condição usa a função startsWith() para avaliar o nome do recurso, em vez de verificar a igualdade com o operador . Uma vez que a condição analisa o início do nome do recurso, corresponde a um contentor, bem como aos objetos nesse contentor. Se verificasse a igualdade, só corresponderia ao bucket.

Não pode usar carateres universais, como *, para fazer corresponder vários nomes de recursos. Considere estas alternativas:

  • Use a função extract() para extrair um valor de um nome do recurso. Por exemplo, pode extrair um ID do projeto do nome do recurso de uma instância de VM do Compute Engine e, em seguida, escrever uma expressão de condição que faça referência ao ID do projeto.

    Para ver detalhes, consulte a secção 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.

Pode usar o atributo resource.name em associações de funções de políticas 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 ver uma lista de formatos, consulte o artigo Formato do nome do recurso.

Funções e operadores suportados startsWith(), endsWith(), extract(), ,
Detalhes

O resource.name contém o nome do recurso relativo para o recurso de destino no pedido. O nome do recurso relativo é um caminho URI sem uma barra inicial (/).

A função startsWith() usa a string literal do prefixo para ser avaliada em relação a resource.name.

A função endsWith() usa o literal de string de sufixo para 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 ver detalhes, consulte a secção Extrair valores de nomes de recursos nesta página.

Os operadores e destinam-se à comparação com o resource.name completo ou uma parte extraída do resource.name.

Exemplos

Devolve true, a menos que o nome do recurso identifique um contentor do Cloud Storage denominado secret-bucket-123:

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

Devolve true se o nome do recurso começar pelo 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-")

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

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

Devolve true se o nome do recurso terminar com o sufixo especificado, por exemplo, a extensão do ficheiro de um objeto do Cloud Storage:

resource.name.endsWith(".jpg")

Devolve o nome ou o número do projeto, se estiver presente:

resource.name.extract("projects/{project}/")
Tipos de recursos suportados
BigQuery
  • Conjuntos de dados
  • Modelos
  • Rotinas
  • Tabelas
API BigQuery Reservation
  • Tarefas
  • Reservas de BI
  • Consolidações de capacidade
  • Localizações
  • Reservas
Cloud Key Management Service
  • Chaves criptográficas
  • Versões de chaves criptográficas
  • Conjuntos de chaves
Cloud Logging
  • Contentores de registo
  • Visualizações de registos
Cloud SQL
  • Execuções de cópia de segurança
  • Instâncias
Cloud Storage
  • Contentores
  • Pastas geridas
  • Objetos
Compute Engine
  • Serviços de back-end (globais e regionais)
  • Firewalls
  • Regras de encaminhamento (globais e regionais)
  • Imagens
  • Modelos de instâncias
  • Instâncias
  • Discos persistentes (regionais e zonais)
  • Instantâneos
  • Proxies HTTP(S) de destino (globais e regionais)
  • Proxies SSL de destino
  • Proxies TCP de destino
Google Kubernetes Engine
  • Clusters

Etiquetas de recursos

As funções de etiquetas de recursos permitem-lhe definir uma condição com base nas etiquetas anexadas a recursos suportados ou herdadas pelos descendentes desses recursos. Por exemplo, pode definir uma condição que conceda uma função apenas para recursos que tenham a etiqueta env: prod anexada. Para saber mais sobre o controlo de acesso com etiquetas, consulte o artigo Etiquetas e controlo de acesso.

Cada etiqueta consiste numa chave e num valor. Existem alguns tipos diferentes de identificadores para cada chave e valor:

  • Um ID permanente, que é globalmente exclusivo e nunca pode ser reutilizado. Por exemplo, uma chave de etiqueta pode ter o ID permanente tagKeys/123456789012 e um valor de etiqueta pode ter o ID permanente tagValues/567890123456.
  • Um diminutivo. O nome abreviado de cada chave tem de ser exclusivo no projeto ou na organização em que a chave está definida, e o nome abreviado de cada valor tem de ser exclusivo para a respetiva chave associada. Por exemplo, uma chave de etiqueta pode ter o diminutivo env e um valor de etiqueta pode ter o diminutivo prod.
  • Um nome com espaço de nomes, que adiciona o ID numérico da sua organização ou o ID do projeto ao nome curto de uma chave de etiqueta. Por exemplo, uma chave de etiqueta criada para uma organização pode ter o nome com espaço de nomes 123456789012/env. Para saber como obter o ID da organização, consulte o artigo Obter o ID do recurso da organização. Uma chave de etiqueta criada para um projeto pode ter o nome com espaço de nomes myproject/env. Para saber como obter o ID do projeto, consulte o artigo Identificar projetos.

Para orientações sobre a escolha do tipo de identificador a usar nas suas condições, consulte o artigo Definições e identificadores de etiquetas.

Pode usar condições baseadas em etiquetas para tornar condicional o acesso a qualquer recurso. Isto inclui recursos com as suas próprias etiquetas, bem como recursos que herdam etiquetas de outros recursos. Para saber como as etiquetas são herdadas através da hierarquia de recursos, consulte o artigo Herança de etiquetas.

No entanto, determinadas áreas da consola não reconhecem associações de funções da política de autorização com condições baseadas em etiquetas. Trusted Cloud Como resultado, se tiver uma função com uma condição baseada em etiquetas, a consola Trusted Cloud pode impedir incorretamente que realize determinadas ações. Se encontrar este problema, use um método alternativo, como a CLI gcloud, para realizar a ação.

Pode usar condições baseadas em etiquetas no seguinte:

  • Permitir associações de funções de políticas
  • Regras de negação de políticas de negação

Pode usar as seguintes funções para definir condições com base em etiquetas:

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

Verifica se o recurso do pedido tem uma etiqueta com a chave especificada. A chave da etiqueta é procurada pelo respetivo nome com espaço de nomes. Para verificar se existe uma chave de etiqueta através do respetivo ID permanente, use a função resource.hasTagKeyId().

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

Devolve true se o recurso do pedido tiver uma etiqueta com a chave env:

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

Verifica se o recurso do pedido tem uma etiqueta com a chave especificada. A chave da etiqueta é procurada pelo respetivo ID permanente. Para verificar uma chave de etiqueta através do respetivo nome com espaço de nomes, use a função resource.hasTagKey().

Parâmetro
keyId: o ID permanente da chave da etiqueta. Por exemplo, tagKeys/123456789012.
Exemplo

Devolve true se o recurso do pedido tiver uma etiqueta com a chave tagKeys/123456789012:

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

Verifica se o recurso do pedido tem uma etiqueta com a chave e o valor especificados. A chave é procurada pelo respetivo nome com espaço de nomes, e o valor é procurado pelo respetivo nome abreviado. Para procurar uma chave e um valor de etiqueta através dos respetivos IDs permanentes, use a função resource.matchTagId().

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

Devolve true se o recurso do pedido tiver uma etiqueta com a chave 123456789012/env e o valor prod:

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

Verifica se o recurso do pedido tem uma etiqueta com a chave e o valor especificados. A chave e o valor são procurados pelos respetivos IDs permanentes. Para verificar uma chave de etiqueta através do respetivo nome com espaço de nomes e um valor através do respetivo nome abreviado, use a função resource.matchTag().

Parâmetros
  • keyId: o ID permanente da chave da etiqueta. Por exemplo, tagKeys/123456789012.
  • valueId: o ID permanente do valor da etiqueta. Por exemplo, tagValues/567890123456.
Exemplo

Devolve true se o recurso do pedido tiver uma etiqueta com a chave tagKeys/123456789012 e o valor tagValues/567890123456:

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

Atributos de pedido

Os atributos de pedido permitem-lhe criar condições que avaliam os detalhes sobre o pedido, como as funções modificadas por um pedido ou a data e a hora do pedido.

Atributos da API

Os atributos da API ajudam a gerir o acesso com base nos dados fornecidos por uma Trusted Cloud API ou um serviço específico. Pode usar atributos de API em associações de funções da política de permissão.

Para ver exemplos de quando pode ter de usar atributos da API numa condição, consulte as seguintes páginas:

  • Definir limites na concessão de funções
  • Nem todos os serviços reconhecem os atributos da API. As secções seguintes indicam que serviços reconhecem cada atributo da API.

    Funções para atributos da API

    Pode usar a seguinte função para trabalhar com atributos da API:

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

    Obtém o atributo da API pedido.

    Parâmetros
    • attributeName: o atributo da API a obter. Para ver os valores suportados, consulte os atributos da API Cloud Storage e os atributos da API IAM nesta página.
    • defaultValue: o valor predefinido (V) a usar se o atributo da API não estiver disponível. O valor V é do tipo T, onde T é o mesmo tipo que o valor do atributo da API. Por exemplo, se o valor do atributo da API for uma string, pode usar uma string vazia ou uma string de marcador de posição, como undefined.

    Exemplo

    Devolve um dos seguintes elementos:

    • Para pedidos de concessão ou revogação de uma função, devolve uma lista de funções que foram modificadas pelo pedido.
    • Para todos os outros tipos de pedidos, devolve uma lista vazia.
    api.getAttribute("iam.googleapis.com/modifiedGrantsByRole", [])
    hasOnly(
      items: list<T>
    )
      bool

    Verifica se uma lista contém apenas os itens permitidos ou um subconjunto desses itens. Pode chamar a função numa lista devolvida por api.getAttribute().

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

    Verifica se o pedido concederia ou revogaria outras funções que não a de editor do Pub/Sub (roles/pubsub.editor) ou publicador do Pub/Sub (roles/pubsub.publisher):

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

    O exemplo seguinte mostra o resultado para diferentes valores de pedidos:

    Funções concedidas/revogadas Resultado
    Nenhum

    true

    Se não forem modificadas funções, api.getAttribute() devolve o valor predefinido. Para este atributo, o valor predefinido é sempre uma lista vazia. Por definição, uma lista vazia não contém valores que não estejam na lista de autorizações.

    roles/pubsub.editor

    true

    A função está na lista de autorizações.

    roles/pubsub.editor
    roles/pubsub.publisher

    true

    Ambas as funções estão na lista de autorizações.

    roles/billing.admin

    false

    A função não está na lista de autorizações.

    roles/billing.admin
    roles/pubsub.editor

    false

    Uma função está na lista de autorizações, mas a outra não.

    Atributos da API IAM

    O IAM fornece o seguinte atributo da API:

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

    Para um pedido de definição da política de autorização de um recurso, este atributo contém os nomes das funções das associações de funções que o pedido modifica.

    Para outros tipos de pedidos, o atributo não está definido.

    Tipos de recursos que aceitam este atributo

    Os seguintes tipos de recursos aceitam condições com o atributo modifiedGrantsByRole nas respetivas políticas de autorização:

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

    Os seguintes serviços reconhecem o atributo modifiedGrantsByRole:

    • Cloud Storage
    • Compute Engine
    • Gestão de identidade e de acesso
    • Resource Manager

    Atributo de data/hora

    O atributo de data/hora é usado para definir o acesso expirável, agendado ou de duração limitada a Trusted Cloud recursos. Pode usar atributos de data/hora em associações de funções da política de permissão.

    Este atributo é suportado para todos os serviços Trusted Cloud e tipos de recursos. Para saber como aplicar condições de data/hora a recursos que não os suportam diretamente, consulte a secção Suporte para condições herdadas nesta página.

    O atributo request.time contém a data/hora do pedido. Pode comparar esta indicação de tempo com outra indicação de tempo ou com uma duração.

    As secções seguintes apresentam as funções que pode usar para definir condições com base em datas/horas e durações.

    Crie, compare e modifique indicações de tempo e durações

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

    Converte uma data de um string para um Timestamp.

    Parâmetro
    value: Uma data no formato YYYY-MM-DD, em que YYYY é o ano, MM é o mês de dois dígitos e DD é o dia de dois dígitos. O resultado Timestamp 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 tempo de um string num Duration.

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

    Cria uma duração que representa 1,5 minutos:

    duration("90s")

    Cria uma duração que representa 30 dias:

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

    Converte um string num Timestamp.

    Parâmetro

    value: uma data/hora UTC em conformidade com a RFC 3339.

    Exemplo

    Cria uma data/hora que representa 12 de abril de 2023, às 23:20:50.52 no fuso horário UTC:

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

    Compara dois valores Timestamp.

    Exemplos

    Devolve true se a hora do pedido for anterior a 12 de abril de 2022, às 00:00:00 UTC:

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

    Devolve true se a hora do pedido for anterior ou igual a 12 de abril de 2022, às 00:00:00 UTC:

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

    Devolve true se a hora do pedido for posterior a 12 de abril de 2022, às 00:00:00 UTC:

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

    Devolve true se a hora do pedido for posterior 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 a um Timestamp.

    Exemplos

    Devolve o Timestamp que ocorre 30 minutos após 14:30:00 UTC a 12/04/2024:

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

    Devolve o Timestamp que ocorre 60 dias antes das 14:30:00 UTC de 12/04/2024:

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

    Extraia informações de uma indicação de tempo

    As funções nesta secção permitem-lhe extrair informações de uma indicação de tempo, como o dia da semana em que a indicação de tempo ocorre.

    Nas condições da IAM, todas as datas/horas estão no fuso horário UTC. No entanto, pode querer extrair informações com base num fuso horário diferente. Por exemplo, pode querer saber se uma data/hora UTC ocorre numa segunda-feira no fuso horário de Berlim, na Alemanha.

    Para especificar um fuso horário diferente, transmita o fuso horário para a função. Use um nome ou uma diferença para UTC da base de dados de fusos horários da IETF. Por exemplo, pode usar Europe/Berlin ou +01:00 para a Hora da Europa Central (CET).

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

    Obtém o dia do mês a partir de Timestamp. O valor usa a 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. A predefinição é UTC.
    Exemplo

    Devolve true se o pedido for enviado após o dia 15 do mês em UTC:

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

    Obtém o dia do mês a partir de Timestamp. O valor usa a indexação baseada em zero; o primeiro dia do mês é 0.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. A predefinição é UTC.
    Exemplo

    Devolve true se o pedido for enviado após o dia 15 do mês em UTC:

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

    Obtém o dia da semana a partir de Timestamp. O valor usa a indexação baseada em zero; por exemplo, domingo é 0.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. A predefinição é UTC.
    Exemplo

    Devolve true se o pedido for enviado entre segunda-feira e sexta-feira em Berlim, Alemanha:

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

    Obtém o dia do ano a partir de Timestamp. O valor usa a indexação baseada em zero; o primeiro dia do ano é 0.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. A predefinição é UTC.
    Exemplo

    Devolve true se o pedido for enviado durante os primeiros 5 dias do ano em Mountain View, na Califórnia:

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

    Obtém o ano a partir do Timestamp.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. A predefinição é UTC.
    Exemplo

    Devolve true se o pedido for enviado durante o ano de 2023 em Mountain View, Califórnia:

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

    Devolve true se o pedido for enviado durante o ano de 2022 em UTC:

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

    Obtém a hora do dia a partir de Timestamp. O valor usa a indexação baseada em zero; os valores variam de 0 a 23.

    Pode combinar esta função com getDayofWeek() para conceder acesso apenas durante o horário de trabalho permitido na sua jurisdição.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. A predefinição é UTC.
    Exemplo

    Devolve true se o pedido for enviado entre as 09:00 (9:00) e as 17:00 (17:00) num dia útil 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

    Obtém o número de milissegundos a partir de Timestamp. O valor usa a indexação baseada em zero; os valores variam de 0 a 999.

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

    Obtém o número de minutos depois da hora a partir de Timestamp. O valor usa a indexação baseada em zero; os valores variam de 0 a 59.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. A predefinição é UTC.
    Exemplo

    Devolve true se o pedido for enviado às 09:30 ou após essa hora (9:30) em Berlim, Alemanha:

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

    Obtém o mês do ano a partir de Timestamp. O valor usa a indexação baseada em zero; os valores variam de 0 a 11.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. A predefinição é UTC.
    Exemplo

    Devolve true se o pedido for enviado durante o mês de abril em Mountain View, Califórnia:

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

    Obtém o número de segundos a partir do Timestamp. O valor usa a indexação baseada em zero; os valores variam de 0 a 59.

    Parâmetro
    timeZone: o fuso horário para o qual calcular o resultado. A predefinição é UTC.
    , , ,

    Compara o resultado de duas funções nesta tabela.

    Atributos da regra de encaminhamento

    Os atributos das regras de encaminhamento permitem-lhe especificar os tipos de regras de encaminhamento que um principal pode criar. Por exemplo, pode permitir que um principal crie regras de encaminhamento para balanceadores de carga internos Trusted Cloud by S3NS, que processam o tráfego originário de uma rede, mas não para balanceadores de carga Trusted Cloudexternos Trusted Cloud, que processam o tráfego originário da Internet. Trusted Cloud Pode usar atributos de regras de encaminhamento em associações de funções de políticas 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, como serviços de back-end, proxies de destino, verificações de funcionamento e mapas de URLs. Trusted Cloud

    Funções suportadas

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

    Verifica se o pedido está a criar uma regra de encaminhamento.

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

    Verifica se o pedido afeta um dos tipos especificados de esquema de equilíbrio de carga. Para encontrar o identificador de cada esquema de equilíbrio de carga, bem como mais detalhes, consulte Usar condições do IAM em equilibradores de carga. Trusted Cloud

    Parâmetro
    schemes: Os esquemas de balanceamento de carga que o pedido tem permissão para afetar.
    Exemplo

    Devolve um dos seguintes elementos:

    • Se o pedido não estiver a criar uma regra de encaminhamento, devolve true.
    • Se o pedido estiver a criar uma regra de encaminhamento, devolve true apenas se a regra de encaminhamento afetar um esquema de balanceamento de carga INTERNAL, INTERNAL_MANAGED ou INTERNAL_SELF_MANAGED.
    !compute.isForwardingRuleCreationOperation() || (
      compute.isForwardingRuleCreationOperation() &&
      compute.matchLoadBalancingSchemes([
        'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
      ])
    )

    Tipos de recursos suportados

    Este atributo está disponível para pedidos de criação dos seguintes tipos de recursos:

    Serviço Tipos de recursos
    Cloud Load Balancing Regras de encaminhamento
    Cloud VPN Regras de encaminhamento (globais e regionais)
    Compute Engine Regras de encaminhamento (para encaminhamento de protocolos)
    Cloud Service Mesh1 Regras de encaminhamento

    1 Usa os atributos de recursos para o Compute Engine.

    Extraia valores de atributos

    Pode usar a função extract() para extrair um valor de um atributo. Por exemplo, pode extrair uma parte arbitrária de um nome de recurso e, em seguida, escrever uma expressão de condição que faça referência ao texto que extraiu.

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

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

    • Um identificador, incluído entre chavetas, que identifica a substring a extrair.

      Escolha um identificador curto e significativo que deixe claro o valor que quer extrair. Pode usar 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 tem de aparecer antes da substring a extrair.

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

    • Opcional: um sufixo, que tem de aparecer após a substring a extrair.

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

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

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

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

    Os exemplos seguintes mostram o resultado de vários modelos de extração diferentes. Estes exemplos referem-se 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 Resultado
    /order_date={date}/ 2019-11-03
    buckets/{name}/ acme-orders-aaa
    /orders/{empty}order_date string está vazio.
    {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= string está vazio.
    /orders/order_date=2019-11-03/{id}/data_lake string está vazio.

    Se extrair uma string que represente uma data, pode usar as funções e os operadores de data/hora nesta página para converter o valor extraído num Timestamp. Para ver exemplos, consulte o artigo Configurar o acesso baseado em recursos.