Referencia de atributos de condiciones de gestión de identidades y accesos

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

Atributos de condición admitidos

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

Atributos de recursos

Los siguientes atributos están relacionados con el recurso que es el tema de la solicitud.

Atributo Resumen de uso Servicios Google Cloud admitidos
Atributo de servicio de recursos

Gestionar el acceso en función del Google Cloud servicio que se esté usando.

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

  • Apigee
  • Application Integration
  • Hub de APIs de Apigee
  • Servicio de copia de seguridad y DR
  • BigQuery
  • API Reservation de BigQuery
  • Bigtable
  • Autorización binaria
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Firestore
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service para Apache Kafka
  • Gestor de parámetros
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
Atributo de tipo de recurso

Gestionar el acceso en función del tipo de recurso.

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

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

Gestionar el acceso en función del nombre del recurso.

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

  • Apigee
  • Application Integration
  • Hub de APIs de Apigee
  • Servicio de copia de seguridad y DR
  • BigQuery
  • API Reservation de BigQuery
  • Bigtable
  • Autorización binaria
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Firestore
  • Integration Connectors
  • Google Cloud Managed Service para Apache Kafka
  • Gestor de parámetros
  • Pub/Sub Lite
  • Secret Manager
  • Spanner
Etiquetas de recursos

Gestionar el acceso en función de las etiquetas asociadas al recurso.

Puede usar este atributo en los siguientes lugares:

  • Permitir vinculaciones de roles de políticas
  • Reglas de denegación de políticas de denegación

Todos los Google Cloud servicios (consulta Compatibilidad con condiciones heredadas)

Para obtener más información sobre los atributos de recursos, consulta la sección Atributos de recursos de esta página.

Atributos principales

Los siguientes atributos están relacionados con la entidad de seguridad que hace la solicitud.

Atributo Resumen de uso Tipos de principales admitidos

Atributo de tipo principal

Aplica políticas en función del tipo de principal de la solicitud.

Puede usar este atributo en las vinculaciones de políticas de las políticas de límites de acceso de principales.

  • Cuentas de Google
  • Identidades de grupos de identidades de Workforce
  • Identidades de grupos de identidades de carga de trabajo
  • Cuentas de servicio

Atributo de asunto principal

Aplica políticas basadas en la identidad de la entidad de seguridad de la solicitud.

Puede usar este atributo en las vinculaciones de políticas de las políticas de límites de acceso de principales.

  • Cuentas de Google
  • Identidades de grupos de identidades de Workforce
  • Identidades de grupos de identidades de carga de trabajo
  • Cuentas de servicio

Para obtener más información sobre los atributos principales, consulta la sección Atributos principales de esta página.

Atributos request

Los siguientes atributos están relacionados con los detalles de la solicitud.

Atributo Resumen de uso Servicios Google Cloud admitidos

Atributo de niveles de acceso

Gestionar el acceso en función de niveles de acceso específicos.

Un nivel de acceso es un atributo calculado a partir de 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 onNetwork nivel de acceso puede requerir que el dispositivo que realiza la solicitud proceda de un intervalo de direcciones IP concreto. Los administradores de una organización definen los niveles de acceso.

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

Identity-Aware Proxy

Atributos de la API

Gestionar el acceso en función de los datos proporcionados por una API o un servicio específicos. Google Cloud

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

  • API Gateway
  • AutoML
  • Servicio de Autoridades de Certificación
  • Cloud Run Functions
  • API de Cloud Healthcare
  • Cloud Key Management Service
  • Cloud Run
  • API Cloud Runtime Configuration
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Gestión de Identidades y Accesos
  • Identity-Aware Proxy
  • Servicio gestionado de Microsoft Active Directory
  • Cuadernos gestionados por usuarios
  • Resource Manager
  • Secret Manager
  • Service Management

Atributos de fecha y hora

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

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

Todos los Google Cloud servicios (consulta Compatibilidad con condiciones heredadas)

Atributos de IP o puerto de destino

Gestiona el acceso en función de la dirección IP y/o el puerto de destino de una solicitud. Por ejemplo, una instancia de máquina virtual (VM) de Compute Engine puede exponer una IP externa, como 10.0.0.2, pero el puerto 22 solo se puede exponer para uso administrativo.

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

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

Identity-Aware Proxy

Atributos de las reglas de reenvío

Especifica los tipos de reglas de reenvío que puede crear una entidad. Por ejemplo, puede permitir que una entidad cree reglas de reenvío para balanceadores de carga internos Google Cloud , que gestionan el tráfico que se origina en una red Google Cloud , pero no para balanceadores de carga externos Google Cloud , que gestionan el tráfico que se origina en Internet.

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

