En esta página, se describe cómo otorgar, cambiar y revocar el acceso a un recurso. Puedes otorgar diferentes niveles de acceso para los recursos que posees a diferentes usuarios mediante el uso de funciones de IAM específicas.
Puedes administrar las funciones de los usuarios con Cloud Console, la herramienta de línea de comandos de
gcloud
, la API de REST o las bibliotecas cliente. En la primera mitad de este artículo, se aborda el uso de Cloud Console, que es el método más sencillo, junto con las actualizaciones rápidas mediante la herramienta de línea de comandos de gcloud
.
En la segunda mitad, se abordará el uso de métodos programáticos para situaciones más complejas.
Si quieres usar IAM con Identity-Aware Proxy (IAP) para proteger el acceso a las aplicaciones, consulta la Documentación de IAP.
Antes de comenzar
- Lee acerca de las funciones de IAM disponibles.
Permisos necesarios
Para administrar el acceso a un proyecto, necesitas una función que incluya los siguientes permisos:
resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.setIamPolicy
Para obtener estos permisos y seguir el principio de privilegio mínimo, pídele a tu administrador que te otorgue una de las siguientes funciones:
- Administrador del proyecto de IAM (
roles/resourcemanager.projectIamAdmin
) - Administrador de seguridad (
roles/iam.securityAdmin
)
Como alternativa, el administrador puede otorgarte una función diferente con los permisos necesarios, como una función personalizada o una función predefinida con más permisos.
Usa Cloud Console
Usar Cloud Console es una forma rápida y sencilla de administrar las funciones de los miembros. Entre los miembros de IAM, se incluyen usuarios, cuentas de servicio, Grupos de Google y dominios.
Visualiza el acceso actual
A fin de ver qué funciones de IAM tienen los miembros en un proyecto y sus recursos, haz lo siguiente:
En Cloud Console, ve a la página IAM.
En la página, se muestran todos los miembros del proyecto que tienen funciones de IAM.
Opcional. Para ver las concesiones de funciones para las cuentas de servicio administradas por Google, selecciona Incluir subsidios de funciones que proporciona Google.
Otorga acceso
Para otorgar una función de IAM a un miembro en un proyecto, haz lo siguiente:
En Cloud Console, ve a la página IAM.
Haz clic en Agregar.
Ingresa una dirección de correo electrónico. Puedes agregar personas, cuentas de servicio o Grupos de Google como miembros, pero cada proyecto debe tener al menos una persona como miembro.
Selecciona una función. Las funciones les dan a los miembros el nivel adecuado de permisos. Para una mejor seguridad, se recomienda brindarle al miembro la menor cantidad de privilegios que necesite. Los miembros con permisos de propietario también son propietarios de proyectos y pueden gestionar todos los aspectos del proyecto, incluida su finalización.
Haz clic en Guardar.
Si deseas otorgar una función a un miembro en más de un proyecto, haz lo siguiente:
En Cloud Console, ve a la página Administrar recursos.
Selecciona todos los proyectos para los que deseas otorgar permisos.
Haz clic en Mostrar panel de información y, luego, en la pestaña Permisos.
Ingresa una dirección de correo electrónico en el campo Nuevos miembros y selecciona la función deseada en el menú desplegable.
Haz clic en Guardar. Al miembro se le otorga la función seleccionada en cada uno de los proyectos seleccionados.
Revoca el acceso
En Cloud Console, ve a la página IAM.
Identifica el miembro al que deseas revocarle el acceso y haz clic en el botón Editar
que se encuentra a la derecha.Haz clic en el botón Borrar
para cada función que desees revocar y, luego, haz clic en Guardar.
Modifica el acceso
No hay ningún procedimiento especial para modificar el acceso. Sigue los pasos para otorgar y revocar el acceso hasta que el miembro tenga las funciones deseadas.
Usa gcloud para obtener actualizaciones rápidas
Puedes agregar o revocar una sola función mediante los comandos add-iam-policy-binding
y remove-iam-policy-binding
de la herramienta de línea de comandos de gcloud
.
Otorga acceso
Para otorgarle una función a un miembro con rapidez, ejecuta el comando add-iam-policy-binding
de la herramienta de gcloud
:
gcloud group add-iam-policy-binding resource \ --member=member --role=role-id
Ingresa los siguientes valores:
group
: Es el grupo de herramientas degcloud
del recurso que deseas actualizar. Por ejemplo, puedes usarorganizations
oprojects
.resource
: Es el nombre del recurso.member
: Es un identificador para el miembro, que suele tener el formatomember-type:id
. Por ejemplo,user:my-user@example.com
. Si deseas obtener una lista completa de los valores quemember
puede tener, consulta la referencia sobre la vinculación de políticas.role-id
: Es el nombre de la función.
Por ejemplo, para otorgarle la función de visualizador al usuario my-user@example.com
en el proyecto my-project
, ejecuta este comando:
gcloud projects add-iam-policy-binding my-project \ --member=user:my-user@example.com --role=roles/viewer
Revoca el acceso
Para revocar una función de un usuario con rapidez, ejecuta el comando remove-iam-policy-binding
de la herramienta de gcloud
:
gcloud group remove-iam-policy-binding resource \ --member=member --role=role-id
Ingresa los siguientes valores:
group
: Es el grupo de herramientas degcloud
del recurso que deseas actualizar. Por ejemplo, puedes usarorganizations
oprojects
.resource
: Es el nombre del recurso.member
: Es un identificador para el miembro, que suele tener el formatomember-type:id
. Por ejemplo,user:my-user@example.com
. Si deseas obtener una lista completa de los valores quemember
puede tener, consulta la referencia sobre la vinculación de políticas.role-id
: Es el nombre de la función.
Por ejemplo, para revocar la función de visualizador del usuario my-user@example.com
en el proyecto my-project
, ejecuta este comando:
gcloud projects remove-iam-policy-binding my-project \ --member=user:my-user@example.com --role=roles/viewer
Controla el acceso de manera programática
En algunos casos de uso, es más sencillo administrar el control de acceso de manera programática. Puedes usar la herramienta de línea de comandos de gcloud
, la API de REST o las bibliotecas cliente para controlar el acceso de manera programática. Los métodos programáticos son útiles cuando se realizan actualizaciones automáticas o a gran escala que llevarían mucho tiempo en Cloud Console o mediante la ejecución de comandos de gcloud
para cada miembro.
Descripción general de la política de IAM
El acceso a un recurso se administra a través de una política de IAM. Una política es una colección de vinculaciones que asocian a un miembro, como una cuenta de usuario o de servicio, con una función. Las políticas se representan con JSON o YAML.
En el siguiente ejemplo, se muestra una política en la que se le otorgó la función de propietario a fatima@example.com
, y la función de editor a wei@example.com
y service-account-13@appspot.gserviceaccount.com
:
{
"bindings": [
{
"role": "roles/owner",
"members": [
"user:fatima@example.com"
]
},
{
"role": "roles/editor",
"members": [
"serviceAccount:service-account-13@appspot.gserviceaccount.com",
"user:wei@example.com"
]
}
],
"etag": "BwUjMhCsNvY=",
"version": 1
}
Actualizas una política para un recurso con el patrón de lectura-modificación-escritura. Esto significa que no hay métodos distintos para crear, modificar o revocar el acceso de los usuarios. En cambio, todas las modificaciones se hacen mediante lo siguiente:
- Lectura de la política actual mediante una llamada a
getIamPolicy()
- Edición de la política mostrada, ya sea mediante el uso de un editor de texto o de manera programática, para agregar o quitar a los miembros deseados y sus concesiones de funciones
- Escritura de la política actualizada mediante una llamada a
setIamPolicy()
Es común otorgar permisos para un proyecto o una organización completos. Sin embargo, también puedes establecer políticas de manera más detallada en una amplia gama de recursos de Google Cloud, como instancias de Compute Engine o depósitos de Cloud Storage. Para obtener una lista completa de las funciones y el nivel de recursos más bajo al que puedes otorgar cada función, consulta Comprende las funciones.
Obtén la política actual
gcloud
Ejecuta el comando get-iam-policy
para el recurso. En el siguiente ejemplo, se muestra el comando get-iam-policy
para proyectos:
gcloud projects get-iam-policy project-id --format=format > filepath
Ingresa los siguientes valores:
project-id
: Es el proyecto que deseas actualizar (por ejemplo,my-project
).format
: Es el valorjson
oyaml
.filepath
: Es la ruta a un nuevo archivo de salida de la política.
Por ejemplo, con el siguiente comando, se obtiene la política para el proyecto my-project
en formato JSON y se guarda en el directorio principal del usuario:
gcloud projects get-iam-policy my-project --format json > ~/policy.json
REST
El método projects.getIamPolicy
de la API de Resource Manager obtiene la política de IAM de un proyecto.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
project-id
: Es el ID del proyecto de Google Cloud.policy-version
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.
Método HTTP y URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": policy-version } }
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "user:project-owner@example.com" ] }, { "role": "roles/iam.securityReviewer", "members": [ "user:fatima@example.com" ] } ] }
C#
Antes de probar esta muestra, sigue las instrucciones de configuración para C# que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para C#.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración para Java que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Java.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Python.
Modifica una política
De manera programática o mediante un editor de texto, modifica la copia local de la política de tu proyecto para que refleje las funciones que deseas otorgar o revocar a determinados usuarios.
Otorga una función
Para otorgar funciones a los miembros, modifica las vinculaciones de funciones en la política. Para obtener información sobre qué funciones puedes otorgar, consulta Comprende las funciones.
Para otorgar una función que ya está incluida en la política, sigue estos pasos:
gcloud
Para otorgar una función, edita la política JSON o YAML que muestra el comando get-iam-policy
. Ten en cuenta que este cambio en la política se implementará una vez que hayas establecido la política actualizada.
En el siguiente ejemplo, se otorga la función de revisor de seguridad (roles/iam.securityReviewer
) a wei@example.com
.
A fin de otorgar esta función, agrega el usuario al arreglo members
para la vinculación:
{
"role": "roles/iam.securityReviewer",
"members": [
"user:fatima@example.com",
"user:wei@example.com"
]
}
REST
Para otorgar una función, edita la política JSON o YAML que muestra el comando get-iam-policy
. Ten en cuenta que este cambio en la política se implementará una vez que hayas establecido la política actualizada.
En el siguiente ejemplo, se otorga la función de revisor de seguridad (roles/iam.securityReviewer
) a wei@example.com
. A fin de otorgar esta función, agrega el usuario al arreglo members
para la vinculación:
{
"role": "roles/iam.securityReviewer",
"members": [
"user:fatima@example.com",
"user:wei@example.com"
]
}
C#
Antes de probar esta muestra, sigue las instrucciones de configuración para C# que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para C#.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración para Java que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Java.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Python.
Para otorgar una función que aún no está incluida en la política, agrega una nueva binding
.
gcloud
Para agregar una nueva vinculación, edita la política JSON o YAML que muestra el comando get-iam-policy
. Ten en cuenta que este cambio en la política se implementará una vez que hayas establecido la política actualizada.
En el siguiente ejemplo, se le otorga la función de lector a fatima@example.com
. Para otorgar esta función, agrega una vinculación nueva al arreglo bindings
de la política:
{
"role": "roles/reader",
"members": [
"user:fatima@example.com"
]
}
REST
Para agregar una nueva vinculación, edita la política JSON o YAML que muestra el comando get-iam-policy
. Ten en cuenta que este cambio en la política se implementará una vez que hayas establecido la política actualizada.
En el siguiente ejemplo, se le otorga la función de lector a fatima@example.com
. Para otorgar esta función, agrega una vinculación nueva al arreglo bindings
de la política:
{
"role": "roles/reader",
"members": [
"user:fatima@example.com"
]
}
C#
Antes de probar esta muestra, sigue las instrucciones de configuración para C# que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para C#.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración para Java que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Java.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Python.
Solo puedes otorgar funciones relacionadas con los servicios de API activados. Si un servicio, como Compute Engine, no está activo, no puedes otorgar funciones relacionadas exclusivamente con Compute Engine. Para obtener más información, consulta Habilitar e inhabilitar las API.
Hay algunas restricciones únicas cuando se otorgan permisos en proyectos, en particular, cuando se otorga la función de propietario. Consulta la documentación de referencia de projects.setIamPolicy()
para obtener más información.
Revoca una función
Para revocar una función, usa lo siguiente:
gcloud
Para revocar una función, edita la política JSON o YAML que muestra el comando get-iam-policy
. Este cambio en la política se implementará una vez que hayas establecido la política actualizada.
Para revocar una función de un miembro, borra los miembros o las vinculaciones que desees del arreglo bindings
de la política.
REST
Para revocar una función, edita la política JSON o YAML que muestra el comando get-iam-policy
. Este cambio en la política se implementará una vez que hayas establecido la política actualizada.
Para revocar una función de un miembro, borra los miembros o las vinculaciones que desees del arreglo bindings
de la política.
C#
Antes de probar esta muestra, sigue las instrucciones de configuración para C# que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para C#.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración para Java que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Java.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Python.
Establece una política
Una vez que hayas modificado la política para otorgar las funciones deseadas, llama a setIamPolicy()
con el fin de hacer las actualizaciones.
gcloud
Usa el comando set-iam-policy
y proporciona una ruta al archivo JSON que contiene la política actualizada: En el siguiente ejemplo, se muestra el comando set-iam-policy
para proyectos:
gcloud projects set-iam-policy project-id filepath
Ingresa los siguientes valores:
project-id
: Es el proyecto que deseas actualizar (por ejemplo,my-project
).filepath
: Es la ruta a un archivo que contiene la política nueva.
La respuesta contiene la política actualizada.
REST
El método projects.setIamPolicy
de la API de Resource Manager establece la política en la solicitud como la nueva política de IAM del proyecto.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
project-id
: Es el ID del proyecto de Google Cloud.policy
: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta la Referencia de políticas.
Método HTTP y URL:
POST https://cloudresourcemanager.googleapis.com/v1/projects/project-id:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": { policy } }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene la política actualizada.
C#
Java
Antes de probar esta muestra, sigue las instrucciones de configuración para Java que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Java.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran en la Guía de inicio rápido de IAM sobre el uso de bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de IAM para Python.
Para evitar colisiones si varias fuentes intentan actualizar la política de forma simultánea, la política contiene un valor de etag
. Cuando llamas a setIamPolicy()
, IAM compara el valor de etag
en la solicitud con el etag
existente y solo escribe la política si los valores coinciden.
Próximos pasos
- Obtén más información para administrar el acceso a las carpetas.
- Obtén más información para administrar el acceso a las organizaciones.
- Lee acerca de las funciones de IAM disponibles.
- Usa el solucionador de problemas de políticas a fin de comprender por qué un usuario tiene o no tiene acceso a un recurso o por qué tiene permiso para llamar a una API.
- Descubre cómo ver las funciones que puedes otorgar en un recurso en particular.
- Obtén más información sobre cómo hacer que el acceso de un miembro sea condicional con vinculaciones de funciones condicionales.
- Explora formas de proteger las aplicaciones con Identity-Aware Proxy.
Pruébalo tú mismo
Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
Comenzar gratis