Elige funciones predefinidas

La administración de identidades y accesos (IAM) proporciona varias funciones predefinidas para la mayoría de los servicios de Google Cloud. Cada función predefinida contiene los permisos necesarios para realizar una tarea o un grupo de tareas relacionadas.

Para tareas simples, suele ser sencillo encontrar una función predefinida adecuada. Por ejemplo, si una principal necesita ver los objetos en un bucket de Cloud Storage, es probable que la función de visualizador de objetos de almacenamiento (roles/storage.objectViewer) sea una buena opción.

Sin embargo, hay cientos de funciones predefinidas, lo que puede dificultar la identificación de las funciones más adecuadas para otorgar a tus principales. También puede ser difícil encontrar funciones que sigan el principio de privilegio mínimo, que indica que las principales no deben tener más permisos de los que realmente necesitan.

En esta página, se explica el proceso de elección de las funciones predefinidas más adecuadas:

  1. Identificar los permisos necesarios.
  2. Encontrar funciones que contengan los permisos.
  3. Elegir las funciones más adecuadas.
  4. Decidir dónde otorgar las funciones.
  5. Otorgar las funciones a una principal.

Identifica los permisos necesarios

A fin de identificar los permisos que necesita una principal, enumera las tareas que debe realizar y los servicios de Google Cloud que usará para esas tareas. Por ejemplo, es posible que un principal necesite usar Compute Engine para crear instancias de máquinas virtuales.

Después de identificar las tareas y los servicios, puedes usar algunas estrategias para identificar los permisos necesarios en cada tarea:

  • Consulta la documentación de los servicios de Google Cloud.

    En algunos servicios, las guías prácticas orientadas a tareas enumeran las funciones o los permisos que necesitas para cada tarea, ya sea en una sección “Antes de comenzar” o con las instrucciones para cada tarea. Por ejemplo, consulta los requisitos previos de Compute Engine para importar y exportar imágenes de VM.

    Otros servicios identifican las funciones y los permisos necesarios en una página sobre el control de acceso. Por ejemplo, consulta los permisos necesarios para las tareas de la consola de Google Cloud de Spanner.

  • Identifica los métodos de la API de REST o de RPC que usarías a fin de completar las tareas y verifica la documentación de referencia de la API para conocer los permisos de IAM necesarios.

    En algunos servicios, la documentación de la API de REST y de RPC enumera los permisos que requiere cada método. Por ejemplo, consulta la documentación de Compute Engine para el método instances.get.

  • Mira la lista de permisos para cada servicio y usa tu criterio a fin de buscar los permisos relevantes.

    En la mayoría de los casos, el nombre de cada permiso también describe lo que el permiso te permite hacer con él. Por ejemplo, el permiso para crear una instancia de VM de Compute Engine se llama compute.instances.create.

    Para ayudarte a comprender cada nombre de permiso, recuerda que se usa el formato SERVICE.RESOURCE_TYPE.ACTION.

En general, no es necesario identificar todos los permisos necesarios para cada tarea. En su lugar, concéntrate en identificar el permiso más relevante para cada tarea. Si una función predefinida contiene ese permiso, es probable que también contenga permisos relacionados.

Como parte de este proceso, también debes intentar identificar cuáles de los permisos necesarios son los más potentes. En general, se incluyen permisos más potentes en una cantidad menor de funciones predefinidas. Como resultado, si te enfocas en estos permisos, tendrás una lista más corta de las posibles funciones entre las que puedes elegir.

Por ejemplo, los siguientes tipos de permisos son especialmente potentes:

  • Permisos para crear y borrar recursos
  • Permisos para acceder a datos sensibles, como claves de encriptación o información de identificación personal (PII)
  • Permisos para configurar la política de permisos o de denegación de un recurso
  • Permisos para actualizar organizaciones, carpetas y proyectos, que pueden hacer que otros recursos hereden las actualizaciones

En cambio, los siguientes tipos de permisos son menos eficaces:

  • Permisos para enumerar recursos
  • Permisos para acceder a los datos no sensibles
  • Permisos para actualizar parámetros de configuración que tienen un riesgo limitado, como la plataforma de CPU mínima para las instancias de máquina virtual de Compute Engine

Encuentra funciones que contengan los permisos

Después de identificar los permisos necesarios, puedes buscar funciones predefinidas que contengan esos permisos y hacer una lista de funciones que podrían ser adecuadas. La forma más fácil de encontrar estos roles es mediante la referencia de permisos, que enumera todos los permisos de IAM y los roles que contienen cada permiso.

