En esta página, se describe cómo usar etiquetas con Identity and Access Management (IAM) para ayudarte a controlar el acceso a tus recursos de Google Cloud .
Para obtener más información sobre las etiquetas, consulta Descripción general de las etiquetas.
Descripción general de las etiquetas
Una etiqueta es un par clave-valor que se adjunta a un recurso deGoogle Cloud . Puedes otorgar roles de IAM de manera condicional o denegar roles de IAM de forma condicional en función de si un recurso tiene una etiqueta específica.
Otros recursos heredan valores de etiquetas de su organización superior, carpetas y proyecto. Como resultado, puedes usar etiquetas para administrar el acceso a cualquier recurso deGoogle Cloud .
Estos son algunos casos de uso comunes para administrar el acceso con etiquetas:
- Entorno de desarrollo, etapa de pruebas y producción. Por ejemplo, puedes agregar las etiquetas
environment: deva tu entorno de desarrollo yenvironment: proda tu entorno de producción. - Tipos de componentes. Por ejemplo, puedes agregar las etiquetas
component: frontenda los recursos de frontend ycomponent: batcha los recursos para el procesamiento por lotes. - Nombres de proyecto. Por ejemplo, si tu equipo trabaja en un proyecto con el nombre interno de Atlas, puedes agregar la etiqueta
project: atlasa los recursos de desarrollo del equipo.
Identificadores y definiciones de etiquetas
Antes de adjuntar etiquetas a los recursos, debes definir la clave de la etiqueta y los valores que permite ella. Puedes crear estas definiciones a nivel de la organización o del proyecto. Usa Resource Manager para administrar las definiciones de etiquetas. Para obtener más información, consulta Crea y define una etiqueta nueva.
Cada clave y valor de etiqueta tiene algunos identificadores diferentes:
-
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/123456789012y un valor de etiqueta podría tener el ID permanentetagValues/567890123456. -
Un nombre corto. El nombre corto de cada clave debe ser único dentro del proyecto o la organización en la que se define la clave, y el nombre corto de cada valor debe ser único para su clave asociada. Por ejemplo, una clave de etiqueta podría tener el nombre corto
env, y un valor de etiqueta podría tener el nombre cortoprod. -
Un nombre con espacio de nombres, que agrega el ID numérico de tu organización o el ID del proyecto al nombre corto de una clave de etiqueta. Por ejemplo, una clave de etiqueta creada para una organización podría tener el nombre con espacio de nombres
123456789012/env. Para obtener información sobre cómo obtener el ID de tu organización, consulta Obtén el ID de tu recurso de organización. Una clave de etiqueta creada para un proyecto podría tener el nombre con espacio de nombresmyproject/env. Para obtener información sobre cómo obtener el ID de tu proyecto, consulta Identifica proyectos.
Como se explica en esta página, después de adjuntar etiquetas a un recurso, puedes escribir condiciones para otorgar acceso según las etiquetas. Para escribir una condición, debes elegir qué tipo de identificador usar en la condición. Sigue estos lineamientos para elegirlos:
- Para experimentar con etiquetas, considera usar el nombre con espacio de nombres (para claves) y el nombre corto (para los valores). Estos identificadores son más fáciles de comprender y recordar, especialmente cuando comienzas.
Si administras tu configuración de forma declarativa. mediante una herramienta como Terraform, considera usar el nombre de espacio de nombres (para claves) y el nombre corto (para los valores). Puedes volver a usar estos identificadores a lo largo del tiempo, lo que significa que una herramienta declarativa puede borrarlos y volver a crearlos, y tus condiciones continuarán funcionando.
Este enfoque viene con una compensación: supongamos que borras una clave o un valor de etiqueta y, luego, creas una clave o valor nuevo con el mismo nombre, pero un significado diferente. Si tu condición se refiere al nombre con espacio de nombres o al nombre corto, entonces la condición se sigue aplicando a la clave o el valor nuevos.
En algunos casos, este comportamiento puede hacer que las principales obtengan accesos que no quieres que tengan.
Para ayudar a minimizar el riesgo, considera usar ID permanentes, que no se pueden volver a utilizar.
Esta es la razón por la que los ID permanentes ayudan a minimizar el riesgo: supongamos que borras una clave o valor de etiqueta y, luego, creas una clave o valor nuevo con el mismo nombre, pero un significado diferente. Si tu condición se refiere al ID permanente, entonces la condición no se aplica a la clave o el valor nuevos. Por lo tanto, es menos probable que las principales obtengan accesos que no quieres que tengan.
Una desventaja es que si borras y vuelves a crear claves y valores, y deseas conservar el acceso de las principales, también debes actualizar las políticas de permisos para hacer referencia a los nuevos ID permanentes.
Acceso a recursos etiquetados
Puedes usar etiquetas con condiciones de IAM para otorgar una función de forma condicional, según las etiquetas que se adjuntan a un recurso o que el recurso hereda. Si una condición se evalúa como true, se otorga acceso, de lo contrario, no se otorga el acceso. Para obtener más información, consulta la descripción general de las condiciones de IAM.
Algunas áreas de la consola de Google Cloud no reconocen las vinculaciones de roles de políticas de permisos con condiciones basadas en etiquetas. Como resultado, si tienes un rol con una condición basada en etiquetas, es posible que la consola Google Cloud te impida realizar ciertas acciones de forma incorrecta. Si te encuentras con este problema, usa un método alternativo, como gcloud CLI, para realizar la acción.
En las siguientes secciones, se muestran ejemplos de expresiones de condición que verifican las etiquetas de un recurso. La condición llama a diferentes funciones según si verifica el ID permanente o el nombre corto. Para obtener más información sobre estas funciones, consulta Etiquetas de recursos.
Condiciones que usan ID permanentes
Esta condición otorga una función en los recursos con la etiqueta tagKeys/123456789012: tagValues/567890123456:
resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')
Esta condición otorga una función a los recursos que tienen cualquier etiqueta con la clave tagKeys/123456789012, sin importar su valor:
resource.hasTagKeyId('tagKeys/123456789012')
Esta condición otorga una función en los recursos que tienen la etiqueta
tagKeys/123456789012: tagValues/567890123456 y cualquier etiqueta que use la
clave tagKeys/987654321098:
resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456') &&
resource.hasTagKeyId('tagKeys/987654321098')
Condiciones que usan nombres con espacio de nombres y nombres cortos
Esta condición otorga una función en los recursos con la etiqueta env: prod, lo que indica que el recurso está en un entorno de producción:
resource.matchTag('123456789012/env', 'prod')
Esta condición otorga una función a los recursos que tienen cualquier etiqueta con la clave env, sin importar su valor:
resource.hasTagKey('123456789012/env')
Esta condición otorga una función en los recursos que tienen la etiqueta env: prod y
cualquier etiqueta que use la clave project:
resource.matchTag('123456789012/env', 'prod') &&
resource.hasTagKey('123456789012/project')
¿Qué sigue?
- Obtén más información para administrar etiquetas y adjuntar etiquetas a los recursos.
- Obtén detalles para verificar etiquetas en una condición.