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. |
|
| Atributo de tipo de recurso |
Gestiona el acceso en función del tipo de recurso. Puede usar este atributo en las vinculaciones de roles de la política de permiso. |
|
| 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. |
|
| Etiquetas de recursos |
Gestionar el acceso en función de las etiquetas asociadas al recurso. Puede usar este atributo en los siguientes lugares:
|
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 |
|---|---|---|
|
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 entidades. |
|
|
|
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 entidades. |
|
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 |
|---|---|---|
|
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 Puede usar este atributo en las vinculaciones de roles de la política de permiso. |
Identity-Aware Proxy |
|
|
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. |
|
|
|
Configura el acceso a los recursos de Google Cloud para que caduque, se programe o tenga una duración limitada. 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) |
|
|
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 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 |
|
|
Especifica los tipos de reglas de reenvío que puede crear una entidad. Por ejemplo, puede permitir que un principal cree reglas de reenvío para balanceadores de carga internos Google Cloud , que gestionan el tráfico que se origina en una Google Cloud red, 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. |
|
|
|
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 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 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. Por el contrario, en el caso de 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 usan 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 |
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 resource.service == "compute.googleapis.com" |
| Servicios admitidos |
|
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 |
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 resource.type != "compute.googleapis.com/Image"
Devuelve (resource.type == "compute.googleapis.com/Image" || resource.type == "compute.googleapis.com/Disk") |
||||||||||||||||||||||||||||||||||||||||||||||||||||
| Tipos de recursos admitidos |
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 de un nombre de 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, toda 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.nameal 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 la igualdad con el 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 en varios nombres de recursos. Plantéate 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()oendsWith()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 |
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
La función
La función
La función
Los operadores |
| Ejemplos |
Devuelve resource.name != "projects/_/buckets/secret-bucket-123"
Devuelve |