Referência de atributo para Condições do Cloud IAM

Este tópico descreve os atributos suportados em uma expressão de condição.

Atributos de condição compatíveis

A tabela a seguir resume os atributos compatíveis e indica quais serviços do Google Cloud reconhecem cada atributo:

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

Atributo dos níveis de acesso

Restrinja o acesso por meio dos níveis de acesso específicos.

Nível de acesso é um atributo calculado com base em atributos brutos sobre a solicitação e o solicitante, como endereço IP de origem, atributos do dispositivo, hora do dia e muito mais. Por exemplo, 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. Os níveis de acesso são definidos pelos administradores da organização.

Identity-Aware Proxy

Atributos de data/hora

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

Todos os serviços do Google Cloud

Atributos de IP/porta de destino

Restrições sobre o endereço IP de destino esperado e/ou a porta de uma solicitação. Por exemplo, uma instância de máquina virtual (VM) do Compute Engine pode expor um IP externo, como 10.0.0.2, mas a porta 22 pode ser exposta apenas para uso administrativo.

O uso atual é principalmente para Encaminhamento TCP do Identity-Aware Proxy.

Identity-Aware Proxy

Atributos da regra de encaminhamento

Especifique os tipos de regras de encaminhamento que um membro pode criar. Por exemplo, você pode permitir que um membro 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.

Atributos de recurso

O nome do recurso, o tipo de recurso e os atributos do serviço de recurso são usados para restringir ainda mais o escopo de uma concessão de acesso fornecida pela vinculação de função a um subconjunto de recursos do Google Cloud a que a política do Cloud IAM está anexada.

  • Cloud Key Management Service
  • Cloud Spanner
  • Cloud Storage
  • Compute Engine

Atributos de host/caminho do URL

Defina restrições para o caminho do URL esperado e/ou o host de uma solicitação. Por exemplo, uma restrição pode especificar que https://example.com é o aplicativo principal acessível por um domínio geral de usuários, e https://hr.example.com/admin é usado para acessar uma página no aplicativo em que apenas administradores de recursos humanos podem acessar essa parte.

Identity-Aware Proxy

Alguns tipos de recursos do Google Cloud não permitem condições nas políticas do Cloud IAM. No entanto, você pode 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 detalhes, consulte Recursos que aceitam vinculações de papéis condicionais.

Ao usar atributos no nível da organização, da pasta ou do projeto, lembre-se de que, se você enviar uma solicitação para um serviço e o serviço não reconhecer um atributo em uma condição, a condição sempre será avaliada como false. Por exemplo, a condição destination.port == 21 sempre é avaliada como false para BigQuery, porque BigQuery não reconhece os atributos de destino IP/porta.

Para evitar esse problema, use os atributos de recurso nesta página para limitar o escopo da condição. Por exemplo, a condição resource.service != "iap.googleapis.com" || destination.port == 21 é avaliada como true para cada serviço, exceto para Identity-Aware Proxy; Por outro lado, para Identity-Aware Proxy, a condição verifica a porta de destino.

Atributo dos 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 níveis de acesso específicos para ser autorizada.

O atributo de nível de acesso deriva de atributos da solicitação, como o endereço IP de origem, os atributos do dispositivo, a hora do dia e muito mais. 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.

Esse atributo está disponível no Identity-Aware Proxy como uma versão Beta particular.

Atributo request.auth.access_levels

Variável do atributo request.auth.access_levels
Tipo do atributo Lista de strings
Operadores compatíveis in
Operando compatível String
Discussão

A variável request.auth.access_levels é exibida no lado direito, e uma String que representa um nome completo do nível de acesso definido é exibida no lado esquerdo do operador in.

O nome completo de um nível de acesso tem um nome formatado no seguinte padrão:
"accessPolicies/<policyNumber>/accessLevels/<shortName>"

Observação: a string de nível de acesso diferencia maiúsculas de minúsculas e precisa corresponder exatamente ao que está configurado no Access Context Manager ter o efeito desejado. Por exemplo, "accessPolicies/199923665455/accessLevels/CorpNet" é uma string literal a ser usada na expressão, mas "accessPolicies/199923665455/accesslevels/CorpNet" não terá o efeito desejado.

