Control de acceso para carpetas con la IAM

Google Cloud ofrece la función de administración de identidades y accesos (IAM), que te permite brindar acceso más detallado a recursos específicos de Google Cloud y evita el acceso no deseado a otros recursos. IAM te permite adoptar el principio de seguridad de menor privilegio, de manera que solo otorgues el acceso necesario a tus recursos.

IAM te permite configurar políticas para controlar quién (usuarios) tiene qué acceso (funciones) a qué recursos. Las políticas de IAM asignan funciones específicas a un usuario, lo que le otorga ciertos permisos.

En esta página, se explican las funciones de IAM que están disponibles en el nivel de Carpetas, y cómo crear y administrar políticas de IAM para carpetas con la API de Resource Manager. Para ver una descripción detallada de IAM, lee la documentación de IAM. En particular, consulta Cómo otorgar, cambiar y revocar el acceso.

Descripción general de las funciones de IAM para las carpetas

Para ayudarte a configurar las funciones de IAM, se enumeran las siguientes tablas:

  • El tipo de acción que quieras habilitar
  • Las funciones requeridas para realizar esas acciones
  • El nivel de recursos en el que necesitas aplicar esas funciones
Tipo de acciones Funciones necesarias Nivel de recursos
Administrar carpetas en toda la organización Administrador de carpeta Organización
Administrar una carpeta y todos los proyectos y carpetas que contiene Administrador de carpeta Carpeta específica
Acceder y administrar las políticas de IAM de una carpeta Administrador de IAM de carpeta Carpeta específica
Crear carpetas nuevas Creador de la carpeta Recurso principal para la ubicación de las carpetas nuevas
Mover carpetas y proyectos Encargado de transferencia de la carpeta Recurso principal para la ubicación de la carpeta original y la ubicación de la carpeta nueva
Mover un proyecto a una carpeta nueva Editor del proyecto o Propietario del proyecto Recurso principal para la ubicación del proyecto original y la ubicación del proyecto nuevo
Borrar una carpeta Editor de carpetas o Administrador de carpetas Carpeta específica

Prácticas recomendadas para usar funciones y permisos de IAM con carpetas

Cuando asignas funciones y permisos de IAM para usar con carpetas, ten en cuenta lo siguiente:

  • Siempre que sea posible, usa grupos para administrar miembros.
  • Minimiza el uso de funciones básicas, como el propietario, el editor y el visualizador. En cambio, intenta usar las funciones predefinidas para el principio de privilegio mínimo.
  • Para la administración de toda la carpeta, asigna permisos a nivel de carpeta y haz que los proyectos los hereden de forma automática. Por ejemplo, puedes asignar la función Administrador de carpetas en la carpeta a un grupo de administradores de departamentos. Los administradores de red que necesitan tener permisos en todo el departamento pueden tener la función Administrador de red para la carpeta.
  • Considera con cuidado qué permisos pueden cambiar antes de mover un recurso fuera de una carpeta. De lo contrario, puedes correr el riesgo de romper las apps o los flujos de trabajo existentes que requieran esos permisos en ese recurso.
  • Planifica y prueba tu jerarquía de recursos con cuidado antes de mover los proyectos de producción a carpetas. Una forma de hacerlo es crear una carpeta de prueba en el recurso de tu organización y crear un prototipo de tu jerarquía prevista con anticipación.
  • Otorgar una función a un usuario en el nivel de carpeta también otorgará al usuario esa función para cada recurso en esa carpeta. Por ejemplo, si otorgas a un usuario la función Administrador de Compute (roles/compute.admin) en una carpeta, ese usuario tendrá el control total de todos los recursos de Compute Engine en cada proyecto en esa carpeta.

Comprende las funciones y los permisos de las carpetas

Funciones predeterminadas

Cuando creas una carpeta, se te otorgan las funciones Administrador de carpetas y Editor de carpetas de la carpeta para proporcionarte el control total como creador. Consulta a continuación los permisos que proporcionan estas funciones. Estas funciones predeterminadas se pueden cambiar a normales en una política de IAM.

