Referencia de atributos para las condiciones de Cloud IAM

En este tema, se describen los atributos compatibles en una expresión de condición.

Atributos de condición compatibles

En la siguiente tabla, se resumen los atributos compatibles y, también, indica qué servicios de Google Cloud reconocen cada atributo:

Atributo Resumen de uso Servicios de Google Cloud compatibles

Atributo de niveles de acceso

Restringe el acceso a través de niveles de acceso específicos.

Un nivel de acceso es un atributo calculado basado en atributos sin procesar sobre la solicitud y el solicitante, como la dirección IP de origen, los atributos del dispositivo, la hora del día y mucho más. Por ejemplo, un nivel de acceso onNetwork puede requerir que el dispositivo que realiza la solicitud se origine desde un rango de direcciones IP en particular. Los niveles de acceso están definidos por los administradores de la organización.

Identity-Aware Proxy

Atributos de fecha y hora

Establece el acceso de vencimiento, programado o de duración limitada a los recursos de Google Cloud.

Todos los servicios de Google Cloud

Atributos de puerto/IP de destino

Restricciones a la dirección IP de destino o al puerto de una solicitud esperados. Por ejemplo, una instancia de máquina virtual (VM) de Compute Engine podría exponer una IP externa, como 10.0.0.2, pero el puerto 22 podría estar expuesto solo para uso administrativo.

El uso actual es principalmente para el reenvío de TCP de Identity-Aware Proxy.

Identity-Aware Proxy

Atributos de la regla de reenvío

Especifica los tipos de reglas de reenvío que puede crear un miembro. Por ejemplo, puedes permitir que un miembro cree reglas de reenvío para balanceadores de cargas internos de Google Cloud, que controlan el tráfico que se origina dentro de una red de Google Cloud, pero no se origina en Internet.

Atributos de recursos

Los atributos de nombre de recurso, tipo de recurso y servicio de recurso se usan para restringir aún más el alcance de una concesión de acceso proporcionada por la función vinculación a un subconjunto de recursos del recurso de Google Cloud donde se adjunta la política de Cloud IAM.

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

Atributos de ruta de URL/host

Establece restricciones en la ruta de URL esperada o en el host de una solicitud. Por ejemplo, una restricción podría especificar que https://example.com es la aplicación principal accesible para un dominio general de usuarios, mientras que https://hr.example.com/admin se usa a fin de acceder a una página en la aplicación en el que solo los administradores de Recursos Humanos pueden acceder a esta parte.

Identity-Aware Proxy

Algunos tipos de recursos de Google Cloud no permiten condiciones en sus políticas de Cloud IAM. Sin embargo, puedes agregar vinculaciones de funciones condicionales a nivel de la organización, la carpeta o el proyecto, y otros recursos heredarán esas vinculaciones de funciones mediante la jerarquía de recursos. Si deseas obtener más detalles, consulta Recursos que aceptan vinculaciones de funciones condicionales.

Cuando uses atributos a nivel de la organización, la carpeta o el proyecto, ten en cuenta que si envías una solicitud a un servicio y el servicio no reconoce un atributo en una condición, la condición siempre se evalúa como false. Por ejemplo, la condición destination.port == 21 siempre se evalúa como false para BigQuery, ya que BigQuery no reconoce los atributos de puerto/IP de destino.

Para evitar este problema, usa los atributos de recursos en esta página a fin de limitar el permiso de la condición. Por ejemplo, la condición resource.service != "iap.googleapis.com" || destination.port == 21 se evalúa como true para cada servicio, excepto Identity-Aware Proxy; en cambio, para Identity-Aware Proxy, la condición verifica el puerto de destino.

Atributo de niveles de acceso

El atributo de niveles de acceso permite a los usuarios configurar una condición que requiere que una solicitud cumpla con niveles de acceso específicos para poder ser autorizada.

