Resumen

En esta página, se describen los conceptos básicos de Cloud Identity and Access Management (Cloud IAM).

Cloud IAM te permite otorgar acceso detallado a recursos específicos de Google Cloud y ayuda a evitar el acceso a otros recursos. Cloud IAM te permite adoptar el principio de seguridad de mínimo privilegio, en el que otorgas solo los permisos necesarios para acceder a recursos específicos.

Cómo funciona Cloud IAM

Para administrar el control de acceso con Cloud IAM, define quién (identidad) tiene qué acceso (función) a qué recurso. Por ejemplo, las instancias de máquinas virtuales de Compute Engine, los clústeres de Google Kubernetes Engine (GKE) y los depósitos de Cloud Storage son recursos de Google Cloud. Las organizaciones, las carpetas y los proyectos que usas para organizar tus recursos también son recursos.

En Cloud IAM, el permiso para acceder a un recurso no se otorga directamente al usuario final. En su lugar, los permisos se agrupan en funciones, y las funciones se otorgan a los miembros autenticados. Una Política de Cloud IAM define y aplica qué funciones se otorgan a qué miembros; esta política se vincula a un recurso. Cuando un miembro autenticado intenta acceder a un recurso, Cloud IAM verifica la política del recurso para determinar si la acción está permitida.

En el siguiente diagrama, se ilustra la administración de permisos en Cloud IAM.

Arquitectura de Cloud IAM

Este modelo de administración de acceso tiene tres partes principales:

  • Miembro. Un miembro puede ser una Cuenta de Google (para usuarios finales), una cuenta de servicio (para apps y máquinas virtuales), un Grupo de Google o un dominio de G Suite o Cloud Identity que pueda acceder a un recurso. La identidad de un miembro es una dirección de correo electrónico asociada con un usuario, una cuenta de servicio o un Grupo de Google, o un nombre de dominio asociado con dominios de G Suite o Cloud Identity.
  • Función. Una función es un grupo de permisos. Los permisos determinan qué operaciones están permitidas en un recurso. Cuando otorgas una función a un miembro, otorgas todos los permisos que la función contiene.
  • Política. La Política de Cloud IAM vincula a uno o más miembros con una función. Cuando desees definir quién (miembro) tiene qué tipo de acceso (función) en un recurso, debes crear una política y vincularla al recurso.

En el diagrama anterior, por ejemplo, la Política de Cloud IAM vincula al usuario final identificado con userid@gmail.com con la función de administrador de App Engine (roles/appengine.appAdmin). Si la política se vincula a un proyecto, el usuario userid@gmail.com tiene la función de administrador de App Engine dentro de ese proyecto. En este caso, el usuario puede ver, crear y actualizar todas las opciones de configuración de la app a nivel de proyecto para App Engine.

En el resto de esta página, se describen estos conceptos con más detalle.

En Cloud IAM, debes otorgar acceso a los miembros. Los miembros pueden pertenecer a algunos de los siguientes tipos:

  • Cuenta de Google
  • Cuenta de servicio
  • Grupo de Google
  • Dominio de G Suite
  • Dominio de Cloud Identity

Cuenta de Google

Una Cuenta de Google representa a un desarrollador, un administrador o cualquier otra persona que interactúe con Google Cloud. Cualquier dirección de correo electrónico asociada a una Cuenta de Google puede ser una identidad, incluidos gmail.com y otros dominios. Los usuarios nuevos pueden registrarse para obtener una Cuenta de Google en la página de registro de Cuentas de Google.

Cuenta de servicio

Una cuenta de servicio es una cuenta para una aplicación, en lugar de un usuario final individual. Cuando ejecutas código alojado en Google Cloud, el código se ejecuta como la cuenta que especifiques. Puedes crear tantas cuentas de servicio como sea necesario para representar los diferentes componentes lógicos de tu aplicación. Para obtener más información sobre el uso de una cuenta de servicio en tu aplicación, consulta Comenzar a usar la autenticación.

Grupo de Google