Para seguir el principio de privilegio mínimo, es posible que debas identificar más de una función predefinida a otorgar, en especial si los permisos necesarios pertenecen a varios servicios de Google Cloud. Por ejemplo, si una principal necesita ver objetos de Cloud Storage y administrar bases de datos de Cloud SQL, es poco probable que una función predefinida única contenga los permisos adecuados para ambos servicios. Si esta función existe, también puede incluir una gran cantidad de permisos no relacionados que la principal no necesita. A fin de reducir el riesgo, busca una función que contenga los permisos necesarios para Cloud Storage y otra que contenga los permisos necesarios para Cloud SQL.

Elige las funciones más apropiadas

Ahora que tienes una lista de las funciones predefinidas que pueden ser adecuadas, puedes elegir las funciones más adecuadas de la lista.

Comienza por quitar los siguientes tipos de funciones:

  • Para entornos de producción: funciones básicas, como Propietario (roles/owner), Editor (roles/editor) y Visualizador (roles/viewer).

    Las funciones básicas incluyen miles de permisos en todos los servicios de Google Cloud. No otorgues funciones básicas en entornos de producción a menos que no haya alternativa. En su lugar, otorga las funciones predefinidas más limitadas o las funciones personalizadas que satisfagan tus necesidades.

  • Funciones del agente de servicio, que suelen tener títulos que terminan en “Agente de servicio” y nombres que terminan en serviceAgent

    Estas funciones están destinadas a los agentes de servicio, que son un tipo especial de cuenta de servicio que usa el servicio de Google Cloud para acceder a los recursos. Los roles de agente de servicio tienden a contener permisos para varios servicios, que pueden incluir servicios a los que la principal no necesita acceder.

A continuación, usa la referencia de roles predefinidos o la página Roles en la consola de Google Cloud para enumerar los permisos que contiene cada función. Verifica cada rol para los permisos que no quieres que la principal tenga y elimina los roles que contengan permisos no deseados.

Si este proceso elimina todas las funciones predefinidas, considera crear una función personalizada para que se adapte a tu caso de uso. De lo contrario, elige la función o las funciones que contengan la menor cantidad de permisos sin dejar de satisfacer tus necesidades.

Decide dónde otorgar las funciones

Cuando otorgas una función, siempre la otorgas en un recurso de Google Cloud específico, que pertenece a una jerarquía de recursos. Los recursos de nivel inferior, como las instancias de VM de Compute Engine, heredan las funciones otorgadas en los recursos de nivel superior, como los proyectos, las carpetas y las organizaciones.

Elige dónde otorgar las funciones predefinidas que identificaste:

  • Si la principal necesita acceder a recursos específicos de nivel inferior, otorga las funciones en esos recursos.
  • Si la principal necesita acceso a muchos recursos dentro de un proyecto, organización o carpeta, otorga las funciones en el proyecto, la carpeta o la organización. Elige el recurso de nivel más bajo que satisfaga las necesidades de la principal.

    Además, considera usar las Condiciones de IAM para otorgar las funciones solo en recursos específicos dentro del proyecto, la carpeta o la organización.

Si identificaste varias funciones predefinidas, considera si debes otorgar las funciones en diferentes niveles de la jerarquía de recursos. Por ejemplo, si una principal necesita acceso a una sola base de datos de Cloud SQL, pero muchas instancias de VM de Compute Engine diferentes, es posible que desees otorgar la función para Cloud SQL en la base de datos y la función de Compute Engine en el proyecto.

Otorga las funciones a una principal

Ahora estás listo para otorgar las funciones a tu principal. Si deseas obtener información para otorgar funciones, consulta los siguientes vínculos:

Después de otorgar las funciones, puedes usar el Analizador de políticas y el solucionador de problemas de políticas para verificar a qué recursos puede acceder la principal y solucionar problemas de acceso.

Si la principal tiene los permisos previstos en los recursos correctos, pero no puede completar sus tareas, es posible que hayas pasado por alto un permiso que la principal necesita. Agrega los permisos necesarios a la lista para iterar sobre tu intento anterior. encontrar funciones que contengan esos permisos y elegir las funciones más adecuadas

Si otorgas una función con demasiados permisos por accidente, una recomendación de función podría sugerir una función menos permisiva que satisfaga las necesidades de la principal. Algunas vinculaciones de funciones no obtienen recomendaciones de funciones.

¿Qué sigue?