Atributos de ruta o host de URL

Gestiona el acceso en función de la ruta de la URL o del 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 a la que solo pueden acceder los administradores de Recursos Humanos.

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

  • Identity-Aware Proxy
  • Cloud Run

Para obtener más información sobre los atributos de solicitud, consulta la sección Atributos de solicitud de esta página.

Compatibilidad con condiciones heredadas

Algunos tipos de Google Cloud recursos no permiten condiciones en sus políticas de permiso. Sin embargo, puedes añadir enlaces de roles condicionales a nivel de organización, carpeta o proyecto, y otros recursos heredarán esos enlaces de roles a través de la jerarquía de recursos. Para obtener más información, consulta Tipos de recursos que aceptan enlaces de roles condicionales.

Cuando uses atributos a nivel de organización, carpeta o proyecto, ten en cuenta 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 que concede acceso. Por ejemplo, la condición resource.name.endsWith == devResource nunca concederá acceso a ningún recurso de gestión de identidades y accesos, ya que los recursos de gestión de identidades y accesos no proporcionan el nombre del recurso.

Para evitar este problema, utilice los atributos tipo de recurso y servicio de recurso que se describen en esta página para limitar el ámbito 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 Compute Engine. En cambio, para las instancias de Compute Engine, la condición comprueba el nombre del recurso:

resource.type != 'compute.googleapis.com/Disk' ||
    resource.name.endsWith('devResource')

No es necesario que limites el ámbito de las condiciones que comprueban las etiquetas asociadas a un recurso. Cuando una condición comprueba las claves y los valores de las etiquetas, no puede comprobar ningún otro atributo, incluidos el tipo de recurso y el servicio de recursos.

Atributos de recursos

Los atributos de servicio de recursos, tipo de recurso y nombre de recurso se suelen usar para cambiar el ámbito de una concesión de acceso proporcionada por el enlace de rol. Cuando un rol contiene permisos que se aplican a diferentes atributos específicos de un recurso, se pueden usar condiciones basadas en recursos para conceder un subconjunto de los permisos del rol a tipos o servicios específicos.

Atributo resource.service

El atributo resource.service le permite definir una condición en función delGoogle Cloud servicio que se esté usando. Por ejemplo, puedes definir una condición que limite el acceso de un usuario a los recursos que usen el servicio cloudresourcemanager.googleapis.com. Para ver una lista de los valores admitidos, consulta Valores del servicio de recursos.

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

Variable de atributo resource.service
Tipo de atributo

string

Para ver una lista de los valores admitidos, consulta Valores del servicio de recursos.

Operadores admitidos ,
Detalles Cuando utilice el atributo resource.type en las condiciones, compruebe si el atributo es exactamente igual () o exactamente distinto (). Otras comparaciones, como comprobar si hay un prefijo o un sufijo, pueden dar resultados inesperados.
Ejemplo

Devuelve true para los recursos de Compute Engine:

resource.service == "compute.googleapis.com"
Servicios admitidos
  • Apigee
  • Application Integration
  • Hub de APIs de Apigee
  • Servicio de copia de seguridad y DR
  • BigQuery
  • API Reservation de BigQuery
  • Bigtable
  • Autorización binaria
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Firestore
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service para Apache Kafka
  • Gestor de parámetros
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner

Atributo resource.type

El atributo resource.type le permite definir una condición en función del tipo de recurso. Por ejemplo, puedes definir una condición que limite el acceso de un usuario a los recursos de tipo storage.googleapis.com/Object. Para ver una lista de los valores admitidos, consulta Valores de tipo de recurso.

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

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

Variable de atributo resource.type
Tipo de atributo

string

Para ver una lista de los valores admitidos, consulta Valores de tipo de recurso.

Operadores admitidos ,
Detalles Cuando utilice el atributo resource.type en las condiciones, compruebe si el atributo es exactamente igual () o exactamente distinto (). Otras comparaciones, como comprobar si hay un prefijo o un sufijo, pueden dar resultados inesperados.
Ejemplos

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

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

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

