Referencia de atributos para las condiciones de IAM

En este documento, se describen los atributos admitidos en una expresión de condición.

Atributos de condición compatibles

En las siguientes secciones, se resumen los atributos admitidos y se indica qué servicios de Google Cloud reconocen cada atributo.

Atributos de recursos

Los siguientes atributos se relacionan con el recurso que está sujeto a la solicitud.

Atributo Resumen de uso Servicios de Google Cloud compatibles
Atributo de servicio de recurso

Administra el acceso según el servicio de Google Cloud que se usa.

Puedes usar este atributo en las vinculaciones de roles de la política de permiso.

  • Apigee
  • Application Integration
  • Servicio Backup and DR
  • BigQuery
  • API de BigQuery Reservation
  • Bigtable
  • Autorización binaria
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Conectores de Integration
  • Google Cloud Managed Service para Apache Kafka
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
Atributo de tipo de recurso

Administra el acceso según el tipo de recurso.

Puedes usar este atributo en las vinculaciones de roles de la política de permiso.

  • Apigee
  • Application Integration
  • BigQuery
  • API de BigQuery Reservation
  • Bigtable
  • Autorización binaria
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Conectores de Integration
  • Google Cloud Managed Service para Apache Kafka
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
Atributo de nombre de recurso

Administra el acceso según el nombre del recurso.

Puedes usar este atributo en las vinculaciones de roles de la política de permiso.

  • Apigee
  • Application Integration
  • Servicio Backup and DR
  • BigQuery
  • API de BigQuery Reservation
  • Bigtable
  • Autorización binaria
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Conectores de Integration
  • Google Cloud Managed Service para Apache Kafka
  • Pub/Sub Lite
  • Secret Manager
  • Spanner
Etiquetas de recursos

Administra el acceso en función de las etiquetas adjuntas al recurso.

Puedes usar este atributo en los siguientes lugares:

  • Permite vinculaciones de roles de políticas
  • Reglas de denegación de la política de denegación
Todos los servicios de Google Cloud (consulta la Asistencia para condiciones heredadas)

Para obtener más detalles, consulta los atributos de recursos en esta página.

Atributos principales

Los siguientes atributos se relacionan con el principal que hace la solicitud.

Atributo Resumen de uso Tipos de principales admitidos

Atributo de tipo principal

Aplica políticas según el tipo de principal en la solicitud.

Puedes usar este atributo en las vinculaciones de políticas para las políticas de límite de acceso de las principales.

  • Cuentas de Google
  • Identidades del grupo de identidades del personal
  • Identidades del grupo de identidades para cargas de trabajo
  • Cuentas de servicio

Atributo del tema principal

Aplica políticas según la identidad del principal en la solicitud.

Puedes usar este atributo en las vinculaciones de políticas para las políticas de límite de acceso de las principales.

  • Cuentas de Google
  • Identidades del grupo de identidades del personal
  • Identidades del grupo de identidades para cargas de trabajo
  • Cuentas de servicio

Para obtener más detalles sobre los atributos principales, consulta Atributos principales en esta página.

Atributos de solicitud

Los siguientes atributos se relacionan con los detalles de la solicitud.

Atributo Resumen de uso Servicios de Google Cloud compatibles

Atributo de niveles de acceso

Administra el acceso en función de los 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 y la hora del día. Por ejemplo, un nivel de acceso onNetwork puede requerir que el dispositivo que realiza la solicitud se origine en un rango de direcciones IP en particular. Los administradores de la organización definen los niveles de acceso.

Puedes usar este atributo en las vinculaciones de roles de la política de permiso.

Identity-Aware Proxy

Atributos de API

Administra el acceso según los datos proporcionados por un servicio o una API de Google Cloud específicos.

Puedes usar este atributo en las vinculaciones de roles de la política de permiso.

  • Identity and Access Management
  • API Gateway
  • AutoML
  • Certificate Authority Service
  • Funciones de Cloud Run
  • API de Cloud Healthcare
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • API de Cloud Runtime Configuration
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Servicio administrado para Microsoft Active Directory
  • Notebooks administrados por el usuario
  • Resource Manager
  • Secret Manager
  • Administración de servicio

Atributos de fecha y hora

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

Puedes usar estos atributos en las vinculaciones de roles de la política de permiso.

Todos los servicios de Google Cloud (consulta la Asistencia para condiciones heredadas)

Atributos de puerto o IP de destino

Administra el acceso en función de la dirección IP o el puerto de destino de una solicitud. 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 exponerse solo para uso administrativo.

Se usa para el reenvío de TCP de Identity-Aware Proxy.

Puedes usar estos atributos en las vinculaciones de roles de la política de permiso.

Identity-Aware Proxy

Atributos de reglas de reenvío

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

Puedes usar estos atributos en las vinculaciones de roles de la política de permiso.

Atributos de host y ruta de URL

Administra el acceso en función del host o la ruta de URL de una solicitud. Por ejemplo, una condición podría especificar que https://example.com es la aplicación principal a la que puede acceder un dominio general de usuarios, mientras que https://hr.example.com/admin se usa para acceder a una página de la aplicación a la que solo los administradores de recursos humanos tienen acceso.

Puedes usar estos atributos en las vinculaciones de roles de la política de permiso.

  • Identity-Aware Proxy
  • Cloud Run

Para obtener más detalles, consulta los atributos de solicitud en esta página.

Compatibilidad para condiciones heredadas

Algunos tipos de recursos de Google Cloud no admiten condiciones en sus políticas de permisos. Sin embargo, puedes agregar vinculaciones de roles condicionales a nivel de organización, de carpeta o de proyecto. Otros recursos heredarán esas vinculaciones de roles mediante la jerarquía de recursos. Para ver más detalles, consulta Tipos de recursos que aceptan vinculaciones de funciones condicionales.

Cuando uses atributos a nivel de la organización, la carpeta o el proyecto, recuerda que la mayoría de los atributos solo están disponibles para tipos de recursos específicos. Si una parte de una condición usa un atributo que no está disponible, esa parte de la condición nunca se interpreta como otorgar acceso. Por ejemplo, la condición destination.port == 21 nunca otorgará acceso a ningún recurso de BigQuery, ya que los recursos de BigQuery no proporcionan los atributos de puerto/IP de destino.

Para evitar este problema, usa los atributos tipo de recurso y el servicio de recursos descritos en esta página a fin de limitar el permiso de la condición. Por ejemplo, la siguiente condición se evalúa como true para todos los tipos de recursos que no sean instancias de túnel de Identity-Aware Proxy. En cambio, para las instancias de túnel de Identity-Aware Proxy, la condición verifica el puerto de destino:

resource.type != 'iap.googleapis.com/TunnelInstance' ||
    destination.port == 21

