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

Este tópico descreve os atributos compatíveis 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 de níveis de acesso

Gerencie o acesso com base em 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 etc. 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

Gerencie o acesso com base no endereço IP de destino e/ou na 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, é possível 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 recursos permitem conceder acesso a alguns recursos, mas não a todos, em um projeto, pasta ou organização.

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

Atributos de host/caminho do URL

Gerencie o acesso com base no caminho do URL e/ou no 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.

Identity-Aware Proxy

Alguns tipos de recursos do Google Cloud não permitem condições nas políticas do IAM. 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 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 o BigQuery, porque ele não reconhece os atributos de IP/porta de destino.

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 todo serviço, exceto para o Identity-Aware Proxy. Por outro lado, para o Identity-Aware Proxy, a condição verifica a porta de destino.

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 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 etc. 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.

Atributo request.auth.access_levels

Variável de atributo request.auth.access_levels
Tipo de 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 para ter o efeito desejado. Por exemplo, "accessPolicies/199923665455/accessLevels/CorpNet" é um literal de string válido a ser usado 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/hora é request.time, do tipo carimbo de data/hora. Também é possível converter strings nos tipos carimbo de data/hora e duração.

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 carimbo de data/hora resultante contém a data especificada e a hora 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: converte 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, em inglês).

Exemplos:

timestamp("1985-04-12T23:20:50.52Z")
Representa a conversão do carimbo de data/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")
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. 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 precisa 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á em uma falha na autorização.

<, <=, >, >=

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

Função: comparação geral com o tipo carimbo de data/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. Normalmente usado para definir uma condição de "horário de início" ou "prazo de validade" para a concessão de papel.

Observação: dada a precisão do tempo em milissegundos, incluir 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 ocorre 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/hora que ocorre 60 dias antes de 14:30:00 GMT em 2018-04-12.

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

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

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

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

(int, int) --> bool

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

Discussão:
Esse conjunto de operadores de comparação para números inteiros é usado principalmente para o conjunto restante de "funções avançadas" com funções de carimbo de data/hora. 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 a partir 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 a partir 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 fusos horários válidas, consulte Valores de fuso horário compatíveis.

Exemplo:

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

Exemplo:

request.time.getDayOfWeek("Europe/Berlin") > 0 && request.time.getDayOfWeek(Europe/Berlin") < 6
Essa 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
Essa 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 no fuso horário.

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

Exemplo:

request.time.getFullYear("America/Los_Angeles") == 2018
Essa 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
Essa 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 no fuso horário.

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

Exemplo:

request.time.getHours("Europe/Berlin") >= 9 && request.time.getHours("Europe/Berlin") <= 17
Essa 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 no fuso horário.

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

Observação:

Essa função é menos útil por causa do seu 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 no fuso horário.

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

Observação:

Essa função é menos útil por causa do seu 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 no fuso horário.

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

Exemplo:

request.time.getMonth("America/Los_Angeles") == 3
Essa 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 no fuso horário.

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

Observação:

Essa função é menos útil por causa do seu uso limitado semanticamente.

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 e/ou na porta de destino 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.

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

Atributo destination.ip

Variável de atributo destination.ip
Tipo de 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: as funções startsWith(<prefix string of IP>) e endsWith(<suffix string of IP>) não são para serem usadas com o atributo destination.ip. A configuração de uma condição, como destination.ip.startsWith(<prefix string of IP>), não resulta 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 nos CIDRs.

Exemplos

destination.ip == "10.0.0.1"

destination.ip != "10.0.0.1"

Atributo destination.port

Variável de atributo destination.port
Tipo de atributo Número inteiro
Operadores compatíveis ==, !=, <, <=, >, >=
Operando compatível Número inteiro
Discussão

A variável destination.port precisa ser 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, é possível 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.

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:

Funções compatíveis

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

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

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

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

Função: verifica se a solicitação afeta um dos tipos especificados do esquema de balanceamento de carga. Para encontrar o identificador de cada esquema de balanceamento de carga e detalhes sobre cada esquema, consulte Como usar condições do IAM nos balanceadores de carga do Google Cloud.

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 o papel ao membro.
  • Se a solicitação for criar uma regra de encaminhamento, só conceda o papel caso a regra de encaminhamento afete um esquema de balanceamento de carga INTERNAL, INTERNAL_MANAGED ou INTERNAL_SELF_MANAGED.

Atributos de recurso

Os atributos nome, tipo e serviço do recurso são usados geralmente 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.

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 do recurso e serviço do recurso)

Para detalhes sobre os atributos de recursos que é possível usar para cada serviço, consulte Atributos de recursos para condições do IAM.

Como extrair valores de nomes de recursos

Use a função extract() para extrair um valor de um nome de recurso. Essa função ativa expressões de condição para referir-se 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, é possível 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ê quer 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 precisa 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
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 em branco 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 de atributo resource.name
Tipo de 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 o resource.name inteiro, ou uma parte extraída do 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 de atributo resource.service
Tipo de atributo String
Operadores compatíveis ==, !=
Operando compatível String


Para uma lista de todos os literais de string de serviço de recursos compatíveis, consulte Atributos de recursos para condições do IAM.

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 de atributo resource.type
Tipo de atributo String
Operadores compatíveis ==, !=
Operando compatível String


Para uma lista de todos os literais de string de tipos de recursos compatíveis, consulte Atributos de recursos para condições do IAM.

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 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.

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

Atributo request.path

Variável de atributo request.path
Tipo de 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: não é recomendado usar o operador !=. 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 do URL é usada na função.

Exemplo 3:


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

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

Atributo request.host

Variável de atributo request.host
Tipo de 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 é para 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 usar !=.
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 do 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.