Exemplo

"accessPolicies/199923665455/accessLevels/CorpNet"
in request.auth.access_levels

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.

Todos os serviços do Google Cloud são compatíveis com esse atributo de condição.

Funções básicas e operadores compatíveis

A variável de atributo usada no atributo de data e hora é request.time, do tipo Timestamp. Você também pode converter strings nos tipos Timestamp e Duration.

Funções básicas compatíveis Tipo Descrição
date String --> Carimbo de data/hora

Função: converte uma string em um carimbo de data/hora.
Parâmetro: string 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 Timestamp resultante contém a data e a hora especificadas 00:00:00.000 UTC.

Exemplo:

date("2020-02-01")
Um carimbo de data/hora que representa a data 2020-02-01 e a hora 00:00:00.000 UTC.

duration String --> Duração

Função: converta uma string em uma duração.
Parâmetro: string contendo um número de segundos, seguido de s

Exemplos:

duration("90s")
Uma duração que representa 1,5 minuto.

duration("2592000s")
Uma duração que representa 30 dias.

timestamp

String --> Carimbo de data/hora

Função: converte uma string em um carimbo de data/hora.
Parâmetro: string que segue o formato UTC (RFC 3339).

Exemplos:

timestamp("1985-04-12T23:20:50.52Z")
Representa a conversão de carimbo de data e hora para 20 minutos e 50,52 segundos após a 23ª hora de 12 de abril de 1985, em UTC.

timestamp("1996-12-19T16:39:57-08:00")
Isso representa a conversão do carimbo de data/hora para 39 minutos e 57 segundos após a 16ª hora do dia 19 de dezembro de 1996, com um ajuste de -08:00 em relação ao UTC. Observe que isso equivale a 1996-12-20T00:39:57Z em UTC. Além disso, esse ajuste não reflete o fuso horário. Por exemplo, o ajuste para o horário do Pacífico é -08:00 durante o inverno e é -07:00 durante o verão, considerando o horário de verão.

Observação importante:
A string deve seguir o requisito de formato para string UTC. Qualquer string que não seja compatível com o formato UTC causará uma falha na função timestamp() na conversão em um valor de carimbo de data/hora. Como resultado, a avaliação da condição na expressão que usa timestamp() resultará na negação da verificação de acesso.

<, <=, >, >=

(Carimbo de data/hora, carimbo de data/hora) --> bool

Função: comparação geral com o tipo de carimbo de data e hora.

Exemplos:

request.time < timestamp("2018-04-12T00:00:00.00Z")
request.time <= timestamp("2018-04-12T00:00:00.00Z")
request.time > timestamp("2018-04-12T00:00:00.00Z")
request.time >= timestamp("2018-04-12T00:00:00.00Z")
Essas expressões definem a comparação do tempo de solicitação com um carimbo de data/hora específico, que é 12 de abril de 2018 em UTC. Usado normalmente para definir a restrição de "horário de início" ou "tempo de expiração" para a concessão de função.

Observação: dada a precisão do tempo em milissegundos, inclusive a comparação de igualdade e desigualdade (==, !=) não tem efeito significativo.

+, - (Carimbo de data/hora, Duração) -> Carimbo de data e hora

Função: adiciona ou subtrai uma duração de um carimbo de data/hora.

Exemplos:

timestamp("2018-04-12T14:30:00.00Z") + duration("1800s")
Encontra o carimbo de data/hora que cairá 30 minutos depois de 14:30:00 GMT em 2018-04-12.

timestamp("2018-04-12T14:30:00.00Z") - duration("5184000s")
Encontra o carimbo de data e hora que ocorre 60 dias antes de 14:30:00 GMT em 2018-04-12.

Funções e operadores avançados compatíveis

A variável de atributo usada no atributo de data e hora é request.time, do tipo Timestamp.

Funções avançadas compatíveis Tipo Descrição

<, <=, >, >=, ==, !=

(int, int) --> bool

Função: comparação geral com tipo int.