Un Grupo de Google es una colección de Cuentas de Google y cuentas de servicio que posee un nombre. Cada Grupo de Google tiene una dirección de correo electrónico única asociada con el grupo. Para encontrar la dirección de correo electrónico asociada con un Grupo de Google, haz clic en Acerca de en la página principal de cualquier Grupo de Google. Para obtener más información sobre los Grupos de Google, consulta la página principal de Grupos de Google.

Los Grupos de Google son una forma conveniente de aplicar una política de acceso a un grupo de usuarios. Puedes otorgar y cambiar los controles de acceso para un grupo completo de una sola vez, en lugar de hacerlo para usuarios individuales o cuentas de servicio uno por uno. También puedes agregar o quitar miembros de un Grupo de Google con facilidad, en lugar de actualizar una Política de Cloud IAM para agregar o quitar usuarios.

Los Grupos de Google no tienen credenciales de acceso y no puedes usarlos para establecer la identidad a fin de solicitar acceso a un recurso.

Dominio de G Suite

Un dominio de G Suite representa un grupo virtual de todas las Cuentas de Google que se crearon en la cuenta de G Suite de una organización. Los dominios de G Suite representan el nombre de dominio de Internet de tu organización (como example.com). Cuando agregas a un usuario a tu dominio de G Suite, se crea una nueva Cuenta de Google para el usuario dentro de este grupo virtual (como username@example.com).

Al igual que los Grupos de Google, los dominios de G Suite no se pueden usar para establecer la identidad, pero permiten la administración conveniente de permisos.

Dominio de Cloud Identity

Un dominio de Cloud Identity es como un dominio de G Suite porque representa un grupo virtual de todas las Cuentas de Google en una organización. Sin embargo, los usuarios del dominio de Cloud Identity no tienen acceso a las aplicaciones y características de G Suite. Para obtener más información, consulta la página sobre Cloud Identity.

allAuthenticatedUsers

El valor allAuthenticatedUsers es un identificador especial que representa a todas las cuentas de servicio y a todos los usuarios de Internet que se autenticaron con una Cuenta de Google. Este identificador incluye cuentas que no están conectadas a un dominio de G Suite o Cloud Identity, como Cuentas de Gmail personales. Los usuarios que no están autenticados, como los visitantes anónimos, no están incluidos.

allUsers

El valor allUsers es un identificador especial que representa a cualquier persona que esté en Internet, incluidos los usuarios autenticados y no autenticados.

Cuando un miembro autenticado intenta acceder a un recurso, Cloud IAM verifica la política de Cloud IAM del recurso para determinar si se permite la acción.

En esta sección, se describen las entidades y conceptos involucrados en el proceso de autorización.

Recurso

Si un usuario necesita acceder a un recurso específico de Google Cloud, puedes otorgar al usuario una función para ese recurso. Algunos de estos recursos son los proyectos, las instancias de Compute Engine y los depósitos de Cloud Storage.

Algunos servicios permiten que se otorguen permisos de Cloud IAM con un nivel de detalle mayor que el nivel de proyecto. Por ejemplo, puedes otorgar la función de administrador de almacenamiento (roles/storage.admin) a un usuario para un depósito de Cloud Storage específico o puedes otorgar la función de administrador de instancias de Compute (roles/compute.instanceAdmin) a un usuario para una instancia específica de Compute Engine.

En otros casos, puedes otorgar permisos de Cloud IAM a nivel de proyecto. Así, todos los recursos dentro de ese proyecto heredan los permisos. Por ejemplo, para otorgar acceso a todos los depósitos de Cloud Storage en un proyecto, otorga acceso al proyecto en lugar de a cada depósito individual. Para otorgar acceso a todas las instancias de Compute Engine en un proyecto, otorga acceso al proyecto en lugar de a cada instancia individual.

Si quieres obtener información sobre qué funciones se pueden otorgar en qué recursos, dirígete a Funciones predefinidas y consulta la columna Recurso más bajo para una función determinada.

Permisos

Los permisos determinan qué operaciones están permitidas en un recurso. En el mundo de Cloud IAM, los permisos se representan en la forma de <service>.<resource>.<verb>, por ejemplo, pubsub.subscriptions.consume.