El atributo de nivel de acceso se deriva de los atributos de la solicitud, como la dirección IP de origen, los atributos del dispositivo, la hora del día y mucho más. Por ejemplo, un nivel de acceso llamado fullyTrusted puede requerir que el dispositivo que realiza la solicitud sea propiedad de la empresa y tenga un bloqueo de pantalla. Un nivel de acceso onNetwork puede requerir que el dispositivo que realiza la solicitud se origine desde un rango de direcciones IP en particular.

Consulta los documentos de Access Context Manager para obtener más información sobre los niveles de acceso.

Este atributo está disponible en Identity-Aware Proxy como una versión Beta privada.

Atributo request.auth.access_levels

Variable de atributo request.auth.access_levels
Tipo de atributo Lista de strings
Operadores admitidos in
Operando compatible String
Debate

La variable request.auth.access_levels aparece a la derecha y una string representa un nombre completo del nivel de acceso definido aparece en el lado izquierdo del operador in.

El nombre completo de un nivel de acceso tiene un nombre formateado en el siguiente patrón:
"accessPolicies/<policyNumber>/accessLevels/<shortName>"

Nota: La string de nivel de acceso distingue entre mayúsculas y minúsculas, y debe coincidir exactamente con lo que se configura en Access Context Manager para lograr el efecto deseado. Por ejemplo, “accessPolicies/199923665455/accessLevels/CorpNet” es un literal de string válido para usar en la expresión; sin embargo, “accessPolicies/199923665455/accesslevels/CorpNet” no logrará el efecto deseado.

Ejemplo

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

Atributo de fecha y hora

El atributo de fecha y hora se usa para establecer el acceso de vencimiento, programado o de duración limitada a los recursos de Google Cloud.

Todos los servicios de Google Cloud admiten este atributo de condición.

Funciones y operadores básicos compatibles

La variable de atributo que se usa para el atributo de fecha y hora es request.time, del tipo marca de tiempo. También puedes convertir strings en los tipos de marca de tiempo y de duración.

Funciones básicas compatibles Tipo Descripción
date String --> Marca de tiempo

Función: Convierte una string en una marca de tiempo.
Parámetro: string con el formato YYYY-MM-DD, en el que YYYY es el año, MM es el mes de dos dígitos y DD es el día de dos dígitos. La marca de tiempo resultante contiene la fecha y la hora especificadas 00:00:00.000 UTC.

Ejemplo:

date("2020-02-01")
Una marca de tiempo que representa la fecha 2020-02-01 y la hora 00:00:00.000 UTC.

duration String --> Duración

Función: convierte una string en una duración.
Parámetro: string que contiene una cantidad de segundos, seguido de s

Ejemplos:

duration("90s")
Una duración que representa 1.5 minutos.

duration("2592000s")
Una duración que representa 30 días.

timestamp

String --> Marca de tiempo

Función: Convierte una string en una marca de tiempo.
Parámetro: String que se adhiere al formato UTC (RFC 3339).

Ejemplos:

timestamp("1985-04-12T23:20:50.52Z")
Esto representa la conversión de la marca de tiempo durante 20 minutos y 50.52 segundos después de la hora 23 del 12 de abril de 1985 UTC.

timestamp("1996-12-19T16:39:57-08:00")
Esto representa la conversión de la marca de tiempo durante 39 minutos y 57 segundos después de la hora 16 del 19 de diciembre de 1996 con un desplazamiento de -08:00 desde UTC. Ten en cuenta que esto es equivalente al 20/12/1996 T00:39:57Z en UTC. Este desplazamiento no refleja la zona horaria, por ejemplo, el desplazamiento de la hora estándar del Pacífico es -08:00 durante el invierno y -07:00 durante el verano, con el fin de respetar el horario de verano.

Nota importante:
La string debe seguir los requisitos de formato de la string UTC. Cualquier string que no cumpla con el formato UTC provocará que la función timestamp() no logre convertirla en un valor de marca de tiempo. Como resultado, la evaluación de la condición en la expresión con timestamp() dará como resultado la denegación de la verificación de acceso.