Función Administrador de carpetas

La función Administrador de carpetas tiene todos los permisos de carpeta disponibles.

Otorga los siguientes permisos:

orgpolicy.policy.get permiso para obtener políticas de la organización en un recurso
resourcemanager.folders.get permiso para obtener una carpeta o carpetas descendientes
resourcemanager.folders.create permiso para crear una carpeta
resourcemanager.folders.list permiso para enumerar carpetas bajo un recurso
resourcemanager.folders.move permiso para mover carpetas fuera o dentro de un recurso
resourcemanager.folders.update permiso para actualizar el nombre de una carpeta
resourcemanager.folders.delete permiso para borrar una carpeta
resourcemanager.folders.undelete permiso para recuperar una carpeta
resourcemanager.folders.getIamPolicy permiso para obtener la política de IAM de una carpeta
resourcemanager.folders.setIamPolicy permiso para establecer la política de IAM de una carpeta
resourcemanager.projects.get permiso para obtener un proyecto
resourcemanager.projects.list permiso para enumerar proyectos bajo un recurso
resourcemanager.projects.move permiso para mover proyectos fuera o dentro de un recurso
resourcemanager.projects.getIamPolicy permiso para obtener la política de IAM de un proyecto
resourcemanager.projects.setIamPolicy permiso para establecer la política de IAM de un proyecto

Función de administrador de carpetas de IAM

La función Administrador de carpetas de IAM permite a los usuarios administrar las políticas de IAM en las carpetas.

Otorga los siguientes permisos:

resourcemanager.folders.get permiso para obtener una carpeta o carpetas descendientes
resourcemanager.folders.getIamPolicy permiso para obtener la política de IAM de una carpeta
resourcemanager.folders.setIamPolicy permiso para establecer la política de IAM de una carpeta

Función Creador de carpetas

La función Creador de carpetas otorga los permisos necesarios para explorar la jerarquía y crear carpetas.

Otorga los siguientes permisos:

orgpolicy.policy.get permiso para obtener políticas de la organización en un recurso
resourcemanager.folders.get permiso para obtener una carpeta
resourcemanager.folders.list permiso para enumerar carpetas bajo un recurso
resourcemanager.folders.create permiso para crear una carpeta
resourcemanager.projects.get permiso para obtener un proyecto
resourcemanager.projects.list permiso para enumerar proyectos bajo un recurso

Función Editor de carpetas

La función Editor de carpetas otorga permiso para modificar carpetas y también ver la política de IAM de una carpeta.

Otorga los siguientes permisos:

orgpolicy.policy.get permiso para obtener políticas de la organización en un recurso
resourcemanager.folders.get permiso para obtener una carpeta
resourcemanager.folders.list permiso para enumerar carpetas bajo un recurso
resourcemanager.folders.update permiso para actualizar el nombre de una carpeta
resourcemanager.folders.delete permiso para borrar una carpeta
resourcemanager.folders.undelete permiso para recuperar una carpeta
resourcemanager.folders.getIamPolicy permiso para configurar la política de IAM en una carpeta
resourcemanager.projects.get permiso para obtener un proyecto
resourcemanager.projects.list permiso para enumerar proyectos bajo un recurso

Función Encargado de transferencia de carpetas

La función Encargado de transferencia de carpetas otorga permiso para mover proyectos y carpetas dentro y fuera de una organización o carpeta principal.

Otorga los siguientes permisos:

resourcemanager.folders.move permiso para mover carpetas fuera o dentro de un recurso
resourcemanager.projects.move permiso para mover proyectos fuera o dentro de un recurso

Función Visualizador de carpetas

La función Visualizador de carpetas otorga permiso para obtener una carpeta y enumerar las carpetas y los proyectos que aparecen bajo un recurso.

Otorga los siguientes permisos:

orgpolicy.policy.get permiso para obtener políticas de la organización en un recurso
resourcemanager.folders.get permiso para obtener una carpeta o carpetas descendientes
resourcemanager.folders.list permiso para enumerar carpetas bajo un recurso
resourcemanager.projects.get permiso para obtener un proyecto
resourcemanager.projects.list permiso para enumerar proyectos bajo un recurso

