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 Google Cloud 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 Google Cloud suportados |
---|---|---|
Atributo do serviço de recursos |
Faça a gestão do acesso com base no Google Cloud serviço que está a ser usado. Pode usar este atributo em associações de funções de políticas de permissão. |
|
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. |
|
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. |
|
Etiquetas de recursos |
Faça a gestão do acesso com base nas etiquetas anexadas ao recurso. Pode usar este atributo nos seguintes locais:
|
Todos os Google 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 principais
Os seguintes atributos estão relacionados com o principal que está a fazer o pedido.
Atributo | Resumo de utilização | Tipos de diretor suportados |
---|---|---|
Aplicar políticas com base no tipo de principal no pedido. Pode usar este atributo em associações de políticas para políticas de limite de acesso principal. |
|
|
Aplicar políticas com base na identidade do principal no pedido. Pode usar este atributo em associações de políticas para políticas de limite de acesso principal. |
|
Para mais detalhes sobre os atributos principais, consulte Atributos principais nesta página.
Atributos de pedido
Os seguintes atributos estão relacionados com os detalhes do pedido.
Atributo | Resumo de utilização | Serviços Google Cloud suportados |
---|---|---|
Faça a gestão do acesso com base em níveis de acesso específicos.
Um nível de acesso é um atributo calculado com base em atributos não processados
acerca do pedido e do requerente, como o endereço IP de origem, os atributos
do dispositivo e a hora do dia. Por exemplo, um Pode usar este atributo em associações de funções de políticas de permissão. |
Identity-Aware Proxy |
|
Faça a gestão do acesso com base nos dados fornecidos por uma API ou um serviço Google Cloud específico. Pode usar este atributo em associações de funções de políticas de permissão. |
|
|
Definir acesso com data de validade, agendado ou de duração limitada aos recursos Google Cloud . Pode usar estes atributos em associações de funções de políticas de permissão. |
Todos os Google Cloud serviços (consulte a secção Suporte para condições herdadas) |
|
Faça a gestão do acesso com base no endereço IP e/ou na porta de destino de um pedido. Por exemplo, uma instância de máquina virtual (VM) do Compute Engine
pode expor um IP externo, como Usado para o encaminhamento TCP do Identity-Aware Proxy. Pode usar estes atributos em associações de funções de políticas de permissão. |
Identity-Aware Proxy |
|
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. Google Cloud Google Cloud Google Cloud Pode usar estes atributos em associações de funções de políticas de permissão. |
|
|
Faça a gestão do acesso com base no caminho do URL e/ou no anfitrião de um pedido. Por exemplo, uma condição pode especificar que 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 Google 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
Google 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 |
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 resource.service == "compute.googleapis.com" |
Serviços suportados |
|
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 |
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 resource.type != "compute.googleapis.com/Image"
Devolve (resource.type == "compute.googleapis.com/Image" || resource.type == "compute.googleapis.com/Disk") |
||||||||||||||||||||||||||||||||||||||||||||||||||
Tipos de recursos suportados |
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()
ouendsWith()
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 |
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
A função
A função
A função
Os operadores |
||||||||||||||||||||||||||||||||||||||||||||||
Exemplos |
Devolve resource.name != "projects/_/buckets/secret-bucket-123"
Devolve resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")
Devolve resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")
Devolve 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 |
|
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 permanentetagValues/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 diminutivoprod
. -
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 nomesmyproject/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. Google Cloud Como resultado, se tiver uma função com uma condição baseada em etiquetas, a consola Google 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(
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(
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.matchTag(
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(
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
|
Atributos principais
Os atributos principais permitem-lhe escrever condições com base no principal que emitiu o pedido. Com estes atributos, pode refinar os principais para os quais uma política é aplicada.
Pode usar atributos principais em associações de políticas para políticas de limite de acesso principal.
Atributo principal.type
O atributo principal.type
permite-lhe definir uma condição com base no tipo de principal que emite o pedido. Por exemplo, pode adicionar uma condição a uma associação de políticas para uma política de limite de acesso principal para garantir que a política só é aplicada a contas de serviço.
Pode usar atributos principais em associações de políticas para políticas de limite de acesso principal.
Variável de atributo | principal.type |
---|---|
Tipo de atributo |
|
Operadores suportados | , , in |
Tipos de principais suportados |
|
Exemplos |
É avaliado como principal.type == "iam.googleapis.com/ServiceAccount"
É avaliado como principal.type in ["iam.googleapis.com/WorkspaceIdentity", "iam.googleapis.com/WorkforcePoolIdentity"] |
Atributo principal.subject
O atributo principal.subject
permite-lhe definir uma condição com base no principal que emite o pedido. Por exemplo, pode adicionar uma condição a uma associação de políticas para uma política de limite de acesso principal para garantir que a política só é aplicada a principais cujos endereços de email terminem com @example.com
.
Se usar o atributo principal.subject
numa condição, recomendamos que também use o atributo principal.type
para controlar a que tipos de principais a condição se aplica. Isto acontece porque os identificadores principais não são necessariamente únicos em todos os tipos principais. Por exemplo, o identificador example-user@example.com
pode identificar uma Conta Google ou um utilizador num grupo de identidades da força de trabalho.
Ao usar o atributo principal.type
, além do atributo principal.subject
, pode garantir que a condição só corresponde a diretores com o tipo pretendido. Por exemplo, a seguinte expressão corresponde a Contas Google cujos endereços de email terminam com @example.com
:
principal.type == 'iam.googleapis.com/WorkspaceIdentity' &&
principal.subject.endsWith('@example.com')
Pode usar atributos principais em associações de políticas para políticas de limite de acesso principal.
Variável de atributo | principal.subject |
---|---|
Tipo de atributo |
|
Operadores suportados |
|
Principais assuntos suportados |
|
Exemplo |
É avaliado como principal.subject.endsWith("@example.com")
É avaliado como principal.subject == "example-service-account@example-project.iam.gserviceaccount.com" |
Atributos de pedido
Os atributos de pedido permitem-lhe criar condições que avaliam os detalhes sobre o pedido, como o respetivo nível de acesso, a data e a hora, o endereço IP de destino e a porta (para tunelização TCP de IAP) ou o caminho/anfitrião do URL esperado (para IAP e Cloud Run).
Atributo de níveis de acesso
O atributo de níveis de acesso permite que os utilizadores definam uma condição que exige que um pedido cumpra um ou mais níveis de acesso para ser autorizado. Pode usar o atributo de níveis de acesso em associações de funções de políticas de permissão.
O atributo de níveis de acesso é derivado de atributos do pedido, como o endereço IP de origem, os atributos do dispositivo e a hora do dia. Por exemplo, um nível de acesso denominado fullyTrusted
pode exigir que o dispositivo que faz o pedido seja propriedade da empresa e tenha um bloqueio de ecrã. Um nível de acesso onNetwork
pode exigir que o dispositivo que faz o pedido tenha origem num intervalo de endereços IP específico. Consulte a documentação do
Access Context Manager
para mais informações sobre os níveis de acesso.
O atributo de níveis de acesso só está disponível quando usa o Identity-Aware Proxy para aceder a uma instância de túnel ou para aceder a uma aplicação Web executada em serviços de back-end do App Engine ou do Compute Engine. Mais especificamente, o atributo access levels só está disponível para pedidos que verifiquem uma destas autorizações:
iap.tunnelInstances.accessViaIAP
iap.webServiceVersions.accessViaIAP
Pode usar o atributo de níveis de acesso quando concede condicionalmente as seguintes funções predefinidas:
Utilizador do túnel protegido por IAP (
roles/iap.tunnelResourceAccessor
)Contém uma única autorização,
iap.tunnelInstances.accessViaIAP
.Utilizador da app Web protegida por IAP (
roles/iap.httpsResourceAccessor
)Contém uma única autorização,
iap.webServiceVersions.accessViaIAP
.
Também pode usar o atributo de níveis de acesso para conceder condicionalmente uma função personalizada que contenha estas autorizações. A função personalizada não pode conter outras autorizações.
Atributo request.auth.access_levels
Variável de atributo | request.auth.access_levels |
---|---|
Tipo de atributo | list <string > |
Operadores suportados | in |
Detalhes |
Para verificar se um pedido cumpre 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 |
Devolve "accessPolicies/199923665455/accessLevels/CorpNet" in request.auth.access_levels |
Tipos de recursos suportados | Disponível para pedidos que usam o Identity-Aware Proxy para aceder a uma instância de túnel, a um grupo de destino do túnel, a uma aplicação Web em execução no Google Cloud equilíbrio de carga ou a uma aplicação Web em execução no App Engine. |
Atributos da API
Os atributos da API ajudam a gerir o acesso com base nos dados fornecidos por uma Google 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.
Por exemplo, quando usa o Cloud Storage para listar os objetos num contentor, pode usar o parâmetro prefix
no pedido para incluir apenas objetos cujos nomes comecem por um prefixo específico.
Se usar Limites de acesso às credenciais para reduzir o âmbito das credenciais de curta duração, pode criar um limite de acesso às credenciais que limite as autorizações para listar objetos verificando o atributo da API storage.googleapis.com/objectListPrefix
. Este atributo da API contém o valor do parâmetro prefix
do pedido.
Para ver exemplos de quando pode ter de usar atributos da API numa condição, consulte as seguintes páginas:
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(
V<T>
|
Obtém o atributo da API pedido.
|
||||||||||||
hasOnly(
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
|
Atributos da API Cloud Storage
O Cloud Storage fornece o seguinte atributo da API.
Variável de atributo | storage.googleapis.com/objectListPrefix |
---|---|
Tipo de atributo | string |
Detalhes |
Para um pedido de list
objetos num contentor, contém o valor do parâmetro Para outros tipos de pedidos, o atributo não está definido. |
Serviços que reconhecem este atributo | Cloud Storage |
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
|
Serviços que reconhecem este atributo |
Os seguintes serviços reconhecem o atributo
|
Atributo de data/hora
O atributo de data/hora é usado para definir o acesso expirável, agendado ou de duração limitada a Google 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 Google 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(
Timestamp |
Converte uma data de um
|
duration(
Duration |
Converte um período de tempo de um
|
timestamp(
Timestamp |
Converte um
|
, , , |
Compara dois valores
|
|
Adicione ou subtraia um
|
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(
int
|
Obtém o dia do mês a partir de
|
Timestamp.getDayOfMonth(
int
|
Obtém o dia do mês a partir de
|
Timestamp.getDayOfWeek(
int
|
Obtém o dia da semana a partir de
|
Timestamp.getDayOfYear(
int
|
Obtém o dia do ano a partir de
|
Timestamp.getFullYear(
int
|
Obtém o ano a partir do
|
Timestamp.getHours(
int
|
Obtém a hora do dia a partir de
Pode combinar esta função com
|
Timestamp.getMilliseconds(
int
|
Obtém o número de milissegundos a partir de
|
Timestamp.getMinutes(
int
|
Obtém o número de minutos depois da hora a partir de
|
Timestamp.getMonth(
int
|
Obtém o mês do ano a partir de
|
Timestamp.getSeconds(
int
|
Obtém o número de segundos a partir do
|
, , , |
Compara o resultado de duas funções nesta tabela. |
Atributos de porta/IP de destino
O atributo de IP/porta de destino permite que os utilizadores geram o acesso com base no endereço IP de destino interno e na porta de um pedido. Pode usar atributos de IP/porta de destino em associações de funções de políticas de permissã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 utilização geral. Por outro lado, o endereço IP interno e a porta
10.0.0.1:22
podem estar disponíveis apenas internamente para utilização administrativa. Pode usar 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 o encaminhamento TCP, consulte a documentação do Identity-Aware Proxy.
atributo destination.ip
Variável de atributo | destination.ip |
---|---|
Tipo de atributo | string |
Operadores suportados | , |
Detalhes |
A variável |
Exemplos |
Devolve destination.ip == "10.0.0.1"
Devolve destination.ip != "10.0.0.1" |
Tipos de recursos suportados | Disponível para pedidos que usam o Identity-Aware Proxy para aceder a uma instância de túnel |
atributo destination.port
Variável de atributo | destination.port |
---|---|
Tipo de atributo | int |
Operadores suportados | , , , , , |
Detalhes |
A variável |
Exemplos |
Devolve destination.port == 21
Devolve destination.port < 3001 |
Tipos de recursos suportados | Disponível para pedidos que usam o Identity-Aware Proxy para aceder a uma instância de túnel |
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 Google Cloud, que processam o tráfego originário de uma rede, mas não para balanceadores de carga Google Cloudexternos Google Cloud, que processam o tráfego originário da Internet. Google 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. Google Cloud
Funções suportadas
Função | Descrição |
---|---|
compute.isForwardingRule
bool
|
Verifica se o pedido está a criar uma regra de encaminhamento.
|
compute.matchLoad
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. Google Cloud
|
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.
Atributo de caminho de URL/anfitrião
O atributo de anfitrião/caminho do URL permite que os utilizadores geram o acesso com base no caminho do URL e no anfitrião de um pedido. Por exemplo, uma condição pode especificar que https://example.com
é a aplicação principal acessível por um domínio geral de utilizadores, enquanto https://hr.example.com/admin
é usado para aceder a uma página na aplicação onde apenas os administradores de recursos humanos podem aceder a esta parte.
Pode usar o atributo de caminho/anfitrião do URL em associações de funções da política de permissão.
Atributo request.path
Variável de atributo | request.path |
---|---|
Tipo de atributo | string |
Funções e operadores suportados | , startsWith(), endsWith() |
Detalhes |
Não recomendamos a utilização do operador com este atributo. Em vez de verificar a desigualdade, como em
request.path != "/admin" , verifique o prefixo do atributo, como
em !request.path.startsWith("/admin") . Ao selecionar o prefixo, também protege os caminhos de URL na hierarquia /admin , como /admin/payroll/ .
|
Exemplos |
Devolve request.path == "/admin" request.path == "/admin/payroll"
Devolve request.path.startsWith("/admin")
Devolve request.path.endsWith("/payroll.js") |
Tipos de recursos suportados |
|
atributo request.host
Variável de atributo | request.host |
---|---|
Tipo de atributo | string |
Funções e operadores suportados | , endsWith() |
Detalhes |
Não recomendamos a utilização da função .startsWith() nem do operador com este atributo. Estas funções e
operadores podem dar-lhe resultados inesperados.
|
Exemplos |
Devolve request.host == "www.example.com" request.host == "hr.example.com"
Devolve request.host.endsWith("example.com") |
Tipos de recursos suportados |
|
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
aZ
; 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/
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/ |
/orders/{none}/order_date= |
string está vazio. |
/orders/order_date=2019-11-03/ |
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.