Discussão:
Este conjunto de operadores de comparação para números inteiros é usado principalmente para o conjunto restante de "funções avançadas" com funções Timestamp. Todas essas funções (definidas no restante desta tabela) convertem uma determinada parte do valor do carimbo de data/hora em um int. Mais exemplos são fornecidos para cada função avançada a fim de sugerir um uso comum.

getDate, getDayOfMonth, getDayOfWeek, getDayOfYear

Timestamp.() --> int

Timestamp.(string) --> int

Funções:
getDate: recebe o dia do mês a partir do valor de carimbo de data/hora usando indexação com base em um. Em outras palavras, o primeiro dia do mês é 1.

getDayOfMonth: recebe o dia do mês a partir do valor de carimbo de data/hora usando indexação com base em zero. Em outras palavras, o primeiro dia do mês é 0.

getDayOfWeek: recebe o dia da semana do valor de carimbo de data/hora com base em zero no domingo. Em outras palavras, domingo(0), segunda-feira(1), ..., sábado(6).

getDayOfYear: recebe o dia do ano do valor de carimbo de data/hora usando indexação com base em zero. Em outras palavras, o primeiro dia do ano é 0.

Parâmetros:
String como fuso horário: conversão com base em data com fuso horário. Observação: quando o fuso horário não for especificado, a conversão se baseará na data em UTC.

Para mais informações sobre strings de fuso horário válidas, consulte Valores de fuso horário compatíveis.

Exemplo:

request.time.getDayOfWeek() > 0 && request.time.getDayOfWeek() < 6
Esta expressão será avaliada como verdadeira se a solicitação recebida for enviada entre segunda e sexta-feira no fuso horário UTC.

Exemplo:

