Descripción general

En esta página, se describen los conceptos básicos de la administración de identidades y accesos (IAM).

IAM te permite otorgar acceso detallado a recursos específicos de Google Cloud y ayuda a evitar el acceso a otros recursos. IAM te permite adoptar el principio de seguridad de mínimo privilegio de seguridad, que indica que nadie debe tener más permisos de los que realmente necesita.

Cómo funciona IAM

Para administrar el control de acceso con la 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 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 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, 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 IAM.

Arquitectura de 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 Google Workspace o de Cloud Identity que puede 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, un Grupo de Google o un nombre de dominio asociado con los dominios de Google Workspace 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 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 IAM vincula a los miembros, como userid@gmail.com, a funciones, como la función de administrador de App Engine (roles/appengine.appAdmin). Si la política se vincula a un proyecto, los miembros obtienen las funciones especificadas dentro de ese proyecto.

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

En IAM, otorgas acceso a los miembros. Los miembros se pueden clasificar en los siguientes tipos:

  • Cuenta de Google
  • Cuenta de servicio
  • Grupo de Google
  • Dominio de Google Workspace
  • 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 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 Google Workspace

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

Al igual que los Grupos de Google, no se pueden usar los dominios de Google Workspace 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 Google Workspace 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 las funciones de Google Workspace. Para obtener más información, consulta Acerca de 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 Google Workspace o a un dominio de 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, IAM verifica la política de IAM del recurso para determinar si la acción está permitida.

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 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 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 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. Para obtener una lista de todos los permisos disponibles y las funciones que los contienen, consulta la referencia de permisos.

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

Existen varios tipos de funciones en IAM:

  • Funciones básicas: Son las funciones que siempre estuvieron disponibles en Google Cloud Console. Son las funciones de propietario, editor y visualizador.

  • Funciones predefinidas: Son las 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 Otorga, cambia y revoca el acceso a los recursos. Para obtener información sobre las funciones predefinidas de IAM disponibles, consulta Comprende las funciones. Para obtener información sobre las funciones personalizadas, consulta Comprende las funciones personalizadas y Crea y administra funciones personalizadas.

Política de IAM

Puedes otorgar funciones a los usuarios mediante la creación de una política de 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 IAM.

El objeto Policy de IAM representa una política de IAM. Un objeto Policy de IAM consiste en una lista de vinculaciones. Una 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: Es 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:), un dominio de Google Workspace o de Cloud Identity (domain:). En el siguiente fragmento de código de ejemplo, se otorga la función de storage.objectAdmin a los siguientes miembros mediante el prefijo adecuado: user:ali@example.com , serviceAccount:my-other-app@appspot.gserviceaccount.com, group:admins@example.com y domain:google.com. Se otorga la función objectViewer a user:maria@example.com.

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

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

API de IAM y de políticas

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 la IAM exponen estos métodos. Por ejemplo, Resource Manager, Pub/Sub y Cloud Life Sciences API exponen los métodos de IAM, por nombrar algunos.

A continuación, se describen los métodos de 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 IAM.

Jerarquía de recursos

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 elemento 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 IAM.

Puedes establecer una política de 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 de todos sus recursos superiores. La política vigente para un recurso es la unión de las políticas establecidas en ese recurso y las políticas heredadas 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.

Las políticas de los recursos secundarios heredan de las políticas de sus recursos superiores. 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. Si cambias la jerarquía de recursos, también se cambia la herencia de políticas. Por ejemplo, mover un proyecto a una organización hace que este herede de la política de IAM de la organización.

Compatibilidad de IAM con los servicios de Google Cloud

Con 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 adecuado para usar el recurso.

Los servicios de Google Cloud ofrecen funciones predefinidas que proporcionan un control de acceso detallado. Por ejemplo, Compute Engine ofrece funciones como administrador de instancias de Compute y administrador de red de Compute. A su vez, App Engine ofrece funciones como administrador de App Engine y administrador de servicios de App Engine.

Las funciones predefinidas están disponibles para la mayoría de los servicios de Google Cloud. Para obtener más información, consulta la lista de todas las 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 IAM que otorgue a un usuario la función de suscriptor para un tema de Pub/Sub en particular. 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.

Próximos pasos