No necesitas limitar el alcance de las condiciones que comprueban las etiquetas adjuntas a un recurso. Cuando una condición verifica las claves y los valores de la etiqueta, no puede verificar ningún otro atributo, incluido el tipo de recurso y el servicio de recursos.

Atributos de recursos

Por lo general, el servicio y el tipo de recurso, así como los atributos de nombre del recurso se usan para cambiar el permiso de una concesión de acceso que proporciona la vinculación de la función. Cuando una función contiene permisos que se aplican a diferentes atributos específicos de recursos, se pueden usar condiciones basadas en el recurso con el fin de otorgar un subconjunto de permisos de la función a tipos o servicios específicos.

Atributo resource.service

El atributo resource.service te permite establecer una condición basada en el servicio de Google Cloud que se usa. Por ejemplo, puedes configurar una condición que limite el acceso de un usuario a los recursos que usan el servicio cloudresourcemanager.googleapis.com. Para obtener una lista de valores admitidos, consulta Valores de servicios de recursos.

Puedes usar el atributo resource.service en las vinculaciones de roles de la política de permiso.

Variable del atributo resource.service
Tipo de atributo

string

Para obtener una lista de valores admitidos, consulta Valores de servicios de recursos.

Operadores admitidos ,
Detalles Cuando uses el atributo resource.type en las condiciones, verifica la igualdad exacta () o la desigualdad exacta () con el atributo. Otras comparaciones, como la verificación de un prefijo o sufijo, pueden brindarte resultados inesperados.
Ejemplo

Muestra true para los recursos de Compute Engine:

resource.service == "compute.googleapis.com"
Servicios compatibles
  • Apigee
  • Application Integration
  • Servicio Backup and DR
  • BigQuery
  • API de BigQuery Reservation
  • Bigtable
  • Autorización binaria
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Conectores de Integration
  • Google Cloud Managed Service para Apache Kafka
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner

Atributo resource.type

El atributo resource.type te permite establecer una condición basada en el tipo de recurso. Por ejemplo, puedes configurar una condición que limite el acceso de un usuario a los recursos de tipo storage.googleapis.com/Object. Para obtener una lista de valores admitidos, consulta Valores de tipos de recursos.

Si tu condición usa el atributo resource.name, te recomendamos que uses el atributo resource.type para controlar a qué tipos de recursos se aplicará la condición. Para obtener más información, consulta el atributo resource.name en esta página.

Puedes usar el atributo resource.type en las vinculaciones de roles de la política de permiso.

Variable del atributo resource.type
Tipo de atributo

string

Para obtener una lista de valores admitidos, consulta Valores de tipos de recursos.

Operadores admitidos ,
Detalles Cuando uses el atributo resource.type en las condiciones, verifica la igualdad exacta () o la desigualdad exacta () con el atributo. Otras comparaciones, como la verificación de un prefijo o sufijo, pueden brindarte resultados inesperados.
Ejemplos

Muestra true, a menos que el recurso sea una imagen de Compute Engine:

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

Muestra true solo si el recurso es una imagen de Compute Engine o un disco persistente:

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
Tipos de recursos admitidos
Apigee
  • Atributos de producto de API
  • Productos de API
  • Proxies de API
  • Entradas de mapa clave-valor del proxy de API
  • Mapas clave-valor del proxy de API
  • Revisiones del proxy de API
  • Caché
  • Atributos de la app para desarrolladores
  • Apps de desarrolladores
  • Atributos de desarrollador
  • Desarrolladores
  • Entradas de mapa clave-valor del entorno
  • Mapas clave-valor del entorno
  • Exportaciones
  • Hooks de flujo
  • Alias del almacén de claves
  • Almacén de claves
  • Consultas
  • Planes de tarifas
  • Referencias
  • Revisiones de flujo compartido
  • Flujos compartidos
  • Servidores de destino
  • Sesiones de seguimiento o depuración
Servicio de copia de seguridad y DR
  • Backup vaults
BigQuery
  • Conjuntos de datos
  • Modelos
  • Rutinas
  • Tablas
API de BigQuery Reservation
  • Tareas
  • Reservas de IE
  • Compromisos de capacidad
  • Ubicaciones
  • Reservas
Application Integration
  • Parámetros de configuración de autenticación
  • Ejecuciones
  • Versiones de integraciones
  • Integraciones
  • Ubicaciones
  • Suspensiones
Autorización binaria
  • Certificadores
  • Configuraciones de validación continua
  • Políticas
Bigtable
  • Clústeres
  • Instancias
  • Tablas
Cloud Key Management Service
  • Versiones de claves criptográficas
  • Claves criptográficas
  • Llaveros de claves
Cloud Logging
  • Buckets de registros
  • Vistas de registro
Spanner
  • Copias de seguridad
  • Bases de datos
  • Instancias
Cloud SQL
  • Ejecuciones de copias de seguridad
  • Instancias
Cloud Storage
  • Depósitos
  • Carpetas administradas
  • Objetos
Compute Engine
  • Servicios de backend (globales y regionales)
  • Firewalls
  • Reglas de reenvío (globales y regionales)
  • Imágenes
  • Plantillas de instancia
  • Instancias
  • Discos persistentes (regionales y zonales)
  • Instantáneas
  • Proxies HTTP(S) de destino (globales y regionales)
  • Proxies SSL de destino
  • Proxies TCP de destino
Dataform
  • Resultados de la compilación
  • Ubicaciones
  • Parámetros de configuración del lanzamiento
  • Repositorios
  • Parámetros de configuración del flujo de trabajo
  • Invocaciones de flujos de trabajo
  • Lugares de trabajo
Google Cloud
  • Ubicaciones1
Google Kubernetes Engine
  • Clústeres
Firestore
  • Bases de datos
Identity-Aware Proxy
  • Todos los servicios de backend y todas las aplicaciones de App Engine
  • Todos los recursos de túnel
  • Todas las zonas de túnel
  • Todos los servicios web
  • Versiones del servicio de app de App Engine
  • Servicios de app de App Engine
  • Servicios de backend de Compute Engine
  • Instancias de túneles
Integration Connectors
  • Conexiones
  • Metadatos del esquema de conexión
  • Adjuntos de extremos
  • Suscripciones a los eventos
  • Zonas administradas
Google Cloud Managed Service para Apache Kafka
  • Clústeres
  • Grupos de consumidores
  • Operaciones
  • Temas
Pub/Sub Lite
  • Ubicaciones
  • Suscripciones
  • Temas
Resource Manager
  • Proyectos
Secret Manager
  • Versiones de secretos
  • Secrets

1 Cloud Key Management Service usa este tipo de recurso como superior de los recursos de llavero de claves.

Atributo resource.name