request.time.getDayOfWeek("Europe/Berlin") > 0 && request.time.getDayOfWeek(Europe/Berlin") < 6
Esta expressão será avaliada como verdadeira se a solicitação recebida for enviada entre segunda e sexta-feira no fuso horário de Berlim.

Exemplo:

request.time.getDayOfYear("America/Los_Angeles") >= 0 && request.time.getDayOfYear("America/Los_Angeles") < 5
Esta expressão será avaliada como verdadeira se a solicitação recebida for enviada nos primeiros 5 dias do ano no fuso horário de Los Angeles.

getFullYear

Timestamp.() --> int

Timestamp.(string) --> int

Função: recebe o ano a partir da data.

Parâmetros:
Versão 1: sem parâmetro; a partir da data em UTC.
Versão 2: string de fuso horário, a partir da data em fuso horário.

Para mais informações sobre strings de fuso horário válidas, consulte Valores de fuso horário compatíveis.

Exemplo:

request.time.getFullYear("America/Los_Angeles") == 2018
Esta expressão será avaliada como verdadeira se a solicitação recebida for enviada no ano de 2018, no fuso horário de Los Angeles.

Exemplo:

request.time.getFullYear() < 2020
Esta expressão será avaliada como verdadeira se a solicitação recebida for enviada antes do final de 2019 em UTC.

getHours

Timestamp.() --> int

Timestamp.(string) --> int

Função: recebe as horas a partir da data. Os valores variam de 0 a 23.

Parâmetros:
Versão 1: sem parâmetro; a partir da data em UTC.
Versão 2: string de fuso horário, a partir da data em fuso horário.

Para mais informações sobre strings de fuso horário válidas, consulte Valores de fuso horário compatíveis.

Exemplo:

request.time.getHours("Europe/Berlin") >= 9 && request.time.getHours("Europe/Berlin") <= 17
Esta expressão especifica uma condição de horário de trabalho. Ela será avaliada como verdadeira se a solicitação for enviada entre 9h e 17h no fuso horário de Berlim.

Observação:

A combinação de getHours() com getDayofWeek() pode ser usada para definir uma condição no horário de trabalho legal, como para atender a uma exigência de jurisdição.

getMilliseconds

Timestamp.() --> int

Timestamp.(string) --> int

Função: recebe milissegundos dentro de um segundo a partir do carimbo de data/hora. Os valores variam de 0 a 999.

Parâmetros:
Versão 1: sem parâmetro; a partir da data em UTC.
Versão 2: string de fuso horário, a partir da data em fuso horário.

Para mais informações sobre strings de fuso horário válidas, consulte Valores de fuso horário compatíveis.

Observação:

Esta função é menos útil, dado o uso limitado semanticamente.

getMinutes

Timestamp.() --> int

Timestamp.(string) --> int

Função: recebe minutos dentro de uma hora a partir do carimbo de data/hora. Os valores variam de 0 a 59.

Parâmetros:
Versão 1: sem parâmetro; a partir da data em UTC.
Versão 2: string de fuso horário, a partir da data em fuso horário.

Para mais informações sobre strings de fuso horário válidas, consulte Valores de fuso horário compatíveis.

Observação:

Esta função é menos útil, dado o uso limitado semanticamente.

getMonth

Timestamp.() --> int

Timestamp.(string) --> int

Função: recebe meses dentro de um ano a partir do carimbo de data/hora. Os valores variam de 0 a 11.

Parâmetros:
Versão 1: sem parâmetro; a partir da data em UTC.
Versão 2: string de fuso horário, a partir da data em fuso horário.

Para mais informações sobre strings de fuso horário válidas, consulte Valores de fuso horário compatíveis.

Exemplo:

request.time.getMonth("America/Los_Angeles") == 3
Esta expressão será avaliada como verdadeira se a solicitação recebida for enviada durante abril, no fuso horário de Los Angeles.

getSeconds

Timestamp.() --> int

Timestamp.(string) --> int

Função: recebe segundos dentro de um minuto a partir do carimbo de data/hora. Os valores variam de 0 a 59.

Parâmetros:
Versão 1: sem parâmetro; a partir da data em UTC.
Versão 2: string de fuso horário, a partir da data em fuso horário.

Para mais informações sobre strings de fuso horário válidas, consulte Valores de fuso horário compatíveis.

Observação:

Esta função é menos útil, dado o uso limitado semanticamente.

Atributos de IP/porta de destino

O atributo de IP/porta de destino permite que os usuários definam restrições sobre o endereço IP de destino esperado e/ou a porta de uma solicitação. Por exemplo, uma instância de VM do Compute Engine pode expor um endereço IP externo 10.0.0.1 na porta 3001 para uso geral, e o endereço IP 10.0.0.2 e a porta 22 são expostos apenas para uso administrativo.

Consulte os documentos do Identity-Aware Proxy para mais informações sobre encaminhamento de TCP.

Este atributo é compatível no Identity-Aware Proxy.

Atributo destination.ip

Variável do atributo destination.ip
Tipo do atributo String
Operadores compatíveis ==, !=
Operando compatível String
Discussão

A variável destination.ip precisa ser uma string que representa um endereço IP no formato IPv4.

Observação: a função startsWith(<prefix string of IP>) e a função endsWith(<suffix string of IP>) não precisam ser usadas com o atributo destination.ip. A configuração de uma condição, como destination.ip.startsWith(<prefix string of IP>), não resulte em erro de sintaxe durante a execução de uma operação setIamPolicy, mas ela não é recomendada por causa de resultados inesperados. A correspondência de prefixo na string de IP não é recomendada para executar uma verificação do intervalo de endereços IP em CIDRs.

Exemplos

destination.ip == "10.0.0.1"

destination.ip != "10.0.0.1"

Atributo destination.port

Variável do atributo destination.port
Tipo do atributo Inteiro
Operadores compatíveis ==, !=, <, <=, >, >=
Operando compatível Inteiro
Discussão

É possível que a variável destination.port seja um número inteiro que representa um número de porta TCP.

Exemplos

destination.port == 21

destination.port < 3001

Atributos da regra de encaminhamento

Os atributos da regra de encaminhamento permitem especificar os tipos de regras de encaminhamento que um membro pode criar. Por exemplo, você pode permitir que um membro crie regras de encaminhamento para balanceadores de carga internos do Google Cloud, que processam tráfego original de uma rede do Google Cloud, mas não para balanceadores de carga externos do Google Cloud, que processam tráfego original 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.

Os atributos da regra de encaminhamento são compatíveis nos seguintes serviços do Google Cloud:

  • Cloud Load Balancing
  • Cloud VPN
  • Encaminhamento de protocolo do Compute Engine
  • Traffic Director

Funções compatíveis

Funções compatíveis Tipo Descrição
compute.isForwardingRuleCreationOperation() () --> bool

Função: verifique se a solicitação está criando uma regra de encaminhamento.

Exemplos: Consulte os exemplos de compute.matchLoadBalancingSchemes().

compute.matchLoadBalancingSchemes() Array.(string) --> bool

Função: verifique se a solicitação afeta um dos tipos especificados do esquema de balanceamento de carga. Para encontrar o identificador de cada esquema do balanceamento de carga, bem como detalhes sobre cada esquema, consulte Como usar o Google Cloud em balanceadores de carga do Cloud IAM Conditions.

Parâmetros: matriz de strings

Exemplo:


!compute.isForwardingRuleCreationOperation() || (
      compute.isForwardingRuleCreationOperation() &&
      compute.matchLoadBalancingSchemes([
        'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
      ]))
    )
  • Se a solicitação não for criar uma regra de encaminhamento, conceda a função ao membro.
  • Se a solicitação for criar uma regra de encaminhamento, só conceda a função caso a regra de encaminhamento afete um esquema de balanceamento de carga INTERNAL, INTERNAL_MANAGED ou INTERNAL_SELF_MANAGED.

