Este tópico 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 os serviços do Google Cloud que 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 do Google Cloud compatíveis |
---|---|---|
Atributo do serviço de recurso | Gerencie o acesso com base no serviço do Google Cloud que está sendo usado. |
|
Atributo de tipo de recurso | Gerencie o acesso com base no tipo de recurso. | |
Atributo de nome de recurso | Gerencie o acesso com base no nome do recurso. |
|
Tags de recurso | Gerencie o acesso com base nas tags anexadas ao recurso. | Todos os serviços do Google 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 do Google Cloud compatíveis |
---|---|---|
Gerencie o acesso com base em níveis de acesso específicoss
Um nível de acesso é um atributo calculado com base em atributos brutos
sobre a solicitação e o solicitante, como o endereço IP de origem, os atributos
do dispositivo e a hora do dia. Por exemplo, um nível de acesso |
Identity-Aware Proxy |
|
Gerencie o acesso com base nos dados fornecidos por uma API ou um serviço do Google Cloud específico. |
|
|
Defina o acesso expirável, programado ou de duração limitada aos recursos do Google Cloud. |
Todos os serviços do Google Cloud (consulte Suporte para condições herdadas) |
|
Gerencie o acesso com base no endereço IP e/ou na porta de destino de uma
solicitação. Por exemplo, uma instância de máquina virtual (VM) do Compute Engine pode
expor um IP externo, como |
Identity-Aware Proxy |
|
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 internos do Google Cloud, que processam tráfego proveniente de uma rede do Google Cloud, mas não para balanceadores de carga externos do Google Cloud, que processam tráfego originário da Internet. |
|
|
Gerencie o acesso com base no host e/ou no caminho do URL de uma solicitação. Por
exemplo, uma condição pode especificar que
|
|
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 Google 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 destination.port == 21
nunca concede
acesso a nenhum recurso do BigQuery porque eles
não fornecem os atributos de IP/porta de destino.
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 de túnel do Identity-Aware Proxy. Por
outro lado, para instâncias de túnel do Identity-Aware Proxy, a condição verifica
a porta de destino:
resource.type != 'iap.googleapis.com/TunnelInstance' ||
destination.port == 21
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ço do Google 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.
Variável de atributo | resource.service |
---|---|
Tipo de atributo |
Para ver uma lista de valores compatíveis, consulte Valores de serviço de recursos. |
Operadores compatíveis | , |
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 resource.service == "compute.googleapis.com" |
Serviços com suporte |
|
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.
Variável de atributo | resource.type |
||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo de atributo |
Para ver uma lista de valores compatíveis, consulteValores de tipo de recurso. . |
||||||||||||||||||||||||||||||||||||||||
Operadores compatíveis | , |
||||||||||||||||||||||||||||||||||||||||
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.
|
||||||||||||||||||||||||||||||||||||||||
Examples |
Retorna resource.type != "compute.googleapis.com/Image"
Retornará (resource.type == "compute.googleapis.com/Image" || resource.type == "compute.googleapis.com/Disk") |
||||||||||||||||||||||||||||||||||||||||
Tipos de recursos compatíveis |
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 de recurso.
O atributo resource.name
está disponível apenas para tipos de recursos específicos,
que estão listados na tabela abaixo. É 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()
ouendsWith()
para escrever uma condição que avalie o início ou o fim do nome do recurso.
Variável de atributo | resource.name |
||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Tipo de atributo |
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
A função
A função
A função Os operadores |
||||||||||||||||||||||||||||||||||
Examples |
Retorna resource.name != "projects/_/buckets/secret-bucket-123"
Retornará resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")
Retornará resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")
Retornará 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 |
|
Tags de recurso
As funções de tags de recurso permitem que você defina uma condição com base nas tags anexadas ou herdadas por um recurso. Por exemplo, é possível definir uma condição que conceda um papel 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 permanentetagValues/567890123456
. -
Um nome curto. O nome curto de cada chave precisa ser exclusivo na organização, 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 abreviadoprod
. -
Um nome de namespace, que adiciona o código numérico da sua organização ao nome curto de uma chave de tag. Por exemplo, uma chave de tag pode ter o nome com namespace
123456789012/env
. Saiba como conseguir o código da organização.
Para orientações sobre como escolher o tipo de identificador a ser usado nas suas condições, consulte Definições e identificadores de tags.
As condições das tags são compatíveis com todos os serviços e tipos de recursos do Google Cloud. Para saber como aplicar condições de tag a recursos que não são diretamente compatíveis com elas, consulte Suporte para condições herdadas nesta página.
Você pode usar as seguintes funções para definir condições com base nas tags:
Função | Descrição |
---|---|
resource.hasTagKey(
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(
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.matchTag(
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(
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
|
Atributos de solicitação
Os atributos de solicitação permitem criar condições que avaliam detalhes sobre a solicitação, como nível de acesso, data/hora, porta e endereço IP de destino (para tunelamento de TCP do IAP) ou o host/caminho esperado do URL (para o IAP e Cloud Run).
Atributo de níveis de acesso
O atributo de níveis de acesso permite que os usuários definam uma condição que exige que uma solicitação atenda a um ou mais níveis de acesso para ser autorizada.
O atributo de níveis de acesso é derivado dos atributos da solicitação, como
o endereço IP de origem, os atributos do dispositivo e a hora do dia. Por exemplo, um nível de acesso chamado fullyTrusted
pode exigir que o dispositivo que faz a solicitação seja de propriedade da empresa e tenha um bloqueio de tela. Um nível de acesso onNetwork
pode exigir que o dispositivo que faz a solicitação seja originado de um determinado intervalo de endereços IP. Consulte os documentos do
Access Context Manager para
mais informações sobre níveis de acesso.
O atributo de níveis de acesso está disponível somente quando você usa o Identity-Aware Proxy para acessar uma instância de túnel ou para acessar um aplicativo da Web em execução nos serviços de back-end do App Engine ou do Compute Engine. Mais especificamente, o atributo de níveis de acesso está disponível somente para solicitações que verificam uma destas permissões:
iap.tunnelInstances.accessViaIAP
iap.webServiceVersions.accessViaIAP
Use o atributo de níveis de acesso ao conceder condicionalmente os seguintes papéis predefinidos:
Usuário do túnel protegido pelo IAP (
roles/iap.tunnelResourceAccessor
)Contém uma única permissão,
iap.tunnelInstances.accessViaIAP
.Usuário do app da Web protegido pelo IAP (
roles/iap.httpsResourceAccessor
)Contém uma única permissão,
iap.webServiceVersions.accessViaIAP
.
Também é possível usar o atributo de níveis de acesso para conceder condicionalmente um papel personalizado que contenha essas permissões. O papel personalizado não pode conter outras permissões.
Atributo request.auth.access_levels
Variável de atributo | request.auth.access_levels |
---|---|
Tipo de atributo | list <string > |
Operadores compatíveis | in |
Detalhes |
Para verificar se uma solicitação atende a um nível de acesso específico, use o
operador ACCESS_LEVEL_FULL_NAME in request.auth.access_levels O nome completo de um nível de acesso usa o seguinte formato: accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL |
Exemplo |
Retornará "accessPolicies/199923665455/accessLevels/CorpNet" in request.auth.access_levels |
Tipos de recursos compatíveis | Disponível para solicitações que usam o Identity-Aware Proxy para acessar uma instância de túnel, um grupo de destinos de túnel, um web app em execução no balanceamento de carga do Google Cloud ou um web app em execução no App Engine. |
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 do Google Cloud específico.
Por exemplo, ao usar o Cloud Storage para
listar os objetos em um bucket, é possível usar o parâmetro prefix
na solicitação para incluir apenas objetos que tenham nomes que comecem com um prefixo específico.
Se você usar Limites de acesso a credenciais para diminuir as
credenciais de curta duração, é possível criar um limite de acesso a credenciais que aplique um limite às permissões
para listar objetos ao verificar o atributo de API
storage.googleapis.com/objectListPrefix
. Esse atributo de API tem o valor
do parâmetro prefix
da solicitação.
Para exemplos de quando pode ser necessário usar atributos de API em uma condição, consulte as seguintes páginas:
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(
V<T>
|
Recebe o atributo de API solicitado.
|
||||||||||||
hasOnly(
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
|
Atributos da API Cloud Storage
O Cloud Storage fornece o atributo de API a seguir.
Variável de atributo | storage.googleapis.com/objectListPrefix |
---|---|
Tipo de atributo | string |
Detalhes |
Em uma solicitação para listar
objetos em um bucket, há o valor do parâmetro Para outros tipos de solicitação, o atributo não é definido. |
Serviços que reconhecem esse atributo: | Cloud Storage |
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
|
Serviços que reconhecem esse atributo: |
Os serviços a seguir reconhecem o atributo
|
Atributo de data/hora
O atributo de data/hora é usado para definir acesso expirável, programado ou de duração limitada aos recursos do Google Cloud.
Esse atributo está disponível para todos os serviços e tipos de recursos do Google Cloud. Para saber como aplicar condições de tag 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(
Timestamp |
Converte uma data de um
|
duration(
Duration |
Converte um período de um
|
timestamp(
Timestamp |
Converte um
|
, , , |
Compara dois valores
|
|
Adicione ou subtraia um
|
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(
int
|
Recebe o dia do mês da
|
Timestamp.getDayOfMonth(
int
|
Recebe o dia do mês da
|
Timestamp.getDayOfWeek(
int
|
Recebe o dia da semana da
|
Timestamp.getDayOfYear(
int
|
Recebe o dia do ano da
|
Timestamp.getFullYear(
int
|
Recebe o ano da
|
Timestamp.getHours(
int
|
Recebe a hora do dia de
É possível combinar essa função com
|
Timestamp.getMilliseconds(
int
|
Recebe o número de milissegundos do
|
Timestamp.getMinutes(
int
|
Recebe o número de minutos após a hora no
|
Timestamp.getMonth(
int
|
Recebe o mês do ano da
|
Timestamp.getSeconds(
int
|
Recebe o número de segundos do
|
, , , |
Compara a saída de duas funções nesta tabela. |
Atributos de IP/porta de destino
O atributo de IP/porta de destino permite que os usuários gerenciem o acesso com base no endereço IP interno e/ou na porta de destino de uma solicitação.
Por exemplo, uma instância de VM do Compute Engine pode mapear o endereço IP
externo e a porta 132.168.42.21:3001
para o endereço IP interno e a porta
10.0.0.1:2300
para uso geral. Por outro lado, o endereço IP interno e a porta
10.0.0.1:22
podem estar disponíveis internamente para uso administrativo. Use
os atributos de IP/porta de destino para conceder diferentes quantidades de acesso
com base no endereço IP interno e na porta.
Para mais informações sobre encaminhamento de TCP, consulte a documentação do Identity-Aware Proxy.
Atributo destination.ip
Variável de atributo | destination.ip |
---|---|
Tipo de atributo | string |
Operadores compatíveis | , |
Detalhes |
A variável |
Examples |
Retornará destination.ip == "10.0.0.1"
Retorna destination.ip != "10.0.0.1" |
Tipos de recursos compatíveis | Disponível para solicitações que usam o Identity-Aware Proxy para acessar uma instância de túnel |
Atributo destination.port
Variável de atributo | destination.port |
---|---|
Tipo de atributo | int |
Operadores compatíveis | , , , , , |
Detalhes |
A variável |
Examples |
|
Tipos de recursos compatíveis | Disponível para solicitações que usam o Identity-Aware Proxy para acessar uma instância de túnel |
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 internos do Google Cloud, que processam tráfego proveniente de uma rede do Google Cloud, mas não para balanceadores de carga externos do Google Cloud, que processam tráfego originário da Internet.
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 do Google 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.isForwardingRule
bool
|
Verifica se a solicitação está criando uma regra de encaminhamento.
|
compute.matchLoad
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 Google Cloud.
|
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) |
Traffic Director1 | Regras de encaminhamento |
1 Usa os atributos de recurso do Compute Engine.
Atributo de host/caminho do URL
O atributo de caminho do URL/host permite que os usuários gerenciem o acesso com base no caminho do URL e/ou host de uma solicitação. Por exemplo, uma condição pode especificar que https://example.com
é o aplicativo principal acessível por um domínio geral de usuários, enquanto https://hr.example.com/admin
é usado para acessar uma página do aplicativo em que apenas administradores dos Recursos Humanos podem acessar essa parte.
Atributo request.path
Variável de atributo | request.path |
---|---|
Tipo de atributo | string |
Funções e operadores compatíveis | , startsWith(), endsWith() |
Detalhes |
Não recomendamos o uso do operador com esse
atributo. Em vez de verificar a desigualdade, como em
request.path != "/admin" , confira o prefixo do atributo, como em
!request.path.startsWith("/admin") . Ao verificar o
prefixo, você também protege os caminhos de URL na hierarquia
/admin , como /admin/payroll/ .
|
Examples |
Retornará request.path == "/admin" request.path == "/admin/payroll"
Retornará request.path.startsWith("/admin")
Retornará request.path.endsWith("/payroll.js") |
Tipos de recursos compatíveis |
|
request.host attribute
Variável de atributo | request.host |
---|---|
Tipo de atributo | string |
Funções e operadores compatíveis | , endsWith() |
Detalhes |
Não recomendamos usar a função .startsWith() ou o
operador com esse atributo. Essas funções e operadores podem gerar resultados inesperados.
|
Examples |
Retornará request.host == "www.example.com" request.host == "hr.example.com"
Retornará request.host.endsWith("example.com") |
Tipos de recursos compatíveis |
|
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
aZ
, 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/
:
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/ |
/orders/{none}/order_date= |
Esvaziar string |
/orders/order_date=2019-11-03/ |
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.