<, <=, >, >=

(Marca de tiempo, marca de tiempo) --> bool

Función: Comparación general con el tipo de marca de tiempo.

Ejemplos:

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")
Estas expresiones establecen la comparación del tiempo de la solicitud con una marca de tiempo específica, que es el 12 de abril de 2018 en UTC. Por lo general, se usa a fin de configurar la restricción “hora de inicio” o “hora de vencimiento” para la concesión de funciones.

Nota: Dada la precisión de tiempo en milisegundos, la comparación de igualdad y desigualdad (==, !=) no tiene un efecto significativo.

+, - (Marca de tiempo, Duración) --> Marca de tiempo

Función: agregar o quitar una duración de una marca de tiempo.

Ejemplos:

timestamp("2018-04-12T14:30:00.00Z") + duration("1800s")
Busca la marca de tiempo que cae 30 minutos después de las 14:30:00 GMT del 12/04/2018.

timestamp("2018-04-12T14:30:00.00Z") - duration("5184000s")
Busca la marca de tiempo que cae 60 días antes de las 14:30:00 GMT de 2018-04-12.

Funciones y operadores avanzados compatibles

La variable de atributo que se usa para el atributo de fecha y hora es request.time, del tipo marca de tiempo.

Funciones avanzadas compatibles Tipo Descripción

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

(int, int) --> bool

Función: comparación general con tipo int.

Discusión:
Este conjunto de operadores de comparación para números enteros se usa, sobre todo, en el conjunto restante de “funciones avanzadas” con las funciones de marca de tiempo. Todas estas funciones (definidas en el resto de esta tabla), convierten una parte determinada del valor de la marca de tiempo en un int. Se proporcionan más ejemplos para cada función avanzada a fin de sugerir el uso común.

getDate, getDayOfMonth, getDayOfWeek, getDayOfYear

Marca de tiempo.() --> int

Marca de tiempo.(String) --> int

Funciones:
getDate: Obtén el día del mes a partir del valor de la marca de tiempo mediante la indexación basada en una sola cuenta. Es decir, el primer día del mes, es 1.

getDayOfMonth: Obtén el día del mes a partir del valor de la marca de tiempo mediante la indexación basada en cero. Es decir, el primer día del mes, es 0.

getDayOfWeek: Obtén el día de la semana a partir del valor de la marca de tiempo, basado en cero, el domingo. Es decir, domingo(0), lunes(1), …, sábado(6).

getDayOfYear: Obtén el día del año a partir del valor de la marca de tiempo mediante la indexación basada en cero. Es decir, el primer día del año, es 0.

Parámetros:
String como zona horaria: conversión basada en la fecha con la zona horaria. Nota: Cuando no se especifique la zona horaria, la conversión se basará en la fecha en UTC.

Para obtener más información sobre strings de zona horaria válidas, consulta los Valores de zona horaria admitidos.

Ejemplo:

request.time.getDayOfWeek() > 0 && request.time.getDayOfWeek() < 6
Esta expresión se evalúa como verdadera si la solicitud entrante se envía entre el lunes y el viernes a la hora UTC.

Ejemplo:

request.time.getDayOfWeek("Europe/Berlin") > 0 && request.time.getDayOfWeek(Europe/Berlin") < 6
Esta expresión se evalúa como verdadera si la solicitud entrante se envía entre el lunes y el viernes en la zona horaria de Berlín.

Ejemplo:

request.time.getDayOfYear("America/Los_Angeles") >= 0 && request.time.getDayOfYear("America/Los_Angeles") < 5
Esta expresión se evalúa como verdadera si la solicitud entrante se envía dentro de los primeros 5 días del año en la zona horaria de Los Ángeles.

getFullYear

Marca de tiempo.() --> int

Marca de tiempo.(String) --> int

Función: obtiene el año a partir de la fecha.

Parámetros:
Versión 1: sin parámetros; a partir de la fecha en UTC.
Versión 2: string de zona horaria; a partir de la fecha en la zona horaria.

Para obtener más información sobre strings de zona horaria válidas, consulta los Valores de zona horaria admitidos.

Ejemplo:

request.time.getFullYear("America/Los_Angeles") == 2018
Esta expresión se evalúa como verdadera si la solicitud entrante se envía en el año 2018, en la zona horaria de Los Ángeles.

Ejemplo:

request.time.getFullYear() < 2020
Esta expresión se evalúa como verdadera si la solicitud entrante se envía antes del final de 2019 en UTC.

getHours

Marca de tiempo.() --> int

Marca de tiempo.(String) --> int

Función: obtiene las horas de la fecha; los valores varían entre 0 y 23.

Parámetros:
Versión 1: sin parámetros; a partir de la fecha en UTC.
Versión 2: string de zona horaria; a partir de la fecha en la zona horaria.

Para obtener más información sobre strings de zona horaria válidas, consulta los Valores de zona horaria admitidos.

Ejemplo:

request.time.getHours("Europe/Berlin") >= 9 && request.time.getHours("Europe/Berlin") <= 17
Esta expresión especifica una condición de hora de trabajo. Se evalúa como verdadera si la solicitud se envía entre las 9:00 a.m. y 5:00 p.m. en la zona horaria de Berlín.

Nota:

La combinación de getHours() con getDayofWeek() se puede usar a fin de establecer una condición en el horario laboral legal, como para cumplir con un requisito de jurisdicción.

getMilliseconds

Marca de tiempo.() --> int

Marca de tiempo.(String) --> int

Función: obtiene los milisegundos en un segundo desde la marca de tiempo; los valores varían entre 0 y 999.

Parámetros:
Versión 1: sin parámetros; a partir de la fecha en UTC.
Versión 2: string de zona horaria; a partir de la fecha en la zona horaria.

Para obtener más información sobre strings de zona horaria válidas, consulta los Valores de zona horaria admitidos.

Nota:

Esta función no es tan útil, dado su uso semántico limitado.

getMinutes

Marca de tiempo.() --> int

Marca de tiempo.(String) --> int

Función: obtiene los minutos en una hora desde la marca de tiempo; los valores varían entre 0 y 59.

Parámetros:
Versión 1: sin parámetros; a partir de la fecha en UTC.
Versión 2: string de zona horaria; a partir de la fecha en la zona horaria.

Para obtener más información sobre strings de zona horaria válidas, consulta los Valores de zona horaria admitidos.

Nota:

Esta función no es tan útil, dado su uso semántico limitado.

getMonth

Marca de tiempo.() --> int

Marca de tiempo.(String) --> int

Función: obtiene los meses en un año desde la marca de tiempo; los valores varían entre 0 y 11.

Parámetros:
Versión 1: sin parámetros; a partir de la fecha en UTC.
Versión 2: string de zona horaria; a partir de la fecha en la zona horaria.

Para obtener más información sobre strings de zona horaria válidas, consulta los Valores de zona horaria admitidos.

Ejemplo:

request.time.getMonth("America/Los_Angeles") == 3
Esta expresión se evalúa como verdadera si la solicitud entrante se envía durante abril en la zona horaria de los Los Ángeles.

getSeconds

Marca de tiempo.() --> int

Marca de tiempo.(String) --> int

Función: obtiene los segundos en un minuto desde la marca de tiempo; los valores varían entre 0 y 59.

Parámetros:
Versión 1: sin parámetros; a partir de la fecha en UTC.
Versión 2: string de zona horaria; a partir de la fecha en la zona horaria.

Para obtener más información sobre strings de zona horaria válidas, consulta los Valores de zona horaria admitidos.

Nota:

Esta función no es tan útil, dado su uso semántico limitado.

Atributos de puerto/IP de destino

El atributo de puerto/IP de destino permite a los usuarios establecer restricciones a las direcciones IP de destino o al puerto de una solicitud esperados. Por ejemplo, una instancia de VM de Compute Engine puede exponer una dirección IP externa 10.0.0.1 en el puerto 3001 para uso general, y la dirección IP 10.0.0.2 y el puerto 22 se exponen solo para uso administrativo.

Consulta los documentos de Identity-Aware Proxy para obtener más información sobre el reenvío de TCP.

Este atributo es compatible con Identity-Aware Proxy.

Atributo destination.ip

Variable de atributo destination.ip
Tipo de atributo String
Operadores admitidos ==, !=
Operando compatible String
Debate

Se espera que la variable destination.ip sea una string que represente una dirección IP en formato IPv4.

Nota: La función startsWith(<prefix string of IP>) y la función endsWith(<suffix string of IP>) no se deben usar con el atributo destination.ip. A pesar de que configurar una condición como destination.ip.startsWith(<prefix string of IP>) no generará un error de sintaxis cuando se ejecuta una operación setIamPolicy, no se recomienda debido a resultados inesperados. No es recomendable que los prefijos coincidan en la string de la IP para realizar una verificación de rango de direcciones IP sobre CIDR.

Ejemplos

destination.ip == "10.0.0.1"

destination.ip != "10.0.0.1"

Atributo destination.port

Variable de atributo destination.port
Tipo de atributo Entero
Operadores admitidos ==, !=, <, <=, >, >=
Operando compatible Entero
Debate

Se espera que la variable destination.port sea un número entero que representa un número de puerto TCP.

Ejemplos

destination.port == 21

destination.port < 3001

Atributos de la regla de reenvío

Los atributos de la regla de reenvío te permiten especificar los tipos de reglas de reenvío que puede crear un miembro. Por ejemplo, puedes permitir que un miembro cree reglas de reenvío para balanceadores de cargas internos de Google Cloud, que controlan el tráfico que se origina dentro de una red de Google Cloud, pero no controlan el tráfico que se origina en Internet.

Para Cloud Load Balancing, los atributos de la regla de reenvío no afectan la capacidad de crear otros componentes de un balanceador de cargas de Google Cloud, como servicios de backend, proxies de destino, verificaciones de estado y mapas de URL.

Los atributos de la regla de reenvío se admiten en los siguientes servicios de Google Cloud:

Funciones compatibles

Funciones compatibles Tipo Descripción
compute.isForwardingRuleCreationOperation() () --> bool

Función: Verifica si la solicitud crea una regla de reenvío.

Ejemplos: consulta los ejemplos de compute.matchLoadBalancingSchemes().

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

Función: Verifica si la solicitud afecta uno de los tipos especificados del esquema de balanceo de cargas. Para buscar el identificador de cada esquema de balanceo de cargas, así como los detalles de cada esquema, consulta Usa las condiciones de Cloud IAM en los balanceadores de cargas de Google Cloud.

Parámetros: arreglo de strings

Ejemplo:


!compute.isForwardingRuleCreationOperation() || (
      compute.isForwardingRuleCreationOperation() &&
      compute.matchLoadBalancingSchemes([
        'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
      ]))
    )
  • Si la solicitud no crea una regla de reenvío, otórgale la función al miembro.
  • Si la solicitud si crea una regla de reenvío, otorga la función solo si la regla de reenvío afecta a un esquema de balanceo de cargas INTERNAL, INTERNAL_MANAGED o INTERNAL_SELF_MANAGED.