Atributos de recurso

Os atributos de nome do recurso, tipo de recurso e serviço de recurso normalmente são usados para restringir ainda mais 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.

Os atributos de recurso são compatíveis nos seguintes serviços do Google Cloud:

  • Cloud Spanner
  • Cloud Storage
  • Compute Engine
  • Identity-Aware Proxy
  • Cloud Key Management Service
  • Resource Manager (somente tipo de recurso e serviço de recurso)

Para detalhes sobre os atributos de recurso que é possível usar para cada serviço, consulte Atributos de recurso do Cloud IAM Conditions.

Como extrair valores de nomes de recurso

Use a função extract() para extrair um valor de um nome de recurso. Essa função ativa expressões de condição para fazer referência a uma parte arbitrária do nome do recurso.

Para extrair um valor, use a função extract() e forneça um modelo de extração, que especifica a parte do nome do recurso a ser extraída. Por exemplo, convém usar o modelo projects/{project}/ para extrair um ID do projeto do nome do recurso de uma instância de VM do Compute Engine.

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ê deseja extrair. Use letras maiúsculas e minúsculas de A a Z; dígitos numéricos; traços (-); 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 precisará aparecer depois da substring a ser extraída.

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

A função extract() retorna valores diferentes, dependendo se o modelo de extração tem um prefixo, um sufixo ou ambos:

Tem prefixo Tem sufixo Valor extraído
Todo o nome do recurso
check Os caracteres após a primeira ocorrência do prefixo ou uma string vazia se não houver caracteres depois do prefixo
check Os caracteres antes da primeira ocorrência do sufixo ou uma string vazia se não houver caracteres antes do sufixo
check check 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 nome do recurso, ou se o sufixo aparecer somente antes do prefixo, a função extract() retornará null.

Os exemplos a seguir mostram a saída de vários modelos de extração diferentes. Nesses exemplos, o recurso é um objeto do Cloud Storage chamado projects/_/buckets/acme-orders-aaa/data_lake/orders/order_date=2019-11-03/aef87g87ae0876:

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

Também use as funções e os operadores de data e hora nesta página para converter o valor extraído em um carimbo de data/hora. Para exemplos, consulte Como configurar o acesso com base em recursos.

Atributo resource.name

Variável do atributo resource.name
Tipo do atributo String
Operadores compatíveis startsWith(), endsWith(), extract(), ==, !=
Operando compatível

String

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

Discussão

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

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

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

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

Os operadores == e != são para comparação com todo resource.name, ou uma parte extraída de resource.name.

Exemplos

Exemplo 1 (para uma instância de VM do Compute Engine):


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

Exemplo 2 (para um bucket do Cloud Storage):


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

Exemplo 3 (para um objeto do Cloud Storage):


