Proteger proyectos mediante retenciones

Este documento está dirigido a propietarios de proyectos y administradores de organizaciones que quieran añadir protecciones contra la eliminación de proyectos.

Puedes aplicar una retención a un proyecto para bloquear su eliminación hasta que la quites. Esto puede ser útil para proteger proyectos de especial importancia.

También se pueden imponer embargos sobre un proyecto automáticamente. Por ejemplo, si permites que las cuentas de servicio de Gestión de Identidades y Accesos (IAM) de un proyecto se vinculen a recursos de otros proyectos, se aplicará un bloqueo al proyecto en el que se encuentren las cuentas de servicio.

Antes de empezar

La CLI de gcloud es la forma más sencilla de interactuar con los elementos de los proyectos. Si no lo tienes instalado, puedes usar Google Cloud Shell.

Roles obligatorios

Para obtener los permisos que necesitas para modificar retenciones, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Modificador de retenciones de proyectos (roles/resourcemanager.lienModifier) en los proyectos. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para modificar las retenciones. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para modificar retenciones, se necesitan los siguientes permisos:

  • resourcemanager.projects.updateLiens
  • Lista de retenciones de un proyecto: resourcemanager.projects.get

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Aplicar una retención a un proyecto

Para imponer un gravamen en un proyecto, usa el comando alpha resource-manager liens create.

gcloud alpha resource-manager liens create \
  --project=PROJECT_ID \
  --restrictions=PERMISSION_RESTRICTION \
  --reason=LIEN_REASON \
  --origin=LIEN_ORIGIN

Haz los cambios siguientes:

  • PROJECT_ID: ID del proyecto al que se aplica el gravamen.
  • PERMISSION_RESTRICTION: lista separada por comas de permisos de gestión de identidades y accesos que se van a bloquear. La única restricción válida para un proyecto es resourcemanager.projects.delete.
  • LIEN_REASON: descripción legible por humanos de por qué existe este gravamen. Pon esta descripción entre comillas dobles. Ejemplo: "This project is protected by a lien"
  • LIEN_ORIGIN: cadena que indica el usuario o el sistema que ha originado la retención. Es un campo obligatorio, pero se rellena automáticamente con la dirección de correo del usuario si se omite.

Mostrar las retenciones de un proyecto

Para ver todos los embargos aplicados a un proyecto, usa el comando alpha resource-manager liens list.

gcloud alpha resource-manager liens list

El resultado debería ser similar al siguiente:

gcloud alpha resource-manager liens list
NAME                                                  ORIGIN            REASON
p1061081023732-l3d8032b3-ea2c-4683-ad48-5ca23ddd00e7  user@example.com  testing

Quitar gravámenes de un proyecto

Para quitar una retención de un proyecto, usa el comando alpha resource-manager liens delete.

gcloud alpha resource-manager liens delete LIEN_NAME

Sustituye LIEN_NAME por el nombre del gravamen que quieras eliminar, como p1061081023732-l3d8032b3-ea2c-4683-ad48-5ca23ddd00e7.

Referencias

Referencia de la API: recurso REST: liens