Atributos de recursos

Los atributos de nombre, tipo y servicio de recurso se suelen usar a fin de restringir aún más el permiso de una concesión de acceso que proporciona la vinculación de función. Cuando una función contiene permisos que se aplican a diferentes atributos específicos del recurso, se pueden usar condiciones basadas en recursos a fin de otorgar un subconjunto de permisos de la función para tipos específicos o servicios específicos.

Los atributos de recursos se admiten en los siguientes servicios de Google Cloud:

  • Cloud Spanner
  • Cloud Storage
  • Compute Engine
  • Identity-Aware Proxy
  • Cloud Key Management Service
  • Resource Manager (solo tipo de recurso y servicio de recursos)

Si deseas obtener más información sobre los atributos de recursos que puedes usar para cada servicio, consulta Atributos de recursos para condiciones de Cloud IAM.

Extrae valores de nombres de recursos

Puedes usar la función extract() para extraer un valor de un nombre de recurso. Esta función habilita las expresiones de condición para hacer referencia a una parte arbitraria del nombre del recurso.

Para extraer un valor, usa la función extract() y proporciona una plantilla de extracción, que especifica la parte del nombre del recurso que se extraerá. Por ejemplo, puedes usar la plantilla projects/{project}/ para extraer un ID de proyecto del nombre de recurso de una instancia de VM de Compute Engine.