(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 APIs
  • Entradas de mapas clave-valor de proxies de APIs
  • Mapas de pares clave-valor de proxies de API
  • Revisiones de proxies de API
  • Cachés
  • Atributos de aplicación de desarrollador
  • Aplicaciones para desarrolladores
  • Atributos de desarrollador
  • Desarrolladores
  • Entradas de mapa de clave-valor de entorno
  • Mapas de clave-valor de entorno
  • Exportaciones
  • Hooks de flujos
  • Alias de almacén de claves
  • Almacenes de claves
  • Consultas
  • Planes de precios
  • Referencias
  • Revisiones de flujos compartidos
  • Flujos compartidos
  • Servidores de destino
  • Sesiones de seguimiento (depuración)
Application Integration
  • Configuraciones de autorización
  • Ejecuciones
  • Versiones de integración
  • Integraciones
  • Ubicaciones
  • Suspensiones
Hub de APIs de Apigee
  • APIs
  • Operaciones con el API
  • Definiciones
  • Despliegues
  • Especificaciones
  • Versiones
Servicio de copia de seguridad y DR
  • Depósitos de copias de seguridad
BigQuery
  • Conjuntos de datos
  • Modelos
  • Rutinas
  • Tablas
API Reservation de BigQuery
  • Tareas
  • Reservas de BI
  • Compromisos de capacidad
  • Ubicaciones
  • Reservas
Bigtable
  • Clústeres
  • Instancias
  • Tablas
Autorización binaria
  • Encargados de la atestación
  • Configuraciones de validación continua
  • Políticas
Cloud Key Management Service
  • Versiones de claves criptográficas
  • Claves criptográficas
  • Conjuntos de claves
  • Ubicaciones
Cloud Logging
  • Segmentos de registros
  • Vistas de registros
Cloud SQL
  • Ejecuciones de copias de seguridad
  • Instancias
Cloud Storage
  • Segmentos
  • Carpetas gestionadas
  • Objetos
Compute Engine
  • Servicios de backend (globales y regionales)
  • Cortafuegos
  • Reglas de reenvío (globales y regionales)
  • Imágenes
  • Plantillas de instancia
  • Instancias
  • Discos persistentes (regionales y de zona)
  • Capturas
  • Proxies HTTP(S) de destino (globales y regionales)
  • Proxies SSL de destino
  • Proxies TCP de destino
Dataform
  • Resultados de la compilación
  • Ubicaciones
  • Configuraciones de lanzamiento
  • Repositorios
  • Configuraciones de flujo de trabajo
  • Invocaciones de flujos de trabajo
  • Espacios de trabajo
Google Cloud
  • Ubicaciones1
Google Kubernetes Engine
  • Clústeres
Firestore
  • Bases de datos
Identity-Aware Proxy
  • Todos los servicios de backend y las aplicaciones de App Engine
  • Todos los recursos de túneles
  • Todas las zonas de túnel
  • Todos los servicios web
  • Versiones de servicio de aplicaciones de App Engine
  • Servicios de aplicaciones de App Engine
  • Servicios de backend de Compute Engine
  • Instancias de túnel
Integration Connectors
  • Conexiones
  • Metadatos de esquema de conexión
  • Adjuntos de endpoint
  • Suscripciones a eventos
  • Zonas gestionadas
Google Cloud Managed Service para Apache Kafka
  • Clústeres
  • Grupos de consumidores
  • Operaciones
  • Temas
Gestor de parámetros
  • Versiones de los parámetros
  • Parámetros
Pub/Sub Lite
  • Ubicaciones
  • Suscripciones
  • Temas
Resource Manager
  • Proyectos
Secret Manager
  • Versiones de secretos
  • Secretos
Spanner
  • Copias de seguridad
  • Bases de datos
  • Instancias

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

Atributo resource.name

El atributo resource.name le permite definir una condición basada en todo o parte del nombre de un recurso. Para ver una lista de formatos de nombres de recursos, consulta Formato de nombre de recurso.

El atributo resource.name solo está disponible para determinados tipos de recursos, que se indican en la tabla de esta sección. Te recomendamos que limites la aplicabilidad de la condición al tipo de recurso previsto. Si un 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 asegurar este comportamiento. En este ejemplo, la condición permite el acceso a todos los tipos de recursos, excepto a los segmentos y objetos de Cloud Storage. Por el contrario, en el caso de los segmentos y los objetos, la condición solo permite el acceso al segmento example-bucket y a los objetos que contiene:

(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 comprueba si el recurso no es un segmento ni un objeto. Si el recurso es de otro tipo, la condición se evalúa como true, independientemente del nombre del recurso.

Ten en cuenta también que la condición comprueba el atributo resource.type, no el atributo resource.service. Comprobar el atributo resource.type tiene varias ventajas:

  • Limita la comprobación de resource.name al conjunto de recursos adecuado. Por ejemplo, si quieres conceder acceso a instancias de Compute Engine con un nombre específico, es lógico excluir todos los tipos de recursos que no sean instancias de Compute Engine.
  • De esta forma, se evita que el ámbito de la condición cambie si un servicio añade 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 comprobar si es igual al operador . Como la condición se fija en el inicio del nombre del recurso, coincide con un segmento y con los objetos de ese segmento. Si se comprueba la igualdad, solo coincidirá con el segmento.

No puedes usar caracteres comodín, como *, para buscar coincidencias con varios nombres de recursos. Considera estas alternativas:

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

    Para obtener más información, consulta la sección Extraer valores de atributos de 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.

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

Variable de atributo resource.name
Tipo de atributo

string

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

Funciones y operadores admitidos startsWith(), endsWith(), extract(), ,
Detalles

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

La función startsWith() toma el literal de cadena de prefijo que se va a evaluar con resource.name.

La función endsWith() toma el literal de cadena de sufijo que se va a evaluar con 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 el apartado Extraer valores de nombres de recursos de esta página.

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

Ejemplos

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

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

Devuelve true si el nombre del recurso empieza por el prefijo especificado, con el formato que usan las instancias de VM de Compute Engine:

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

Devuelve true si el nombre del recurso empieza por el prefijo especificado, con el formato que usan los segmentos de Cloud Storage:

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

Devuelve 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")

Devuelve 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 APIs
  • Entradas de mapas clave-valor de proxies de APIs
  • Mapas de pares clave-valor de proxies de API
  • Revisiones de proxies de API
  • Cachés
  • Atributos de aplicación de desarrollador
  • Aplicaciones para desarrolladores
  • Atributos de desarrollador
  • Desarrolladores
  • Entradas de mapa de clave-valor de entorno
  • Mapas de clave-valor de entorno
  • Exportaciones
  • Hooks de flujos
  • Alias de almacén de claves
  • Almacenes de claves
  • Consultas
  • Planes de precios
  • Referencias
  • Revisiones de flujos compartidos
  • Flujos compartidos
  • Servidores de destino
  • Sesiones de seguimiento (depuración)
Application Integration
  • Configuraciones de autorización
  • Ejecuciones
  • Versiones de integración
  • Integraciones
  • Ubicaciones
  • Suspensiones
Hub de APIs de Apigee
  • APIs
  • Operaciones con el API
  • Definiciones
  • Despliegues
  • Especificaciones
  • Versiones
Servicio de copia de seguridad y DR
  • Depósitos de copias de seguridad
BigQuery
  • Conjuntos de datos
  • Modelos
  • Rutinas
  • Tablas
API Reservation de BigQuery
  • Tareas
  • Reservas de BI
  • Compromisos de capacidad
  • Ubicaciones
  • Reservas
Bigtable
  • Clústeres
  • Instancias
  • Tablas
Autorización binaria
  • Encargados de la atestación
  • Configuraciones de validación continua
  • Políticas
Cloud Deploy
  • Ejecuciones de automatizaciones
  • Automatizaciones
  • Tipos de segmentación personalizada
  • Flujos de procesamiento de entrega
  • Ejecuciones de la tarea
  • Versiones
  • Implementaciones
  • Destinos
Cloud Key Management Service
  • Claves criptográficas
  • Versiones de claves criptográficas
  • Conjuntos de claves
Cloud Logging
  • Segmentos de registros
  • Vistas de registros
Cloud SQL
  • Ejecuciones de copias de seguridad
  • Instancias
Cloud Storage
  • Segmentos
  • Carpetas gestionadas
  • Objetos
Compute Engine
  • Servicios de backend (globales y regionales)
  • Cortafuegos
  • Reglas de reenvío (globales y regionales)
  • Imágenes
  • Plantillas de instancia
  • Instancias
  • Discos persistentes (regionales y de zona)
  • Capturas
  • 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
  • Configuraciones de lanzamiento
  • Repositorios
  • Configuraciones de flujo de trabajo
  • Invocaciones de flujos de trabajo
  • Espacios de trabajo
Integration Connectors
  • Conexiones
  • Metadatos de esquema de conexión
  • Adjuntos de endpoint
  • Suscripciones a eventos
  • Zonas gestionadas
Google Cloud Managed Service para Apache Kafka
  • Clústeres
  • Grupos de consumidores
  • Operaciones
  • Temas
Gestor de parámetros
  • Versiones de los parámetros
  • Parámetros
Pub/Sub Lite
  • Ubicaciones
  • Suscripciones
  • Temas
Secret Manager
  • Versiones de secretos
  • Secretos
Spanner
  • Copias de seguridad
  • Bases de datos
  • Instancias

Etiquetas de recursos

Las funciones de etiquetas de recursos te permiten definir una condición basada en las etiquetas que se adjuntan a los recursos admitidos o que heredan los descendientes de esos recursos. Por ejemplo, puedes definir una condición que asigne un rol solo a los recursos que tengan la etiqueta env: prod. Para obtener más información sobre cómo controlar el acceso con etiquetas, consulta Etiquetas y control de acceso.

Cada etiqueta consta de una clave y un valor. Hay varios tipos de identificadores para cada clave y valor:

  • Un ID permanente, que es único a nivel mundial 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 abreviado de cada clave debe ser único en el proyecto o la organización en la que se defina la clave, y el nombre abreviado de cada valor debe ser único para la clave asociada. Por ejemplo, una clave de etiqueta podría tener el nombre abreviado env y un valor de etiqueta podría tener el nombre abreviado prod.
  • Un nombre con espacio de nombres, que añade 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 saber cómo obtener el ID de tu organización, consulta el artículo Obtener el ID de recurso de tu organización. Una clave de etiqueta creada para un proyecto podría tener el nombre con espacio de nombres myproject/env. Para saber cómo obtener el ID de tu proyecto, consulta el artículo sobre cómo identificar proyectos.

Para obtener información sobre qué tipo de identificador usar en sus condiciones, consulte Definiciones e identificadores de etiquetas.

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

Sin embargo, algunas áreas de la consola Google Cloud no reconocen las vinculaciones de roles de políticas de permiso con condiciones basadas en etiquetas. Por lo tanto, si tienes un rol con una condición basada en etiquetas, es posible que la consola Google Cloud te impida realizar determinadas acciones por error. Si te encuentras con este problema, utiliza un método alternativo, como la CLI de gcloud, para realizar la acción.

Puedes usar condiciones basadas en etiquetas en los siguientes elementos:

  • Permitir vinculaciones de roles de políticas
  • Reglas de denegación de políticas de denegación

Puede usar las siguientes funciones para definir condiciones basadas en etiquetas:

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

Comprueba si el recurso de la solicitud tiene una etiqueta con la clave especificada. La clave de la etiqueta se busca por su nombre con espacio de nombres. Para buscar una clave de etiqueta mediante 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 inclinada como prefijo. Por ejemplo, 123456789012/env.
Ejemplo

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

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

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

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

Devuelve 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

Comprueba si el recurso de 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 abreviado. Para comprobar una clave y un valor de etiqueta mediante sus IDs permanentes, usa la función resource.matchTagId().

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

Devuelve 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

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

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

Devuelve 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 basadas en la entidad principal que ha enviado la solicitud. Con estos atributos, puede acotar los principales a los que se aplica una política.

Puede usar atributos principales en las vinculaciones de políticas de las políticas de límites de acceso de principales.

Atributo principal.type

El atributo principal.type te permite definir una condición en función del tipo de principal que emite la solicitud. Por ejemplo, puedes añadir una condición a una vinculación de política de una política de límite de acceso principal para asegurarte de que la política solo se aplique a las cuentas de servicio.

Puede usar atributos principales en las vinculaciones de políticas de las políticas de límites de acceso de principales.

Variable de atributo principal.type
Tipo de atributo

string

Operadores admitidos , , in
Tipos de principales admitidos
Cuentas de Google
iam.googleapis.com/WorkspaceIdentity
Identidades de grupos de identidades de Workforce
iam.googleapis.com/WorkforcePoolIdentity
Identidades de grupos de identidades de carga de trabajo
iam.googleapis.com/WorkloadPoolIdentity
Cuentas de servicio
iam.googleapis.com/ServiceAccount
Ejemplos

Se 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 la entidad de seguridad de la solicitud es una identidad de Google Workspace o una identidad de grupo de identidades de la fuerza de trabajo:

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

Atributo principal.subject

El atributo principal.subject le permite definir una condición basada en la entidad principal que envía la solicitud. Por ejemplo, puedes añadir una condición a una vinculación de política de una política de límite de acceso de una entidad principal para asegurarte de que la política solo se aplique a las entidades principales cuyas direcciones de correo terminen en @example.com.

Si usa el atributo principal.subject en una condición, le recomendamos que también use 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 son necesariamente únicos en todos los tipos principales. Por ejemplo, el identificador example-user@example.com podría identificar una cuenta de Google o un usuario de un grupo de identidades de la plantilla.

Si usa el atributo principal.type junto con el atributo principal.subject, puede asegurarse de que la condición solo coincida con las entidades del tipo previsto. Por ejemplo, la siguiente expresión coincide con las cuentas de Google cuya dirección de correo termina en @example.com:

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

Puede usar atributos principales en las vinculaciones de políticas de las políticas de límites de acceso de principales.

Variable de atributo principal.subject
Tipo de atributo

string

Operadores admitidos

, , in, startsWith(), endsWith()

Asuntos principales admitidos
Cuentas de Google
Identificador: dirección de correo del usuario
Identidades de grupos de identidades de Workforce
Identificador: valor del atributo de asunto de la identidad
Identidades de grupos de identidades de carga de trabajo
Identificador: valor del atributo de asunto de la identidad
Cuentas de servicio
Identificador: dirección de correo de la cuenta de servicio
Ejemplo

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

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

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

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

Atributos request

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

Atributo de nivel de acceso

El atributo "access levels" (niveles de acceso) permite a los usuarios definir una condición que requiere que una solicitud cumpla uno o varios niveles de acceso para poder autorizarse. 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 puede requerir que el dispositivo que hace 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 proceda de un intervalo de direcciones IP concreto. Para obtener más información sobre los niveles de acceso, consulta la documentación de Administrador de contextos de acceso.

El atributo de niveles de acceso solo está disponible cuando se usa 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. En concreto, el atributo "access_levels" solo está disponible para las solicitudes que comprueban uno de estos permisos:

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

Puede usar el atributo de niveles de acceso cuando conceda de forma condicional los siguientes roles predefinidos:

  • Usuario de túneles protegidos mediante IAP (roles/iap.tunnelResourceAccessor)

    Contiene un solo permiso, iap.tunnelInstances.accessViaIAP.

  • Usuario de aplicaciones web protegidas mediante IAP (roles/iap.httpsResourceAccessor)

    Contiene un solo permiso, iap.webServiceVersions.accessViaIAP.

También puede usar el atributo de niveles de acceso para conceder de forma condicional un rol personalizado que contenga estos permisos. El rol personalizado no debe contener ningún otro permiso.

Atributo request.auth.access_levels

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

Para comprobar si una solicitud cumple un nivel de acceso específico, utiliza el operador in:

ACCESS_LEVEL_FULL_NAME in request.auth.access_levels

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

accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL
Ejemplo

Devuelve true si la solicitud cumple 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 para acceder a una instancia de túnel, un grupo de destino de túnel, una aplicación web que se ejecuta en el balanceo de carga de Google Cloud o una aplicación web que se ejecuta en App Engine.

Atributos de la API

Los atributos de API te ayudan a gestionar el acceso en función de los datos proporcionados por unaGoogle Cloud API o un servicio específicos. Puede usar atributos de API en enlaces de rol de políticas de permiso.

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

Para ver ejemplos de cuándo puede necesitar usar atributos de la API en una condición, consulte las siguientes páginas:

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

Funciones de 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: el atributo de la API que se va a obtener. Para ver los valores admitidos, consulta los atributos de la API Cloud Storage y los atributos de la API IAM de esta página.
  • defaultValue: el valor predeterminado (V) que se usará si el atributo de la API no está disponible. El valor V es del tipo T, donde T es del mismo tipo que el valor del atributo de la API. Por ejemplo, si el valor del atributo de la API es una cadena, puedes usar una cadena vacía o una cadena de marcador de posición, como undefined.

Ejemplo

Devuelve uno de los siguientes valores:

  • En el caso de las solicitudes para conceder o revocar un rol, devuelve una lista de roles que se han modificado en la solicitud.
  • En el resto de los tipos de solicitudes, devuelve una lista vacía.
api.getAttribute("iam.googleapis.com/modifiedGrantsByRole", [])
hasOnly(
  items: list<T>
)
  bool

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

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

Comprueba si la solicitud concedería o revocaría algún rol que no sea 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:

Roles concedidos o revocados Resultado
Ninguno

true

Si no se modifica ningún rol, api.getAttribute() devuelve el valor predeterminado. El valor predeterminado de este atributo es siempre una lista vacía. Por definición, una lista vacía no contiene valores que no estén en la lista de permitidos.

roles/pubsub.editor

true

El rol está en la lista de permitidos.

roles/pubsub.editor
roles/pubsub.publisher

true

Ambos roles están en la lista de permitidos.

roles/billing.admin

false

El rol no está en la lista de permitidos.

roles/billing.admin
roles/pubsub.editor

false

Un rol está en la lista de permitidos, pero el otro no.

Atributos de la API de Cloud Storage

Cloud Storage proporciona el siguiente atributo de API.

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

En una solicitud para listar objetos de un contenedor, contiene el valor del parámetro prefix de la solicitud. Si la solicitud omite el parámetro prefix, el atributo no se define.

En 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 de atributo iam.googleapis.com/modifiedGrantsByRole
Tipo de atributo list<string>
Detalles

En una solicitud para definir la política de permisos de un recurso, este atributo contiene los nombres de los roles de las vinculaciones de roles que modifica la solicitud.

En 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 permiso:

  • Proyectos
  • Carpetas
  • Organizaciones
Servicios que reconocen este atributo

Los siguientes servicios reconocen el atributo modifiedGrantsByRole:

  • API Gateway
  • AutoML
  • Servicio de Autoridades de Certificación
  • Cloud Run Functions
  • API de Cloud Healthcare
  • Cloud Key Management Service
  • Cloud Run
  • API Cloud Runtime Configuration
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Gestión de Identidades y Accesos
  • Identity-Aware Proxy
  • Servicio gestionado de Microsoft Active Directory
  • Cuadernos gestionados por usuarios
  • Resource Manager
  • Secret Manager
  • Service Management

Atributo de fecha y hora

El atributo de fecha y hora se usa para definir el acceso a los recursos que caduca, se programa o tiene una duración limitada. Google Cloud Puede usar atributos de fecha y hora en enlaces de roles de políticas de permiso.

Este atributo se admite en todos los servicios y tipos de recursos de Google Cloud . Para saber cómo aplicar condiciones de fecha y hora a recursos que no las admiten directamente, consulta la sección Compatibilidad con las condiciones heredadas de esta página.

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

En las siguientes secciones se enumeran las funciones que puede usar para definir condiciones basadas en marcas de tiempo y duraciones.

Crear, comparar y modificar marcas de tiempo y duraciones

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

Convierte una fecha de string a Timestamp.

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

Crea un Timestamp que representa la fecha 2023-02-01 y la hora 00:00:00.000 UTC:

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

Convierte un periodo de tiempo de string a Duration.

Parámetro
value: un Duration en segundos, seguido 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 un string en un Timestamp.

Parámetro

value: marca de tiempo UTC que cumple el RFC 3339.

Ejemplo

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

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

Compara dos valores Timestamp.

Ejemplos

Devuelve true si la hora de la solicitud es anterior al 12 de abril del 2022 a las 00:00:00 UTC:

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

Devuelve true si la hora de la solicitud es anterior o igual al 12 de abril del 2022 a las 00:00:00 UTC:

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

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

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

Devuelve true si la hora de la solicitud es posterior o igual al 12 de abril del 2022 a las 00:00:00 (UTC):

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

Añadir o restar un Duration a un Timestamp.

Ejemplos

Devuelve la Timestamp que se corresponde con 30 minutos después de las 14:30:00 UTC del 12 de abril del 2024:

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

Devuelve el Timestamp que se corresponde con 60 días antes de las 14:30:00 UTC del 12-04-2024:

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

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

En las condiciones de gestión de identidades y accesos, todas las marcas de tiempo están en UTC. Sin embargo, es posible que quieras extraer información en función de otra zona horaria. Por ejemplo, puede que quieras saber si una marca de tiempo UTC corresponde a un lunes en la zona horaria de Berlín (Alemania).

Para especificar otra zona horaria, pásala a la función. Usa un nombre o un desfase UTC de la base de datos de zonas horarias de IETF. Por ejemplo, puedes usar Europe/Berlin o +01:00 para la hora de Europa Central (CET).

Funciones y operadores admitidos Descripción
Timestamp.getDate(
  timeZone: string
)
  int

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

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
Ejemplo

Devuelve 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 Timestamp. El valor usa una indexación basada en cero, por lo que el primer día del mes es 0.

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
Ejemplo

Devuelve 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 del Timestamp. El valor usa indexación basada en cero. Por ejemplo, el domingo es 0.

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
Ejemplo

Devuelve 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 Timestamp. El valor usa una indexación basada en cero; el primer día del año es 0.

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
Ejemplo

Devuelve true si la solicitud se envía durante los primeros cinco 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 Timestamp.

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
Ejemplo

Devuelve true si la solicitud se envía durante el año 2023 en Mountain View (California):

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

Devuelve true si la solicitud se envía durante el año 2022 en UTC:

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

Obtiene la hora del día de Timestamp. El valor usa una indexación basada en cero. Los valores van de 0 a 23.

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

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
Ejemplo

Devuelve true si la solicitud se envía entre las 09:00 (9:00) y las 17:00 (17:00) de un día laborable 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 el número de milisegundos desde el Timestamp. El valor usa una indexación basada en cero. Los valores van de 0 a 999.

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
Timestamp.getMinutes(
  timeZone: string
)
  int

Obtiene el número de minutos transcurridos de la hora desde Timestamp. El valor usa una indexación basada en cero; los valores van de 0 a 59.

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
Ejemplo

Devuelve true si la solicitud se envía a las 09:30 (9:30) o después 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 Timestamp. El valor usa una indexación basada en cero. Los valores van de 0 a 11.

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
Ejemplo

Devuelve 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 el número de segundos desde Timestamp. El valor usa una indexación basada en cero. Los valores van de 0 a 59.

Parámetro
timeZone: la zona horaria para la que se va a calcular el resultado. El valor predeterminado es UTC.
, , ,

Compara el resultado de dos funciones en esta tabla.

Atributos de IP y puerto de destino

El atributo de IP o puerto de destino permite a los usuarios gestionar el acceso en función de la dirección IP y el puerto de destino internos de una solicitud. Puede usar atributos de IP o puerto de destino en enlaces de roles de políticas de permiso.

Por ejemplo, una instancia de VM de Compute Engine puede asignar 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 podrían estar disponibles internamente para uso administrativo. Puede usar los atributos de IP o puerto de destino para conceder diferentes niveles de acceso en función de la dirección IP y el puerto internos.

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

Atributo destination.ip

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

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

Ejemplos

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

destination.ip == "10.0.0.1"

Devuelve 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 para acceder a una instancia de túnel

Atributo destination.port

Variable de 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 inferior a 3001:

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

Atributos de reglas de reenvío

Los atributos de las reglas de reenvío le permiten especificar los tipos de reglas de reenvío que puede crear una entidad principal. Por ejemplo, puede permitir que una entidad cree reglas de reenvío para balanceadores de carga Google Cloudinternos, que gestionan el tráfico que se origina en una Google Cloud red, pero no para balanceadores de carga Google Cloudexternos, que gestionan el tráfico que se origina en Internet. Puede usar atributos de reglas de reenvío en enlaces de roles de políticas de permiso.

En Cloud Load Balancing, los atributos de la regla de reenvío no afectan a la capacidad de crear otros componentes de un balanceador de carga, como servicios de backend, proxies de destino, comprobaciones de estado y mapas de URLs. Google Cloud

Funciones admitidas

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

Comprueba si la solicitud está creando una regla de reenvío.

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

Comprueba si la solicitud afecta a uno de los tipos especificados de esquema de balanceo de carga. Para encontrar el identificador de cada esquema de balanceo de carga, así como más detalles, consulta Usar condiciones de IAM en balanceadores de carga. Google Cloud

Parámetro
schemes: los esquemas de balanceo de carga que puede afectar la solicitud.
Ejemplo

Devuelve uno de los siguientes valores:

  • Si la solicitud no crea una regla de reenvío, devuelve true.
  • Si la solicitud crea una regla de reenvío, devuelve true solo si la regla de reenvío afecta a un esquema de balanceo de carga 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 las 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 de Compute Engine.

Atributo de ruta o host de URL

El atributo de ruta o host de la URL permite a los usuarios gestionar el acceso en función de la ruta y el host de la 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 pueden acceder los administradores de Recursos Humanos.

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

Atributo request.path

Variable de atributo request.path
Tipo de atributo string
Funciones y operadores admitidos , startsWith(), endsWith()
Detalles No recomendamos usar el operador con este atributo. En lugar de comprobar la desigualdad, como en request.path != "/admin", comprueba el prefijo del atributo, como en !request.path.startsWith("/admin"). Al comprobar el prefijo, también proteges las rutas de URL de la jerarquía /admin, como /admin/payroll/.
Ejemplos

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

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

Devuelve true si la ruta de la solicitud empieza por la ruta de URL especificada:

request.path.startsWith("/admin")

Devuelve true si la ruta de la solicitud termina con la ruta de URL especificada:

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

Atributo request.host

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

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

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

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

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

Extraer valores de atributos

Puede 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, a continuación, escribir una expresión de condición que haga referencia al texto que has extraído.

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

Una plantilla de extracción contiene las siguientes partes:

  • Un identificador entre llaves que identifica la subcadena que se va a extraer.

    Elige un identificador breve y significativo que deje claro qué valor quieres extraer. Puedes usar letras mayúsculas y minúsculas de A a Z, dígitos numéricos y guiones bajos (_).

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

  • Opcional: un prefijo, que debe aparecer antes de la subcadena que se va a extraer.

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

  • Opcional: un sufijo, que debe aparecer después de la subcadena que se va a extraer.

    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:

Tiene prefijo Tiene sufijo Valor extraído
Todo el atributo
Los caracteres que hay después de la primera aparición del prefijo o una cadena vacía si no hay caracteres después del prefijo.
Los caracteres que hay antes de la primera aparición del sufijo o una cadena vacía si no hay caracteres antes del sufijo.
Los caracteres entre la primera aparición del prefijo y la primera aparición posterior del sufijo, o una cadena vacía si no hay caracteres entre el prefijo y el sufijo.

Si especifica un prefijo o un sufijo que no aparecen en el atributo, o si el sufijo solo aparece 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. Estos ejemplos hacen referencia al nombre de un recurso de 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 cadena que representa una fecha, puedes usar las funciones y los operadores de fecha y hora de esta página para convertir el valor extraído en un Timestamp. Para ver ejemplos, consulta Configurar el acceso basado en recursos.