Referencia de atributos para las condiciones de IAM

En este tema, 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.
  • Apigee
  • Application Integration
  • BigQuery
  • Autorización Binaria
  • Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
Atributo de tipo de recurso Administra el acceso según el tipo de recurso.
Atributo de nombre de recurso Administra el acceso según el nombre del recurso.
  • Apigee
  • Application Integration
  • BigQuery
  • Autorización Binaria
  • Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Integration Connectors
  • Pub/Sub Lite
  • Secret Manager
Etiquetas de recursos Administra el acceso en función de las etiquetas adjuntas al recurso. 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 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.

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.

  • Identity and Access Management
  • API Gateway
  • AutoML
  • Certificate Authority Service
  • Cloud Functions
  • 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
  • Administración de identidades y accesos
  • 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.

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.

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.

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.

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

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
  • BigQuery
  • Autorización Binaria
  • Bigtable
  • Cloud Key Management Service
  • Cloud Logging
  • Spanner
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager

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.

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
BigQuery
  • Conjuntos de datos
  • Modelos
  • Rutinas
  • Tablas
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
  • Buckets
  • 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
  • Opciones de configuración de la actualización
  • Repositorios
  • Configuración de flujos 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 eventos
  • Zonas administradas
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 de recurso, consulta Formato de nombre de recurso.

El atributo resource.name solo está disponible para tipos de recursos específicos, que se enumeran en la tabla que está a continuación. Recomendamos que limites la aplicabilidad de la condición del tipo de recurso deseado. Si una función 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 verifica 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.

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
BigQuery
  • Conjuntos de datos
  • Modelos
  • Rutinas
  • Tablas
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
  • 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
  • Buckets
  • 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
  • Opciones de configuración de la actualización
  • Repositorios
  • Configuración de flujos de trabajo
  • Invocaciones de flujos de trabajo
  • Lugares de trabajo
Integration Connectors
  • Conexiones
  • Metadatos del esquema de conexión
  • Adjuntos de extremos
  • Suscripciones a eventos
  • Zonas administradas
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 para cada clave debe ser único dentro de la organización, 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 al nombre corto de una clave de etiqueta. Por ejemplo, una clave de etiqueta podría tener el nombre con espacio de nombres 123456789012/env. Obtén más información sobre cómo obtener el ID de tu organización.

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

Las condiciones en las etiquetas son compatibles con todos los servicios y los tipos de recursos de Google Cloud. Para obtener información sobre cómo aplicar condiciones de etiquetas a los recursos que no las admiten directamente, consulta Compatibilidad para condiciones heredadas en esta página.

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

Function 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 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 túneles TCP de IAP) o el host de URL o la ruta de acceso esperados (para IAP).

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.

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 los documentos de Access Context Manager para obtener más información sobre 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.

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:

Function 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
  • Cloud Functions
  • 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
  • Administración de identidades y accesos
  • 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.

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.

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

Muestra true if the destination port is 21:


destination.port == 21

Returns true if the destination port is less than 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.

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

Function 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:

Service 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)
Traffic Director1 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.

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 solicitudes que usan Identity-Aware Proxy a fin de acceder 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 solicitudes que usan Identity-Aware Proxy a fin de acceder 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() muestra 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.