Una plantilla de extracción contiene las siguientes partes:

  • Un identificador, entre llaves, que identifica la substring que se extraerá. Elija un identificador breve y significativo que aclare qué valor deseas extraer. Puedes usar letras mayúsculas y minúsculas de A a Z; dígitos numéricos; guiones (-); y guiones bajos (_).

    En la plantilla projects/{project}/, el identificador es project.

  • Un prefijo, que debe aparecer antes de la substring que se extraerá (opcional).

    En la plantilla projects/{project}/, el prefijo es projects/.

  • Un sufijo, que debe aparecer después de la substring que se extraerá (opcional).

    En la plantilla projects/{project}/, el sufijo es /.

La función extract() muestra valores diferentes en función de si la plantilla de extracción tiene un prefijo, un sufijo o ambos:

Tiene prefijo Tiene sufijo Valor extraído
El nombre completo del recurso
check Los caracteres después del primer caso del prefijo o una string vacía si no hay caracteres después del prefijo
check Los caracteres antes del primer caso del sufijo o una string vacía si no hay caracteres antes del sufijo
check check Los caracteres entre el primer caso del prefijo y el primer caso subsiguiente del sufijo, o una string vacía si no hay caracteres entre el prefijo y el sufijo

Si especificas un prefijo o un sufijo que no aparecen en el nombre del recurso o si el sufijo aparece antes del prefijo, la función extract() muestra null.

Los siguientes ejemplos muestran el resultado de varias plantillas de extracción diferentes. En estos ejemplos, el recurso es un objeto de Cloud Storage llamado projects/_/buckets/acme-orders-aaa/data_lake/orders/order_date=2019-11-03/aef87g87ae0876:

Plantilla de extracción Salida
/order_date={date}/ 2019-11-03
buckets/{name}/ acme-orders-aaa
/orders/{empty}order_date String vacío
{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

También puedes usar los operadores y funciones de fecha y hora de esta página para convertir el valor extraído en una marca de tiempo. Para obtener ejemplos, consulta Configura el acceso basado en recursos.

Atributo resource.name

Variable de atributo resource.name
Tipo de atributo String
Operadores admitidos startsWith(), endsWith(), extract(), ==, !=
Operando compatible

String

Cada tipo de recurso usa un formato específico para el nombre del recurso. Para obtener una lista de formatos, consulta Formato de nombre de recurso.

Debate

resource.name contiene el nombre de recurso relativo para el recurso de destino en la solicitud. El nombre de recurso relativo es una ruta de URI sin una barra diagonal inicial (/).

La función startsWith() toma el literal de string de prefijo que se evaluará en resource.name.

La función endsWith() toma el literal de string de sufijo para que se evaluará en resource.name.

La función extract() usa una plantilla de extracción para extraer parte de resource.name. Para obtener más información, consulta Extraer valores de nombres de recursos en esta página.

Los operadores == y != se usan para comparar con el resource.name completo o una parte extraída del resource.name.

Ejemplos

Ejemplo 1 (para una instancia de VM de Compute Engine):


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

Ejemplo 2 (para un depósito de Cloud Storage):


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

Ejemplo 3 (para un objeto de Cloud Storage):


resource.name.endsWith(".jpg")

Ejemplo 4 (para varios tipos de recursos):


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

Ejemplo 5 (para un depósito de Cloud Storage):


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

Atributo resource.service

Variable de atributo resource.service
Tipo de atributo String
Operadores admitidos ==, !=
Operando compatible String


Para obtener una lista de todos los literales de string de servicio de recurso admitidos, consulta Atributos de recursos para las condiciones de Cloud IAM.

Debate La variable resource.service, si se usa, está destinada a comparaciones de igualdad o desigualdad.

Nota: Las funciones .startsWith(<prefix string>) y .endsWith(<suffix string>) no están diseñadas para usarse con el atributo resource.service. No se recomienda debido a los resultados inesperados de la evaluación.

Ejemplos

Ejemplo 1:


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

Atributo resource.type

Variable de atributo resource.type
Tipo de atributo String
Operadores admitidos ==, !=
Operando compatible String


Para ver una lista de todos los literales de string de tipo de recurso admitidos, consulta Atributos de recursos para condiciones de Cloud IAM.

Debate La variable resource.type, si se usa, está destinada a comparaciones de igualdad o desigualdad.

Nota: Las funciones .startsWith(<prefix string>) y .endsWith(<suffix string>) no están diseñadas para usarse con el atributo resource.type. No se recomienda debido a los resultados inesperados de la evaluación.

Ejemplos

Ejemplo 1:


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

Ejemplo 2:


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

Atributo de ruta de URL/host

El atributo de ruta de URL/host permite a los usuarios establecer restricciones en la ruta de URL o el host esperados de una solicitud. Por ejemplo, una restricción podría especificar que https://example.com es la aplicación principal accesible para un dominio general de usuarios, mientras que https://hr.example.com/admin se usa a fin de acceder a una página en la aplicación en la que solo los administradores de Recursos Humanos pueden acceder a esta parte.

Este atributo es compatible con Identity-Aware Proxy.

Atributo request.path

Variable de atributo request.path
Tipo de atributo String
Operadores admitidos ==, startsWith(), endsWith()
Operandos y parámetros admitidos
  • String: ==
  • String de prefijo constante: startsWith()
  • String de sufijo constante: endsWith()
Discusiones Nota: No se recomienda el uso del operador !=. En lugar de una comparación negativa, como

request.path != "/admin"
, el uso recomendado es la coincidencia de prefijo, por ejemplo

! request.path.startsWith("/admin")
. De esta manera, las rutas de URL vinculadas con “/admin”, como “/admin/nómina/”, están protegidas contra el acceso no deseado.
Ejemplos

Ejemplo 1:


request.path == "/admin"

request.path == "/admin/payroll"

Se espera que la string que se usa en la comparación de igualdad (==) en los dos ejemplos anteriores se formatee en función de los estándares de ruta de URL.

Ejemplo 2:


request.path.startsWith("/admin")

En la función, se usa una string que representa el prefijo de una ruta de URL.

Ejemplo 3:


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

En la función, se usa una string que representa el sufijo de una ruta de URL.

Atributo request.host

Variable de atributo request.host
Tipo de atributo String
Operadores admitidos ==, endsWith()
Operandos y parámetros admitidos
  • String: ==
  • String de sufijo constante: endsWith()
Debate La función .startsWith(<prefix string>) no está diseñada para usarse con el atributo request.host. A pesar de que configurar una condición como request.host.startsWith(<prefix string>) no generará errores de sintaxis cuando se ejecuta una operación setIamPolicy, no se recomienda debido a resultados inesperados. Del mismo modo no se recomienda el uso de !=.
Ejemplos

Ejemplo 1:


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

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

Se espera que la string que se usa en la comparación de igualdad (==) en los dos ejemplos anteriores tenga el formato de estándares de string de URL para el nombre de host de un sitio web.

Ejemplo 2:


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

Una string que representa el sufijo de un nombre de host de un sitio web.