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 deTrusted Cloud by S3NS 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 Trusted Cloud admitidos
Atributo de servicio de recursos

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

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

  • BigQuery
  • API Reservation de BigQuery
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
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.

  • BigQuery
  • API Reservation de BigQuery
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
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.

  • BigQuery
  • API Reservation de BigQuery
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
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 Trusted 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 request

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

Atributo Resumen de uso Servicios Trusted Cloud admitidos

Atributos de la API

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

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

  • Cloud Storage
  • Compute Engine
  • Gestión de Identidades y Accesos
  • Resource Manager

Atributos de fecha y hora

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

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

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

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 Trusted Cloud by S3NS , que gestionan el tráfico que se origina en una red Trusted Cloud , pero no para balanceadores de carga externos Trusted 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.

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 Trusted 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 delTrusted 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
  • BigQuery
  • API Reservation de BigQuery
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager

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
BigQuery
  • Conjuntos de datos
  • Modelos
  • Rutinas
  • Tablas
API Reservation de BigQuery
  • Tareas
  • Reservas de BI
  • Compromisos de capacidad
  • Ubicaciones
  • Reservas
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
Trusted Cloud by S3NS
  • Ubicaciones1
Google Kubernetes Engine
  • Clústeres
Firestore
  • Bases de datos
Resource Manager
  • Proyectos

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
BigQuery
  • Conjuntos de datos
  • Modelos
  • Rutinas
  • Tablas
API Reservation de BigQuery
  • Tareas
  • Reservas de BI
  • Compromisos de capacidad
  • Ubicaciones
  • Reservas
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

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 Trusted 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 Trusted 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 request

Los atributos de solicitud te permiten crear condiciones que evalúan los detalles de la solicitud, como los roles modificados por una solicitud o la fecha y la hora de la solicitud.

Atributos de la API

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

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

  • Configurar límites para conceder roles
  • 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 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:

    • Cloud Storage
    • Compute Engine
    • Gestión de Identidades y Accesos
    • Resource Manager

    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. Trusted 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 Trusted 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 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 Trusted Cloud by S3NSinternos, que gestionan el tráfico que se origina en una Trusted Cloud red, pero no para balanceadores de carga Trusted 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. Trusted 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. Trusted 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.

    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.