El atributo resource.name te permite establecer una condición basada en todo el nombre de un recurso o en una parte de él. Para obtener una lista de los formatos de nombre del recurso, consulta Formato de nombre del recurso.

El atributo resource.name solo está disponible para tipos de recursos específicos que se enumeran en la tabla de esta sección. Recomendamos que limites la aplicabilidad de la condición al tipo de recurso deseado. Si una rol contiene permisos para un tipo de recurso que no proporciona el atributo resource.name, debes asegurarte de que esos permisos no estén restringidos por la parte de la condición que comprueba resource.name.

En el siguiente ejemplo, se muestra cómo garantizar este comportamiento. En este ejemplo, la condición permite el acceso a todos los tipos de recursos, excepto los buckets y objetos de Cloud Storage. Por el contrario, para los buckets y los objetos, la condición solo permite el acceso al bucket example-bucket y a los objetos que contienen lo siguiente:

(resource.type != 'storage.googleapis.com/Bucket' &&
 resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')

Ten en cuenta que la primera parte de la condición verifica que el recurso no sea ni un bucket ni un objeto. Si el recurso tiene un tipo diferente, la condición completa se evalúa como true, sin importar el nombre del recurso.

Además, ten en cuenta que la condición verifica el atributo resource.type, no el atributo resource.service. Estos son los beneficios de verificar el atributo resource.type:

  • Limita la verificación de resource.name al conjunto de recursos adecuado. Por ejemplo, si deseas otorgar acceso a las instancias de Compute Engine con un nombre específico, tiene sentido excluir todos los tipos de recursos que no sean instancias de Compute Engine.
  • Impide que el permiso de la condición cambie si un servicio agrega nuevos tipos de recursos en el futuro.

Por último, ten en cuenta que la condición usa la función startsWith() para evaluar el nombre del recurso, en lugar de verificar la igualdad con el operador . Debido a que la condición analiza el inicio del nombre del recurso, coincide con un bucket y con los objetos en ese bucket. Si se verifica la igualdad, solo coincide con el bucket.

No puedes usar caracteres comodín como * para hacer coincidir varios nombres de recursos. Considera las siguientes alternativas:

  • Usa la función extract() para extraer un valor de un nombre de recurso. Por ejemplo, puedes extraer un ID del proyecto del nombre de recurso de una instancia de VM de Compute Engine y, luego, escribir una expresión de condición que haga referencia al ID del proyecto.

    Para obtener más información, consulta Extrae valores de atributos en esta página.

  • Usa la función startsWith() o endsWith() para escribir una condición que evalúe el inicio o el final del nombre del recurso.

Puedes usar el atributo resource.name en las vinculaciones de roles de la política de permiso.

Variable del atributo resource.name
Tipo de atributo

string

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

Operadores y funciones compatibles startsWith(), endsWith(), extract(), ,
Detalles

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

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

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

La función extract() usa una plantilla de extracción para extraer una parte de resource.name. Para obtener detalles consulta la sección Extraer valores de nombres de recursos de esta página.

Los operadores  y  se usan para la comparación con la totalidad de resource.name o con una parte extraída de resource.name.

Ejemplos

Muestra true, a menos que el nombre del recurso identifique un bucket de Cloud Storage llamado secret-bucket-123:

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

Muestra true si el nombre del recurso comienza con el prefijo especificado, en el formato que usan las instancias de VM de Compute Engine:

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

Muestra true si el nombre del recurso comienza con el prefijo especificado, en el formato que usan los buckets de Cloud Storage:

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

Muestra true si el nombre del recurso termina con el sufijo especificado, por ejemplo, la extensión de archivo de un objeto de Cloud Storage:

resource.name.endsWith(".jpg")

Muestra el nombre o el número del proyecto si está presente:

resource.name.extract("projects/{project}/")
Tipos de recursos admitidos
Apigee
  • Atributos de producto de API
  • Productos de API
  • Proxies de API
  • Entradas de mapa clave-valor del proxy de API
  • Mapas clave-valor del proxy de API
  • Revisiones del proxy de API
  • Caché
  • Atributos de la app para desarrolladores
  • Apps de desarrolladores
  • Atributos de desarrollador
  • Desarrolladores
  • Entradas de mapa clave-valor del entorno
  • Mapas clave-valor del entorno
  • Exportaciones
  • Hooks de flujo
  • Alias del almacén de claves
  • Almacén de claves
  • Consultas
  • Planes de tarifas
  • Referencias
  • Revisiones de flujo compartido
  • Flujos compartidos
  • Servidores de destino
  • Sesiones de seguimiento o depuración
Servicio de copia de seguridad y DR
  • Backup vaults
BigQuery
  • Conjuntos de datos
  • Modelos
  • Rutinas
  • Tablas
API de BigQuery Reservation
  • Tareas
  • Reservas de IE
  • Compromisos de capacidad
  • Ubicaciones
  • Reservas
Application Integration
  • Parámetros de configuración de autenticación
  • Ejecuciones
  • Versiones de integraciones
  • Integraciones
  • Ubicaciones
  • Suspensiones
Autorización binaria
  • Certificadores
  • Configuraciones de validación continua
  • Políticas
Bigtable
  • Clústeres
  • Instancias
  • Tablas
Cloud Deploy
  • Ejecuciones de automatización
  • Automatizaciones
  • Tipos de destinos personalizados
  • Canalizaciones de entrega
  • Ejecuciones del trabajo
  • Lanzamientos
  • Lanzamientos
  • Destinos
Cloud Key Management Service
  • Claves criptográficas
  • Versiones de claves criptográficas
  • Llaveros de claves
Cloud Logging
  • Buckets de registros
  • Vistas de registro
Spanner
  • Copias de seguridad
  • Bases de datos
  • Instancias
Cloud SQL
  • Ejecuciones de copias de seguridad
  • Instancias
Cloud Storage
  • Depósitos
  • Carpetas administradas
  • Objetos
Compute Engine
  • Servicios de backend (globales y regionales)
  • Firewalls
  • Reglas de reenvío (globales y regionales)
  • Imágenes
  • Plantillas de instancia
  • Instancias
  • Discos persistentes (regionales y zonales)
  • Instantáneas
  • Proxies HTTP(S) de destino (globales y regionales)
  • Proxies SSL de destino
  • Proxies TCP de destino
Google Kubernetes Engine
  • Clústeres
Firestore
  • Bases de datos
Dataform
  • Resultados de la compilación
  • Ubicaciones
  • Parámetros de configuración del lanzamiento
  • Repositorios
  • Parámetros de configuración del flujo de trabajo
  • Invocaciones de flujos de trabajo
  • Lugares de trabajo
Integration Connectors
  • Conexiones
  • Metadatos del esquema de conexión
  • Adjuntos de extremos
  • Suscripciones a los eventos
  • Zonas administradas
Google Cloud Managed Service para Apache Kafka
  • Clústeres
  • Grupos de consumidores
  • Operaciones
  • Temas
Pub/Sub Lite
  • Ubicaciones
  • Suscripciones
  • Temas
Secret Manager
  • Versiones de secretos
  • Secrets

Etiquetas de recursos

Las funciones para etiquetas de recursos te permiten establecer una condición basada en las etiquetas adjuntas a un recurso o que el recurso hereda. Por ejemplo, puedes configurar una condición que otorgue una función solo para los recursos que tienen la etiqueta env: prod adjunta. Para obtener más información sobre cómo controlar el acceso con etiquetas, consulta Etiquetas y control de acceso.

Cada etiqueta está compuesta por una clave y un valor. Existen algunos tipos de identificadores diferentes para cada clave y valor:

  • Un ID permanente, que es único de forma global y no se puede reutilizar. Por ejemplo, una clave de etiqueta podría tener el ID permanente tagKeys/123456789012 y un valor de etiqueta podría tener el ID permanente tagValues/567890123456.
  • Un nombre corto. El nombre corto de cada clave debe ser único dentro del proyecto o la organización en la que se define la clave, y el nombre corto de cada valor debe ser único para su clave asociada. Por ejemplo, una clave de etiqueta podría tener el nombre corto env, y un valor de etiqueta podría tener el nombre corto prod.
  • Un nombre con espacio de nombres, que agrega el ID numérico de tu organización o el ID del proyecto al nombre corto de una clave de etiqueta. Por ejemplo, una clave de etiqueta creada para una organización podría tener el nombre con espacio de nombres 123456789012/env. Para obtener información sobre cómo obtener el ID de tu organización, consulta Obtén el ID de tu recurso de organización. Una clave de etiqueta creada para un proyecto podría tener el nombre con espacio de nombres myproject/env. Para obtener información sobre cómo obtener el ID de tu proyecto, consulta Identifica proyectos.

Para obtener orientación sobre cómo elegir qué tipo de identificador usar en tus condiciones, consulta Identificadores y definiciones de etiquetas.

Puedes usar condiciones basadas en etiquetas para condicionar el acceso a cualquier recurso. Esto incluye recursos con sus propias etiquetas, así como recursos que heredan etiquetas de otros recursos. Para obtener más información sobre cómo se heredan las etiquetas con la jerarquía de recursos, consulta Herencia de etiquetas.

Puedes usar condiciones basadas en etiquetas en los siguientes casos:

  • Permite vinculaciones de roles de políticas
  • Reglas de denegación de la política de denegación

Puedes usar las siguientes funciones para establecer condiciones basadas en etiquetas:

Función Descripción
resource.hasTagKey(
  keyName: string
)
  bool

Verifica si el recurso para la solicitud tiene una etiqueta con la clave especificada. La clave de etiqueta se busca por su nombre con espacio de nombres. Para verificar una clave de etiqueta con su ID permanente, usa la función resource.hasTagKeyId().

Parámetro
keyName: El nombre con espacio de nombres de la clave de etiqueta, con el ID numérico de la organización y una barra diagonal como prefijo. Por ejemplo, 123456789012/env.
Ejemplo

Muestra true si el recurso de la solicitud tiene una etiqueta con la clave env:

resource.hasTagKey('123456789012/env')
resource.hasTagKeyId(
  keyId: string
)
  bool

Verifica si el recurso para la solicitud tiene una etiqueta con la clave especificada. La clave de etiqueta se busca por su ID permanente. Para verificar una clave de etiqueta con su nombre de espacio de nombres, usa la función resource.hasTagKey().

Parámetro
keyId: Es el ID permanente para la clave de la etiqueta. Por ejemplo, tagKeys/123456789012.
Ejemplo

Muestra true si el recurso de la solicitud tiene una etiqueta con la clave tagKeys/123456789012:

resource.hasTagKeyId('tagKeys/123456789012')
resource.matchTag(
  keyName: string,
  valueShortName: string
)
  bool

Verifica si el recurso para la solicitud tiene una etiqueta con la clave y el valor especificados. La clave se busca por su nombre con espacio de nombres, y el valor se busca por su nombre corto. Para verificar una clave y un valor de etiqueta con sus ID permanentes, usa la función resource.matchTagId().

Parámetros
  • keyName: El nombre con espacio de nombres de la clave de etiqueta, con el ID numérico de la organización y una barra diagonal como prefijo. Por ejemplo, 123456789012/env
  • valueShortName: El nombre corto del valor de la etiqueta. Por ejemplo, prod
Ejemplo

Muestra true si el recurso de la solicitud tiene una etiqueta con la clave 123456789012/env y el valor prod:

resource.matchTag('123456789012/env', 'prod')
resource.matchTagId(
  keyId: string,
  valueId: string
)
  bool

Verifica si el recurso para la solicitud tiene una etiqueta con la clave y el valor especificados. La clave y el valor se buscan por sus ID permanentes. Para verificar una clave de etiqueta con su nombre de espacio de nombres y un valor con su nombre corto, usa la función resource.matchTag().

Parámetros
  • keyId: El ID permanente para la clave de la etiqueta. Por ejemplo, tagKeys/123456789012.
  • valueId: El ID permanente para el valor de la etiqueta. Por ejemplo, tagValues/567890123456.
Ejemplo

Muestra true si el recurso de la solicitud tiene una etiqueta con la clave tagKeys/123456789012 y el valor tagValues/567890123456:

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

Atributos principales

Los atributos principales te permiten escribir condiciones en función del principal que emitió la solicitud. Con estos atributos, puedes definir mejor los principales para los que se aplica una política.

Puedes usar atributos principales en las vinculaciones de políticas para las políticas de límite de acceso de las principales.

Atributo principal.type

El atributo principal.type te permite establecer una condición basada en el tipo de principal que emitió la solicitud. Por ejemplo, puedes agregar una condición a una vinculación de políticas para una política de límite de acceso de las principales y garantizar que la política solo se aplique a las cuentas de servicio.

Puedes usar atributos principales en las vinculaciones de políticas para las políticas de límite de acceso de las principales.

Variable del atributo principal.type
Tipo de atributo

string

Operadores admitidos , , in
Tipos de principales admitidos
Cuentas de Google
iam.googleapis.com/WorkspaceIdentity
Identidades del grupo de identidades del personal
iam.googleapis.com/WorkforcePoolIdentity
Identidades del grupo de identidades para cargas de trabajo
iam.googleapis.com/WorkloadPoolIdentity
Cuentas de servicio
iam.googleapis.com/ServiceAccount
Ejemplos

Evalúa como true si el principal de la solicitud es una cuenta de servicio:

principal.type == "iam.googleapis.com/ServiceAccount"
        

Se evalúa como true si el principal de la solicitud es una identidad de Google Workspace o una identidad del grupo de identidades de trabajadores:

principal.type in ["iam.googleapis.com/WorkspaceIdentity", "iam.googleapis.com/WorkforcePoolIdentity"]
        

Atributo principal.subject

El atributo principal.subject te permite establecer una condición basada en el principal que emitió la solicitud. Por ejemplo, puedes agregar una condición a una vinculación de políticas para una política de límite de acceso de las principales y asegurarte de que la política solo se aplique a las principales cuyas direcciones de correo electrónico terminen en @example.com.

Si usas el atributo principal.subject en una condición, te recomendamos que también uses el atributo principal.type para controlar a qué tipos de principales se aplica la condición. Esto se debe a que los identificadores principales no siempre son únicos entre los tipos principales. Por ejemplo, el identificador example-user@example.com podría identificar una Cuenta de Google o un usuario en un grupo de identidades del personal.

El uso del atributo principal.type, además del atributo principal.subject, puede garantizar que la condición solo coincida con los principales con el tipo previsto. Por ejemplo, la siguiente expresión coincide con las Cuentas de Google cuyas direcciones de correo electrónico terminan en @example.com:

principal.type == 'iam.googleapis.com/WorkspaceIdentity' &&
principal.subject.endsWith('@example.com')

Puedes usar atributos principales en las vinculaciones de políticas para las políticas de límite de acceso de las principales.

Variable del atributo principal.subject
Tipo de atributo

string

Operadores admitidos

, , in, startsWith(), endsWith()

Sujetos principales admitidos
Cuentas de Google
Identificador: dirección de correo electrónico del usuario
Identidades del grupo de identidades del personal
Identificador: valor del atributo del sujeto de la identidad
Identidades del grupo de identidades para cargas de trabajo
Identificador: valor del atributo del sujeto de la identidad
Cuentas de servicio
Identificador: dirección de correo electrónico de la cuenta de servicio
Ejemplo

Se evalúa como true si el principal de la solicitud termina con @example.com:

principal.subject.endsWith("@example.com")
        

Se evalúa como true si el principal de la solicitud es example-service-account@example-project.iam.gserviceaccount.com:

principal.subject == "example-service-account@example-project.iam.gserviceaccount.com"
        

Atributos de solicitud

Los atributos de solicitud te permiten crear condiciones que evalúan detalles sobre la solicitud, como su nivel de acceso, su fecha y hora, la dirección IP y el puerto de destino (para la tunelización TCP de IAP) o el host o ruta de URL esperados (para IAP y Cloud Run).

Atributo de niveles de acceso

El atributo de niveles de acceso permite a los usuarios establecer una condición que requiera que una solicitud cumpla con uno o más niveles de acceso para que se la autorice. Puedes usar el atributo de niveles de acceso en las vinculaciones de roles de la política de permisos.

El atributo de niveles de acceso se deriva de los atributos de la solicitud, como la dirección IP de origen, los atributos del dispositivo y la hora del día. Por ejemplo, un nivel de acceso llamado fullyTrusted podría requerir que el dispositivo que realice la solicitud sea propiedad de la empresa y tenga un bloqueo de pantalla. Un nivel de acceso onNetwork podría requerir que el dispositivo que realice la solicitud se origine en un rango de direcciones IP en particular. Consulta la documentación de Access Context Manager para obtener más información sobre los niveles de acceso.

El atributo de niveles de acceso solo está disponible cuando usas Identity-Aware Proxy para acceder a una instancia de túnel o a una aplicación web que se ejecuta en servicios de backend de App Engine o Compute Engine. Más específicamente, el atributo de niveles de acceso solo está disponible para las solicitudes que verifican uno de estos permisos:

  • iap.tunnelInstances.accessViaIAP
  • iap.webServiceVersions.accessViaIAP

Puedes usar el atributo de niveles de acceso cuando otorgues de forma condicional las siguientes funciones predefinidas:

  • Usuario de túnel protegido con IAP (roles/iap.tunnelResourceAccessor)

    Contiene un solo permiso, iap.tunnelInstances.accessViaIAP.

  • Usuario de aplicación web protegida con IAP (roles/iap.httpsResourceAccessor)

    Contiene un solo permiso, iap.webServiceVersions.accessViaIAP.

También puedes usar el atributo de niveles de acceso para otorgar condicionalmente una función personalizada que contenga estos permisos. La función personalizada no debe contener otros permisos.

Atributo request.auth.access_levels

Variable del atributo request.auth.access_levels
Tipo de atributo list<string>
Operadores admitidos in
Detalles

Para verificar si una solicitud cumple con un nivel de acceso específico, usa el operador in:

ACCESS_LEVEL_FULL_NAME in request.auth.access_levels

El nombre completo de un nivel de acceso usa el siguiente formato:

accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL
Ejemplo

Muestra true si la solicitud cumple con el nivel de acceso CorpNet:

"accessPolicies/199923665455/accessLevels/CorpNet"
    in request.auth.access_levels
Tipos de recursos admitidos Disponible para las solicitudes que usan Identity-Aware Proxy a fin de acceder a una instancia de túnel, un grupo de destino de túnel, una aplicación web que se ejecuta en Google Cloud Load Balancing o una aplicación web que se ejecuta en App Engine.

Atributos de API

Los atributos de API te ayudan a administrar el acceso según los datos proporcionados por una API o un servicio de Google Cloud en particular. Puedes usar atributos de API en las vinculaciones de roles de la política de permiso.

Por ejemplo, cuando usas Cloud Storage para enumerar los objetos en un bucket, puedes usar el parámetro prefix en la solicitud a fin de incluir solo los objetos cuyos nombres comienzan con un prefijo específico. Si usas límites de acceso a las credenciales a fin de restringir los permisos a las credenciales de corta duración, puedes crear un límite de acceso a las credenciales que limite los permisos para enumerar objetos mediante la verificación del atributo storage.googleapis.com/objectListPrefix de la API. Este atributo de la API contiene el valor del parámetro prefix de la solicitud.

Para ver ejemplos de cuándo es posible que necesites usar atributos de API en una condición, consulta las siguientes páginas:

No todos los servicios reconocen los atributos de API. En las siguientes secciones, se indica qué servicios reconocen cada atributo de la API.

Funciones para atributos de API

Puedes usar la siguiente función para trabajar con atributos de API:

Función Descripción
api.getAttribute(
  attributeName: string,
  defaultValue: V<T>
)
  V<T>

Obtiene el atributo de API solicitado.

Parámetros
  • attributeName: Es el atributo de la API que se debe obtener. Para obtener los valores compatibles, consulta los atributos de API de Cloud Storage y los atributos de API de IAM en esta página.
  • defaultValue: El valor predeterminado (V) que se usará si el atributo de la API no está disponible. El valor V es de tipo T, en el que T es el mismo tipo que el valor del atributo de la API. Por ejemplo, si el valor del atributo de la API es una string, puedes usar una string vacía o una string de marcador de posición como undefined.

Ejemplo

Muestra uno de los siguientes valores:

  • Para las solicitudes de enumeración de objetos en un bucket de Cloud Storage, si la solicitud incluye el parámetro prefix, la función muestra su valor.
  • Para las solicitudes en las que se enumeran objetos que omiten el parámetro prefix y, en todos los demás tipos de solicitudes, la función muestra una string vacía.
api.getAttribute("storage.googleapis.com/objectListPrefix", "")
hasOnly(
  items: list<T>
)
  bool

Comprueba que una lista contenga solo los elementos permitidos o un subconjunto de esos elementos. Llama a la función en una lista que muestra api.getAttribute().

Parámetro
items: Una lista de elementos con el tipo T. Cada elemento es un valor que el atributo de API puede contener.
Ejemplo

Verifica si la solicitud otorgaría o revocaría roles que no sean de Editor de Pub/Sub (roles/pubsub.editor) o Publicador de Pub/Sub (roles/pubsub.publisher):

api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

A continuación, se muestra el resultado de diferentes valores de solicitud:

Funciones otorgadas o revocadas Resultado
Ninguna

true

Si no se modifican roles, api.getAttribute() muestra el valor predeterminado. Para este atributo, el valor predeterminado es siempre una lista vacía. Por definición, una lista vacía no contiene valores que no estén en la lista de entidades permitidas.

roles/pubsub.editor

true

La función se encuentra en la lista de entidades permitidas.

roles/pubsub.editor
roles/pubsub.publisher

true

Ambas funciones están en la lista de entidades permitidas.

roles/billing.admin

false

La función no se encuentra en la lista de entidades permitidas.

roles/billing.admin
roles/pubsub.editor

false

Una función está en la lista de entidades permitidas, pero la otra no.

Atributos de API de Cloud Storage

Cloud Storage proporciona el siguiente atributo de API.

Variable del atributo storage.googleapis.com/objectListPrefix
Tipo de atributo string
Detalles

En el caso de una solicitud de creación de una lista de objetos en un bucket, contiene el valor del parámetro prefix de la solicitud. Si la solicitud omite el parámetro prefix, el atributo no se define.

Para otros tipos de solicitudes, el atributo no se define.

Servicios que reconocen este atributo Cloud Storage

Atributos de la API de IAM

IAM proporciona el siguiente atributo de API:

Variable del atributo iam.googleapis.com/modifiedGrantsByRole
Tipo de atributo list<string>
Detalles

Para una solicitud a fin de establecer la política de permisos de un recurso, este atributo contiene los nombres de los roles de las vinculaciones de roles que la solicitud modifica.

Para otros tipos de solicitudes, el atributo no se define.

Tipos de recursos que aceptan este atributo

Los siguientes tipos de recursos aceptan condiciones con el atributo modifiedGrantsByRole en sus políticas de permisos:

  • Proyectos
  • Carpetas
  • Organizaciones
Servicios que reconocen este atributo

Los siguientes servicios reconocen el atributo modifiedGrantsByRole:

  • API Gateway
  • AutoML
  • Certificate Authority Service
  • Funciones de Cloud Run
  • API de Cloud Healthcare
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • API de Cloud Runtime Configuration
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Servicio administrado para Microsoft Active Directory
  • Notebooks administrados por el usuario
  • Resource Manager
  • Secret Manager
  • Administración de servicio

Atributo de fecha y hora

El atributo de fecha y hora se usa para configurar el acceso programado, con vencimiento o de duración limitada en los recursos de Google Cloud. Puedes usar atributos de fecha y hora en las vinculaciones de roles de la política de permisos.

Este atributo es compatible para todos los servicios y tipos de recursos de Google Cloud. A fin de obtener información sobre cómo aplicar condiciones de fecha y hora a los recursos que no las admiten directamente, consulta Compatibilidad para condiciones heredadas en esta página.

El atributo request.time contiene la marca de tiempo de la solicitud. Puedes comparar esta marca de tiempo con otra marca de tiempo o con un período.

En las siguientes secciones, se enumeran las funciones que puedes usar para establecer condiciones basadas en marcas de tiempo y duraciones.

Crea, compara y modifica marcas de tiempo y duraciones

Función u operador Descripción
date(
  value: string
)
  Timestamp

Convierte una fecha de una string en una Timestamp.

Parámetro
value: Una fecha en el formato YYYY-MM-DD, en el que YYYY es el año, MM es el mes en dos dígitos y DD es el día en dos dígitos. La Timestamp resultante contiene la fecha especificada y la hora 00:00:00.000 UTC.
Ejemplo

Crea una Timestamp que represente la fecha 2023-02-01 y la hora 00:00:00.000 UTC:

date("2023-02-01")
duration(
  value: string
)
  Duration

Convierte una cantidad de tiempo de una string a una Duration.

Parámetro
value: Una Duration en segundos, seguida de s.
Ejemplos

Crea una duración que representa 1.5 minutos:

duration("90s")

Crea una duración que representa 30 días:

duration("2592000s")
timestamp(
  value: string
)
  Timestamp

Convierte una string en una Timestamp.

Parámetro

value: Una marca de tiempo UTC que cumple con RFC 3339.

Ejemplo

Crea una marca de tiempo que representa el 12 de abril de 2023 a las 23:20:50.52 en UTC:

timestamp("2023-04-12T23:20:50.52Z")
, , ,

Compara dos valores Timestamp.

Ejemplos

Muestra true si la hora de la solicitud es antes del 12 de abril de 2022 a las 00:00:00 UTC:

request.time < timestamp("2022-04-12T00:00:00.00Z")

Muestra true si la hora de la solicitud es antes o el mismo 12 de abril de 2022 a las 00:00:00 UTC:

request.time <= timestamp("2022-04-12T00:00:00.00Z")

Muestra true si la hora de la solicitud es posterior al 12 de abril de 2022 a las 00:00:00 UTC:

request.time > timestamp("2022-04-12T00:00:00.00Z")

Muestra true si la hora de la solicitud es después o el mismo 12 de abril de 2022 a las 00:00:00 UTC:

request.time >= timestamp("2022-04-12T00:00:00.00Z")
  • timestamp + duration   Timestamp
  • timestamp - duration   Timestamp

Suma o resta una Duration de una Timestamp.

Ejemplos

Muestra la Timestamp que cae 30 minutos después de las 14:30:00 UTC del 2024-04-12:

timestamp("2024-04-12T14:30:00.00Z") + duration("1800s")

Muestra la Timestamp que cae 60 días antes de las 14:30:00 UTC del 2024-04-12:

timestamp("2024-04-12T14:30:00.00Z") - duration("5184000s")

Extrae información de una marca de tiempo

Las funciones de esta sección te permiten extraer información de una marca de tiempo, como el día de la semana en el que se encuentra la marca de tiempo.

En las condiciones de IAM, todas las marcas de tiempo están en UTC. Sin embargo, es posible que desees extraer información según una zona horaria diferente. Por ejemplo, es posible que desees saber si una marca de tiempo UTC corresponde a un lunes en la zona horaria de Berlín, Alemania.

Para especificar una zona horaria diferente, pasa la zona horaria a la función. Usa un nombre o una compensación UTC de la base de datos de zonas horarias de IETF. Por ejemplo, puedes usar Europe/Berlin o +01:00 para la hora central europea (CET).

Operadores y funciones compatibles Descripción
Timestamp.getDate(
  timeZone: string
)
  int

Obtiene el día del mes de la Timestamp. El valor usa la indexación basada en uno; el primer día del mes es 1.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
Ejemplo

Muestra true si la solicitud se envía después del día 15 del mes en UTC:

request.time.getDate() > 15
Timestamp.getDayOfMonth(
  timeZone: string
)
  int

Obtiene el día del mes de la Timestamp. El valor usa la indexación basada en cero; el primer día del mes es 0.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
Ejemplo

Muestra true si la solicitud se envía después del día 15 del mes en UTC:

request.time.getDayOfMonth() > 14
Timestamp.getDayOfWeek(
  timeZone: string
)
  int

Obtiene el día de la semana de la Timestamp. El valor usa una indexación basada en cero. Por ejemplo, el domingo es 0.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
Ejemplo

Muestra true si la solicitud se envía entre el lunes y el viernes en Berlín, Alemania:

request.time.getDayOfWeek("Europe/Berlin") > 0 &&
    request.time.getDayOfWeek("Europe/Berlin") < 6
Timestamp.getDayOfYear(
  timeZone: string
)
  int

Obtiene el día del año de la Timestamp. El valor usa la indexación basada en cero; el primer día del año es 0.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
Ejemplo

Muestra true si la solicitud se envía durante los primeros 5 días del año en Mountain View, California:

request.time.getDayOfYear("America/Los_Angeles") >= 0 &&
    request.time.getDayOfYear("America/Los_Angeles") < 5
Timestamp.getFullYear(
  timeZone: string
)
  int

Obtiene el año de la Timestamp.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
Ejemplo

Muestra true si la solicitud se envió durante el año 2023 en Mountain View, California:

request.time.getFullYear("America/Los_Angeles") == 2023

Muestra true si la solicitud se envió durante el año 2022 en UTC:

request.time.getFullYear() == 2022
Timestamp.getHours(
  timeZone: string
)
  int

Obtiene la hora del día de la Timestamp. El valor usa la indexación basada en cero; los valores varían de 0 a 23.

Puedes combinar esta función con getDayofWeek() para otorgar acceso solo durante el horario laboral permitido en tu jurisdicción.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
Ejemplo

Muestra true si la solicitud se envía entre las 9:00 (9:00 a.m.) y las 17:00 (5:00 p.m.) de un día de semana en Berlín, Alemania:

request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
    request.time.getDayOfWeek("Europe/Berlin") <= 5 &&
    request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getHours("Europe/Berlin") <= 17
Timestamp.getMilliseconds(
  timeZone: string
)
  int

Obtiene la cantidad de milisegundos de la Timestamp. El valor usa la indexación basada en cero; los valores varían de 0 a 999.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
Timestamp.getMinutes(
  timeZone: string
)
  int

Obtiene la cantidad de minutos después de la hora de la Timestamp. El valor usa la indexación basada en cero; los valores varían de 0 a 59.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
Ejemplo

Muestra true si la solicitud se envía a las 9:30 (9:30 a.m.) o después de esa hora en Berlín, Alemania:

request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getMinutes("Europe/Berlin") >= 30
Timestamp.getMonth(
  timeZone: string
)
  int

Obtiene el mes del año de la Timestamp. El valor usa la indexación basada en cero; los valores varían de 0 a 11.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
Ejemplo

Muestra true si la solicitud se envía durante el mes de abril en Mountain View, California:

request.time.getMonth("America/Los_Angeles") == 3
Timestamp.getSeconds(
  timeZone: string
)
  int

Obtiene la cantidad de segundos de la Timestamp. El valor usa la indexación basada en cero; los valores varían de 0 a 59.

Parámetro
timeZone: La zona horaria para la que se calcula el resultado. La configuración predeterminada es UTC.
, , ,

Compara el resultado de dos funciones de esta tabla.

Atributos de puerto o IP de destino

El atributo de puerto o IP de destino permite a los usuarios administrar el acceso en función del puerto o la dirección IP de destino interna para una solicitud. Puedes usar atributos de IP o puerto de destino en las vinculaciones de roles de la política de permiso.

Por ejemplo, una instancia de VM de Compute Engine puede mapear la dirección IP externa y el puerto 132.168.42.21:3001 a la dirección IP interna y al puerto 10.0.0.1:2300 para uso general. Por el contrario, la dirección IP interna y el puerto 10.0.0.1:22 solo pueden estar disponibles de forma interna para uso administrativo. Puedes usar los atributos de puerto o IP de destino para otorgar diferentes cantidades de acceso según la dirección IP interna y el puerto.

Para obtener más información sobre el reenvío de TCP, consulta la documentación de Identity-Aware Proxy.

Atributo destination.ip

Variable del atributo destination.ip
Tipo de atributo string
Operadores admitidos ,
Detalles

La variable destination.ip identifica una dirección IP interna en formato IPv4.

Ejemplos

Muestra true si la dirección IP de destino es 10.0.0.1:

destination.ip == "10.0.0.1"

Muestra true, a menos que la dirección IP de destino sea 10.0.0.1:

destination.ip != "10.0.0.1"
Tipos de recursos admitidos Disponible para las solicitudes que usan Identity-Aware Proxy a fin de acceder a una instancia de túnel

Atributo destination.port

Variable del atributo destination.port
Tipo de atributo int
Operadores admitidos , , , , ,
Detalles

La variable destination.port identifica un número de puerto TCP interno.

Ejemplos

Devuelve true si el puerto de destino es 21:

destination.port == 21

Devuelve true si el puerto de destino es menor que 3001:

destination.port < 3001
Tipos de recursos admitidos Disponible para las solicitudes que usan Identity-Aware Proxy a fin de acceder a una instancia de túnel

Atributos de reglas de reenvío

Los atributos de reglas de reenvío te permiten especificar los tipos de reglas de reenvío que puede crear una principal. Por ejemplo, puedes permitir que una principal cree reglas de reenvío para balanceadores de cargas de Google Cloud internos, que controlan el tráfico originado dentro de una red de Google Cloud, pero no para balanceadores de cargas de Google Cloud externos, que controlan el tráfico originado en Internet. Puedes usar atributos de reglas de reenvío en vinculaciones de roles de políticas de permisos.

En Cloud Load Balancing, los atributos de reglas 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.

Funciones compatibles

Función Descripción
compute.isForwardingRuleCreationOperation()   bool

Comprueba si la solicitud crea una regla de reenvío.

Ejemplo
Consulta el ejemplo de compute.matchLoadBalancingSchemes().
compute.matchLoadBalancingSchemes(
  schemes: list<string>
)
  bool

Comprueba si la solicitud afecta uno de los tipos especificados del esquema de balanceo de cargas. Para encontrar el identificador de cada esquema de balanceo de cargas y más detalles, consulta Usa condiciones de IAM en balanceadores de carga de Google Cloud.

Parámetro
schemes: Los esquemas de balanceo de cargas que la solicitud puede afectar.
Ejemplo

Muestra uno de los siguientes valores:

  • Si la solicitud no está creando una regla de reenvío, muestra true.
  • Si la solicitud está creando una regla de reenvío, muestra true solo si la regla de reenvío afecta un esquema de balanceo de cargas INTERNAL, INTERNAL_MANAGED o INTERNAL_SELF_MANAGED.
!compute.isForwardingRuleCreationOperation() || (
  compute.isForwardingRuleCreationOperation() &&
  compute.matchLoadBalancingSchemes([
    'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
  ])
)

Tipos de recursos admitidos

Este atributo está disponible para solicitudes de creación de los siguientes tipos de recursos:

Servicio Tipos de recursos
Cloud Load Balancing Reglas de reenvío
Cloud VPN Reglas de reenvío (globales y regionales)
Compute Engine Reglas de reenvío (para el reenvío de protocolos)
Cloud Service Mesh1 Reglas de reenvío

1 Usa los atributos de recursos para Compute Engine.

Atributo de host o ruta de URL

El atributo de host o ruta de URL permite a los usuarios administrar el acceso en función de la ruta de URL o el host de una solicitud. Por ejemplo, una condición podría especificar que https://example.com es la aplicación principal a la que puede acceder un dominio general de usuarios, mientras que https://hr.example.com/admin se usa para acceder a una página de la aplicación respecto de la cual solo los administradores de recursos humanos tienen el permiso correspondiente.

Puedes usar el atributo de ruta de URL o host en las vinculaciones de roles de la política de permiso.

Atributo request.path

Variable del atributo request.path
Tipo de atributo string
Operadores y funciones compatibles , startsWith(), endsWith()
Detalles No recomendamos usar el operador con este atributo. En lugar de verificar la desigualdad, como en request.path != "/admin", verifica el prefijo del atributo, como en !request.path.startsWith("/admin"). Cuando verificas el prefijo, también proteges las rutas de URL dentro de la jerarquía /admin, como /admin/payroll/.
Ejemplos

Muestra true si la ruta de la solicitud es igual a la ruta de URL especificada:

request.path == "/admin"
request.path == "/admin/payroll"

Muestra true si la ruta de la solicitud comienza con la ruta de URL especificada:

request.path.startsWith("/admin")

Muestra true si la ruta de la solicitud comienza con la ruta de URL especificada:

request.path.endsWith("/payroll.js")
Tipos de recursos admitidos
  • Versiones del servicio de app de Identity-Aware Proxy (App Engine): Disponible para las solicitudes que usan Identity-Aware Proxy como medio de acceso a una aplicación web que se ejecuta en App Engine o Compute Engine
  • Servicios de Cloud Run

Atributo request.host

Variable del atributo request.host
Tipo de atributo string
Operadores y funciones compatibles , endsWith()
Detalles No recomendamos usar la función .startsWith() ni el operador con este atributo. Estas funciones y operadores pueden darte resultados inesperados.
Ejemplos

Muestra true si el nombre de host es igual al valor especificado:

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

Muestra true si el nombre de host termina con el valor especificado:

request.host.endsWith("example.com")
Tipos de recursos admitidos
  • Versiones del servicio de app de Identity-Aware Proxy (App Engine): Disponible para las solicitudes que usan Identity-Aware Proxy como medio de acceso a una versión del servicio de app.
  • Servicios de Cloud Run

Extrae valores de atributos

Puedes usar la función extract() para extraer un valor de un atributo. Por ejemplo, puedes extraer una parte arbitraria del nombre de un recurso y, luego, escribir una expresión de condición que haga referencia al texto extraído.

Para usar la función extract(), debes proporcionar una plantilla de extracción, que especifica la parte del atributo que se extraerá. Por ejemplo, si deseas extraer un ID del proyecto a partir del nombre del recurso de una instancia de VM de Compute Engine, puedes usar la plantilla projects/{project}/.

La plantilla de extracción contiene las siguientes partes:

  • Un identificador, escrito entre llaves, que señala la substring que se debe extraer.

    Elige un identificador breve y significativo que deje en claro el valor que deseas extraer. Puedes usar letras mayúsculas y minúsculas desde la A hasta la Z, dígitos numéricos, y guiones bajos (_).

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

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

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

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

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

La función extract() extrae diferentes partes del atributo en función de si la plantilla de extracción tiene un prefijo, un sufijo o ambos:

Si tiene un prefijo Si tiene un sufijo Valor extraído
Atributo completo
Caracteres que se encuentran después de la primera aparición del prefijo, o bien una string vacía si no hay caracteres después del prefijo.
Caracteres que se encuentran antes de la primera aparición del sufijo, o bien una string vacía si no hay caracteres antes del sufijo.
Caracteres que se encuentran entre la primera aparición del prefijo y la primera aparición posterior del sufijo, o bien una string vacía si no hay caracteres entre el prefijo y el sufijo.

Si especificas un prefijo o sufijo que no aparece en el atributo, o si el sufijo aparece solo antes del prefijo, la función extract() devuelve una cadena vacía.

En los siguientes ejemplos, se muestra el resultado de varias plantillas de extracción diferentes. En estos ejemplos, se hace referencia a un nombre de recurso para un objeto de Cloud Storage, projects/_/buckets/acme-orders-aaa/objects/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 está vacío
{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/order_date=2019-11-03/aef87g87ae0876
/orders/{none}/order_date= string está vacío
/orders/order_date=2019-11-03/{id}/data_lake string está vacío

Si extraes una string que representa una fecha, puedes usar los operadores y funciones de fecha y hora de esta página para convertir el valor extraído en una Timestamp. Para ver ejemplos, consulta Configura el acceso basado en recursos.