resource.name.endsWith(".jpg")

Exemplo 4 (para vários tipos de recurso):


resource.name.extract("projects/{project}/")

Exemplo 5 (para um bucket do Cloud Storage):


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

Atributo resource.service

Variável do atributo resource.service
Tipo do atributo String
Operadores compatíveis ==, !=
Operando compatível String


Para uma lista de todos os literais de string do serviço de recurso compatíveis, consulte Atributos de recurso do Cloud IAM Conditions.

Discussão A variável resource.service, se usada, será destinada a comparações de igualdade ou desigualdade.

Observação: as funções .startsWith(<prefix string>) e .endsWith(<suffix string>) não são usadas com o atributo resource.service. Isso não é recomendado por causa dos resultados de avaliação inesperados.

Exemplos

Exemplo 1:


resource.service == "compute.googleapis.com"

Atributo resource.type

Variável do atributo resource.type
Tipo do atributo String
Operadores compatíveis ==, !=
Operando compatível String


Para uma lista de todos os literais de string do tipo de recurso compatíveis, consulte Atributos de recurso do Cloud IAM Conditions.

Discussão A variável resource.type, se usada, será destinada a comparações de igualdade ou desigualdade.

Observação: as funções .startsWith(<prefix string>) e .endsWith(<suffix string>) não são usadas com o atributo resource.type. Isso não é recomendado por causa dos resultados de avaliação inesperados.

Exemplos

Exemplo 1:


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

Exemplo 2:


(resource.type == "compute.googleapis.com/Image" ||
resource.type == "compute.googleapis.com/Disk")

Atributo de caminho do URL/host

O atributo de caminho do URL/host permite que usuários definam restrições sobre o caminho do URL esperado e/ou host de uma solicitação. Por exemplo, uma restrição pode especificar que https://example.com é o aplicativo principal acessível por um domínio geral de usuários e https://hr.example.com/admin é usado para acessar uma página no aplicativo em que apenas administradores de recursos humanos podem acessar essa parte.

Este atributo é compatível no Identity-Aware Proxy.

Atributo request.path

Variável do atributo request.path
Tipo do atributo String
Operadores compatíveis ==, startsWith(), endsWith()
Operandos/parâmetros compatíveis
  • String: ==
  • String de prefixo constante: startsWith()
  • String de sufixo constante: endsWith()
Discussões Observação: o operador != não é recomendado o uso. Em vez de comparação negativa, como

request.path != "/admin"
, o uso recomendado é a correspondência de prefixo, por exemplo

! request.path.startsWith("/admin")
Dessa maneira, os caminhos do URL criados por" "/admin", como "/admin/payroll/", são todos protegidos contra acesso não intencional.
Exemplos

Exemplo 1:


request.path == "/admin"

request.path == "/admin/payroll"

A string usada na comparação de igualdade (==) nos dois exemplos acima precisa ser formatada de acordo com os padrões de caminho do URL.

Exemplo 2:


request.path.startsWith("/admin")

Uma string que representa o prefixo de um caminho de URL é usada na função.

Exemplo 3:


request.path.endsWith("/payroll.js")

Uma string que representa o sufixo de um caminho de URL é usada na função.

Atributo request.host

Variável do atributo request.host
Tipo do atributo String
Operadores compatíveis ==, endsWith()
Operandos/parâmetros compatíveis
  • String: ==
  • String de sufixo constante: endsWith()
Discussão A função .startsWith(<prefix string>) não se destina a ser usada com o atributo request.host. A configuração de uma condição, como request.host.startsWith(<prefix string>), não resultará em erros de sintaxe durante a execução de uma operação setIamPolicy, mas ela não é recomendada por causa de resultados inesperados. Da mesma forma, != não é recomendado para uso.
Exemplos

Exemplo 1:


request.host == "www.example.com"

request.host == "hr.example.com"

A string usada na comparação de igualdade (==) nos dois exemplos acima precisa ser formatada de acordo com os padrões de string do URL para o nome de host de um site.

Exemplo 2:


request.host.endsWith("example.com")

Uma string que representa o sufixo de um nome do host de um site.