Los permisos suelen coincidir uno a uno con los métodos de la API de REST. Es decir, cada servicio de Google Cloud tiene un conjunto de permisos asociado para cada método de la API de REST que expone. El emisor de ese método necesita esos permisos para la llamada. Por ejemplo, si usas Pub/Sub y necesitas llamar al método topics.publish(), debes tener el permiso pubsub.topics.publish para ese tema.

No otorgas permisos a los usuarios directamente. En su lugar, identificas las funciones que contienen los permisos adecuados y, luego, otorgas esas funciones al usuario.

Funciones

Una función es un grupo de permisos. No puedes otorgar un permiso directamente al usuario. En su lugar, les otorgas una función. Cuando otorgas una función a un usuario, le otorgas todos los permisos que contiene esa función.

Permiso para la asignación de Funciones

En Cloud IAM existen tres tipos de funciones:

  • Funciones básicas: Son funciones que siempre estuvieron disponibles en Google Cloud Console. Estas funciones son propietario, editor y visualizador. Si es posible, evita usar estas funciones, ya que incluyen una gran cantidad de permisos en todos los servicios de Google Cloud.

  • Funciones predefinidas: Funciones que brindan un control de acceso más detallado que las funciones básicas. Por ejemplo, la función predefinida de Publicador de Pub/Sub (roles/pubsub.publisher) proporciona acceso solo para publicar mensajes en un tema de Pub/Sub.

  • Funciones personalizadas: Son funciones que creas para adaptar los permisos a las necesidades de tu organización cuando las funciones predefinidas no las satisfacen.

Para obtener información sobre cómo otorgar una función a un usuario, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos. Para obtener información sobre las funciones predefinidas de Cloud IAM disponibles, consulta Comprende las funciones. Para obtener información sobre las funciones personalizadas, consulta Comprende las funciones personalizadas de IAM y Crea y administra funciones personalizadas.

Política de Cloud IAM

Puedes otorgar funciones a los usuarios mediante una política de Cloud IAM, que es una colección de declaraciones que definen quién tiene qué tipo de acceso. Una política se vincula a un recurso y se usa para aplicar el control de acceso cada vez que se accede a ese recurso.

Política de Cloud IAM

Una Política de Cloud IAM se representa con el objeto Policy de Cloud IAM. Un objeto Policy de Cloud IAM consiste en una lista de vinculaciones. Un Binding vincula una lista de members a una role.

  • role: La función que deseas otorgar al miembro. role se especifica con la forma roles/service.roleName. Por ejemplo, Cloud Storage proporciona las funciones roles/storage.objectAdmin, roles/storage.objectCreator y roles/storage.objectViewer, entre otras.

  • members: Una lista de una o más identidades, como se describe en la sección Conceptos relacionados con la identidad de este documento. Cada tipo de miembro se identifica con un prefijo, como una Cuenta de Google (user:), una cuenta de servicio (serviceAccount:), un Grupo de Google (group:) o un dominio de G Suite o Cloud Identity (domain:). En el siguiente fragmento de código de ejemplo, se otorga la función storage.objectAdmin a los siguientes miembros mediante el prefijo apropiado: user:alice@example.com, serviceAccount:my-other-app@appspot.gserviceaccount.com, group:admins@example.com y domain:google.com. La función objectViewer se otorga a user:bob@example.com.

En el siguiente fragmento de código, se muestra la estructura de una política de Cloud IAM.

{
      "bindings": [
        {
          "role": "roles/storage.objectAdmin",
           "members": [
             "user:alice@example.com",
             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
             "group:admins@example.com",
             "domain:google.com"
           ]
        },
        {
          "role": "roles/storage.objectViewer",
          "members": [
            "user:bob@example.com"
          ]
        }
      ]
    }
    

API de Política y de Cloud IAM

Cloud IAM proporciona un conjunto de métodos que puedes usar para crear y administrar políticas de control de acceso en los recursos de Google Cloud. Los servicios que son compatibles con Cloud IAM exponen estos métodos. Por ejemplo, Resource Manager, Pub/Sub y Cloud Life Sciences API exponen los métodos de Cloud IAM, por nombrar algunos.