Crea Funciones personalizadas

Además de las funciones predefinidas que se describen en esta documentación, también puedes crear funciones personalizadas, que son colecciones de permisos que puedes adaptar a tus necesidades. Cuando se crea una función personalizada para usar con Resource Manager, se debe prestar atención a los siguientes puntos:
  • Los permisos list y get, como resourcemanager.projects.get/list, siempre se deben otorgar como un par.
  • Cuando tu función personalizada incluye los permisos folders.list y folders.get, también debe incluir projects.list y projects.get.
  • Ten en cuenta que el permiso setIamPolicy para organizaciones, carpetas y proyectos permite al usuario otorgar todos los demás permisos, por lo que debe asignarse con cuidado.

Otorga funciones para habilitar la exploración de carpetas

Los permisos list permiten la exploración de carpetas. Los dos tipos de permisos de lista que deben otorgarse por lo general son resourcemanager.folders.list, que permite a los usuarios enumerar carpetas bajo un recurso, y resourcemanager.projects.list, que permite a los usuarios navegar por proyectos en una organización o carpeta. El administrador de la organización se inicializa con ambos permisos. Los usuarios a los que no se les asignó la función Administrador de la organización, pueden hacer lo siguiente:

  • Se puede otorgar resourcemanager.folders.list a través de las funciones Visualizador de carpetas y Editor de carpetas.
  • resourcemanager.projects.list se puede otorgar a través de las funciones Visualizador o Navegador.

Para que los miembros de la organización puedan explorar toda la jerarquía de la organización, los permisos de la lista deben otorgarse a nivel de la organización.

Otorga funciones para habilitar la creación de carpetas

A los usuarios que necesitan crear carpetas se les debe asignar la función Creador de carpetas en un recurso de la jerarquía por encima del nivel en el que se creará la carpeta. Puede ser útil otorgar permisos de navegación junto con permisos de creación de carpetas para que los usuarios puedan navegar efectivamente hacia el lugar de la jerarquía en el que se creará la carpeta. Consulta la sección anterior para obtener más información sobre los permisos de navegación.

El Creador de carpetas no otorga permisos a un usuario para borrar una carpeta. Sin embargo, cuando una persona crea una carpeta, a esa persona se le otorga automáticamente la función Editor de carpetas. La función Editor de carpetas permite que se eliminen carpetas.

Concede funciones para habilitar el movimiento de carpetas

A fin de mover una carpeta de un recurso principal a otro, los usuarios deben tener la función Encargado de la transferencia de la carpeta en los recursos principales antiguos y nuevos, o en un antecesor común.

Otorga funciones para permitir el movimiento de proyectos

A fin de mover un proyecto a una carpeta, los usuarios deben tener las funciones Editor del proyecto o Propietario del proyecto en el proyecto y el Encargado de la transferencia del proyecto en los recursos principales fuente y de destino.

Esto difiere levemente de los requisitos para mover a la organización un proyecto ajeno a una organización. En ese caso, los usuarios deben tener la función Editor de proyecto o Propietario del proyecto en el proyecto, y Creador del proyecto en la organización.

Otorga las funciones específicas de carpeta para permitir la creación de proyectos

Para crear proyectos, los usuarios deben tener la función Creador del proyecto. Sin embargo, en lugar de otorgar permisos de creación de proyectos a nivel de toda la organización, puede ser útil restringir a los usuarios a visualizar y crear proyectos solo dentro de una carpeta determinada.

Para otorgar permisos específicos de carpeta, sigue estos pasos:

  1. Otorga al usuario la función Visualizador de la organización a nivel del nodo de la organización (por ejemplo, dominio.com).
  2. Crea una carpeta nueva.
  3. Agrega el usuario a IAM en el nivel de carpeta y concédele las funciones Visualizador de carpeta y Creador del proyecto.

Esto permite al usuario crear proyectos en su carpeta sin otorgarles visibilidad de todos los proyectos en toda la organización.