A continuación, se describen los métodos de Cloud IAM:

  • setIamPolicy(): Configura políticas en tus recursos.
  • getIamPolicy(): Obtiene una política que se configuró con anterioridad.
  • testIamPermissions(): Comprueba si el emisor tiene los permisos especificados para un recurso.

Puedes encontrar los temas de referencia de la API para estos métodos en la documentación de cada servicio que admite Cloud IAM.

Jerarquía de políticas

Los recursos de Google Cloud están organizados de forma jerárquica de la siguiente manera:

  • La organización es el nodo raíz de la jerarquía.
  • Las carpetas son elementos secundarios de la organización.
  • Los proyectos son elementos secundarios de la organización o de una carpeta.
  • Los recursos de cada servicio son descendientes de proyectos.

Cada recurso tiene exactamente un recurso superior. Para obtener más información, consulta Jerarquía de recursos.

El siguiente diagrama es un ejemplo de una jerarquía de recursos de Google Cloud.

Jerarquía para los recursos de Cloud IAM.

Puedes establecer una política de Cloud IAM en cualquier nivel de la jerarquía de recursos: el nivel de organización, de carpeta, de proyecto o de recurso. Los recursos heredan las políticas del recurso superior. Si estableces una política en el nivel de organización, todos los proyectos secundarios la heredan de forma automática, y si estableces una política en el nivel de proyecto, la heredan todos sus recursos secundarios. La política vigente para un recurso es la unión de la política establecida en ese recurso y la política heredada de una jerarquía superior.

Esta herencia de políticas es transitiva; en otras palabras, los recursos heredan políticas de los proyectos, que heredan políticas de las carpetas, que heredan políticas de la organización. Por lo tanto, las políticas del nivel de organización también se aplican al nivel de recursos.

Por ejemplo: en el diagrama anterior, topic_a es un recurso de Pub/Sub que reside en el proyecto example-prod. Si otorgas la función de editor a micah@example.com en example-prod y la función de publicador a song@example.com en topic_a, lo que haces es otorgar la función de editor en topic_a a micah@example.com y la función de publicador a song@example.com.

En la jerarquía de políticas de Cloud IAM, se sigue la misma ruta que la jerarquía de recursos de Google Cloud. Si cambias la jerarquía de recursos, también cambia la jerarquía de políticas. Por ejemplo, si se mueve un proyecto a una organización, se actualiza su política de Cloud IAM para heredar la de la organización.

Las políticas secundarias no pueden restringir el acceso otorgado en un nivel superior. Por ejemplo, si otorgas a un usuario la función de editor para un proyecto y la de visualizador para un recurso secundario, el usuario tendrá la función de editor para ese recurso.

Compatibilidad de Cloud IAM con los servicios de Google Cloud

Con Cloud IAM, se verifica cada método de API en todos los servicios de Google Cloud a fin de garantizar que la cuenta que realiza la solicitud a la API tenga el permiso apropiado para acceder al recurso.

Antes de Cloud IAM, solo se podían otorgar las funciones de propietario, editor o visualizador. Estas funciones brindan un acceso muy amplio en un proyecto y no permiten la separación detallada de obligaciones. Los servicios de Google Cloud ahora ofrecen funciones predefinidas adicionales que brindan un control de acceso más detallado que las funciones de propietario, editor y visualizador. Por ejemplo, Compute Engine ofrece funciones como administrador de la instancia y administrador de la red, mientras que App Engine ofrece funciones como administrador de la app y administrador del servicio. Estas funciones predefinidas están disponibles además de las funciones básicas de propietario, editor y visualizador.

Las funciones predefinidas están disponibles para la mayoría de los servicios de Google Cloud. Para obtener más información, consulta Funciones predefinidas. Si necesitas aún más control sobre los permisos, considera crear una función personalizada.

Puedes otorgar a los usuarios ciertas funciones para acceder a los recursos con un nivel de detalle mayor que el nivel de proyecto. Por ejemplo, puedes crear una política de control de acceso de Cloud IAM que otorgue a un usuario la función de Suscriptor para un tema particular de Pub/Sub. La lista de todas las funciones predefinidas muestra el nivel más bajo, o el tipo más detallado, de recurso que acepta cada función.

Qué sigue