En esta guía, se describe cómo puedes aplicar el principio de privilegio mínimo. Para ello, otorga acceso a recursos específicos de Compute Engine en lugar de a un recurso superior, como un proyecto, una carpeta o una organización.
Para otorgar acceso a un recurso, configura una política de administración de identidades y accesos (IAM) en el recurso. La política vincula a uno o más miembros, como un usuario o una cuenta de servicio, con una o más funciones. Cada función contiene una lista de permisos que permiten la interacción del miembro con el recurso.
Si otorgas acceso a un recurso superior (por ejemplo, a un proyecto), otorgas acceso de manera implícita a todos los recursos secundarios (por ejemplo, a todas las VM de ese proyecto). Para limitar el acceso a los recursos, establece las políticas de IAM en los recursos de nivel inferior cuando sea posible, en lugar de hacerlo a nivel de proyecto o a un nivel superior.
Para obtener información general sobre cómo otorgar, cambiar y revocar el acceso a los recursos no relacionados con Compute Engine, por ejemplo, a fin de otorgar acceso a un proyecto de Google Cloud, consulta la documentación de la IAM Otorga, cambia y revoca el acceso a los recursos.
Antes de comenzar
- Revisa la descripción general de la IAM.
- Lee la descripción general del control de acceso de Compute Engine.
- Familiarízate con las funciones de IAM para Compute Engine.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
-
Sigue estos pasos para otorgar o revocar el acceso a los recursos:
-
compute.projects.get
en el proyecto -
compute.RESOURCE_TYPE.get
en el recurso -
compute.RESOURCE_TYPE.getIamPolicy
en el recurso -
compute.RESOURCE_TYPE.setIamPolicy
en el recurso
-
-
Para probar los permisos del emisor, usa
compute.RESOURCE_TYPE.getIamPolicy
en el recursoReemplaza RESOURCE_TYPE por el recurso al que deseas administrar el acceso. Por ejemplo,
instances
,instanceTemplates
oimages
. - En la consola de Google Cloud, ve a la página de recursos correspondiente para la que deseas agregar permisos.
- Para instancias, ve a la página de instancias de VM.
- Para los discos zonales y regionales, ve a la página Discos.
- Para instantáneas, ve a la página de instantáneas.
- Para imágenes, ve a página de imágenes.
- Para plantillas de instancias, ve a la página Plantillas de instancias.
- Para imágenes de máquina, ve a la página Imágenes de máquina.
- Para reservas, ve a la página Reservas.
- Para nodos de usuario único, ve a la página Nodos de usuario único.
- Selecciona las casillas de verificación junto a los recursos que deseas actualizar.
- Completa los siguientes pasos en función de la página de recursos.
- Para las instancias de VM, haz clic en Permisos.
- Para todos los demás recursos, completa lo siguiente:
- Comprueba si el panel de información es visible. Si no está visible, haz clic en Mostrar panel de información.
- Selecciona la pestaña Permisos.
- Haz clic en Agregar principal.
- Agrega la identidad para la principal y selecciona el rol requerido.
- Para guardar los cambios, haz clic en Guardar.
RESOURCE_TYPE
: El tipo de recurso. Estos son algunos de los valores válidos:disks
images
instances
instance-templates
machine-images
reservations
sole-tenancy node-groups
sole-tenancy node-templates
snapshots
RESOURCE_NAME
: el nombre del recurso. Por ejemplo,my_instance
.PRINCIPAL
: Es una identidad válida para la principal a la que deseas otorgar el rol. Debe tener el formatouser|group|serviceAccount:EMAIL_ADDRESS
odomain:DOMAIN_ADDRESS
. Por ejemplo:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
ROLE
: Es el rol para asignar este principal.Lee la política existente con el método
getIamPolicy
correspondiente del recurso. Por ejemplo, la siguiente solicitud HTTP lee la política de IAM de una VM:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto al que pertenece esta VM.ZONE
: la zona de la VM. Para recursos regionales o globales, reemplazazones/ZONE
porregions/REGION
oglobal
VM_NAME
: El nombre de la instancia de VM
Compute Engine muestra la política actual en la respuesta.
Edita la política con un editor de texto para agregar o quitar miembros y sus roles asociados. Por ejemplo, para otorgar la función
compute.admin
a email@example.com, agrega la siguiente vinculación nueva a la política:{ "members": [ "user:email@example.com" ], "role":"roles/compute.admin" }
Escribe la política actualizada con
setIamPolicy()
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto al que pertenece esta VM.ZONE
: la zona de la VM. Para recursos regionales o globales, reemplazazones/ZONE
porregions/REGION
oglobal
VM_NAME
: El nombre de la instancia de VM
En el cuerpo de la solicitud, proporciona la política de IAM actualizada del paso anterior.
- En la consola de Google Cloud, ve a la página de recursos correspondiente para la que deseas agregar permisos.
- Para instancias, ve a la página de instancias de VM.
- Para los discos zonales y regionales, ve a la página Discos.
- Para instantáneas, ve a la página de instantáneas.
- Para imágenes, ve a página de imágenes.
- Para grupos de instancias, ve a la página Grupos de instancias.
- Para plantillas de instancias, ve a la página Plantillas de instancias.
- Para imágenes de máquina, ve a la página Imágenes de máquina.
- Para reservas, ve a la página Reservas.
- Para nodos de usuario único, ve a la página Nodos de usuario único.
- Selecciona las casillas de verificación junto a los recursos que deseas actualizar.
- Completa los siguientes pasos en función de la página de recursos.
- Para las instancias de VM, haz clic en Permisos.
- Para todos los demás recursos, completa lo siguiente:
- Comprueba si el panel de información es visible. Si no está visible, haz clic en Mostrar panel de información.
- Selecciona la pestaña Permisos.
- Haz clic en la tarjeta del rol que deseas quitar de los principales. De este modo, se expande la tarjeta y se muestra a los miembros con esa función en ese recurso.
- Para quitar un usuario de esa función, haz clic en Borrar.
RESOURCE_TYPE
: Tipo de recurso. Estos son algunos de los valores válidos:disks
images
instances
instance-templates
machine-images
reservations
sole-tenancy node-groups
sole-tenancy node-templates
snapshots
RESOURCE_NAME
: Nombre del recurso. Por ejemplo,my_instance
PRINCIPAL
: Una identidad válida para el principal. Debe tener el formatouser|group|serviceAccount:EMAIL_ADDRESS
odomain:DOMAIN_ADDRESS
. Por ejemplo:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
ROLE
: rol desde el que deseas quitar la identidadLee la política existente con el método
getIamPolicy
correspondiente del recurso. Por ejemplo, la siguiente solicitud HTTP lee la política de IAM de una VM:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:getIamPolicy
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto al que pertenece esta VM.ZONE
: la zona de la VM. Para recursos regionales o globales, reemplazazones/ZONE
porregions/REGION
oglobal
VM_NAME
: El nombre de la instancia de VM
Compute Engine muestra la política actual en la respuesta.
Edita la política con un editor de texto para quitar los miembros de las funciones asociadas. Por ejemplo, quita email@example.com de la función
compute.admin
:{ "members": [ "user:owner@example.com" ], "role":"roles/compute.admin" }
Escribe la política actualizada con
setIamPolicy()
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto al que pertenece esta VM.ZONE
: la zona de la VM. Para recursos regionales o globales, reemplazazones/ZONE
porregions/REGION
oglobal
VM_NAME
: El nombre de la instancia de VM
En el cuerpo de la solicitud, proporciona la política de IAM actualizada del paso anterior.
Envía una solicitud al recurso y, en su cuerpo, incluye una lista de los permisos que se deben verificar.
Por ejemplo, en una instancia, puedes verificar si hay
compute.instances.start
,compute.instances.stop
ycompute.instances.delete
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/testIamPermissions { "permissions": [ "compute.instances.start", "compute.instances.stop", "compute.instances.delete" ] }
La solicitud muestra los permisos que están habilitados para el emisor.
{ "permissions": [ "compute.instances.start", "compute.instances.stop" ] }
- Obtén más información sobre cómo administrar el acceso a las imágenes personalizadas con la IAM.
- Obtén más información sobre las cuentas de servicio.
- Obtén más información sobre las funciones de IAM de Compute Engine.
- Obtén más información sobre los permisos que se incluyen en las funciones predefinidas de IAM de Compute Engine.
- Obtén más información sobre cómo crear y administrar funciones personalizadas.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Roles obligatorios
Para obtener los permisos que necesitas para administrar el acceso a los recursos de Compute Engine, pídele a tu administrador que te otorgue el rol de IAM Administrador de Compute (
roles/compute.admin
) en el recurso. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.Este rol predefinido contiene los permisos necesarios para administrar el acceso a los recursos de Compute Engine. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para administrar el acceso a los recursos de Compute Engine:
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Recursos admitidos
Para ver una lista de los recursos de Compute Engine que admiten el control de acceso a nivel de los recursos, consulta los siguientes vínculos:Tipos de recursos que aceptan políticas de IAM y filtra porCompute Engine.
Para otros recursos de Compute Engine que no admiten el control de acceso a nivel de recurso, debes administrar el acceso a esos recursos a nivel de proyecto, carpeta u organización. Para obtener información sobre las organizaciones, las carpetas o los proyectos, consulta Jerarquía de recursos.
Otorga acceso a los recursos de Compute Engine
Un principal, como un usuario o una cuenta de servicio, puede acceder a los recursos de Compute Engine. Una identidad es una propiedad de una principal. La identidad de una principal suele representarse mediante una dirección de correo electrónico asociada a la cuenta.
Antes de otorgar una función de IAM a un usuario para algún recurso, comprueba qué funciones están disponibles en un recurso específico. Para obtener más información, consulta Visualiza las funciones otorgables en los recursos.
Para otorgar permisos a los usuarios a fin de que accedan a recursos específicos de Compute Engine, establece una política de IAM en el recurso.
Console
gcloud
Para otorgar una función a un principal en un recurso, usa el subcomando
add-iam-policy-binding
de ese recurso con las marcas--member
y--role
.gcloud compute RESOURCE_TYPE add-iam-policy-binding RESOURCE_NAME \ --member='PRINCIPAL' \ --role='ROLE'
Reemplaza lo siguiente:
Si otorgas acceso a un recurso que está en vista previa, usa un comando
gcloud beta compute
en su lugar.REST
Para modificar una política de IAM a través de la API, haz lo siguiente:
Revoca el acceso a los recursos
Una práctica recomendada es revocar el acceso de los miembros a tus recursos de Compute Engine cuando ya no lo necesiten.
Console
gcloud
Para quitar una función a una principal de un recurso, usa el subcomando
remove-iam-policy-binding
del recurso con las marcas--member
y--role
.gcloud compute RESOURCE_TYPE remove-iam-policy-binding RESOURCE_NAME \ --member='MEMBER' \ --role='ROLE'
Reemplaza lo siguiente:
Si quieres revocar el acceso a un recurso que, por el momento, se encuentra en versión Beta, usa un comando
gcloud beta compute
en su lugar.REST
Para modificar una política de IAM directamente a través de la API, haz lo siguiente:
Prueba si el emisor tiene permisos
Si no sabes qué permisos tiene una identidad, usa el método
testIamPermissions
de la API a fin de comprobar qué permisos están disponibles para una identidad.El método toma una URL de recurso y un conjunto de permisos como parámetros de entrada, y muestra el conjunto de permisos habilitados para el emisor. Puedes usar este método en cualquiera de los recursos compatibles.
Por lo general,
testIamPermissions
está diseñado para integrarse al software de propietario, como una interfaz gráfica de usuario personalizada. Por lo general, no se llama atestIamPermissions
si se usa Google Cloud directamente para administrar los permisos.Por ejemplo, si compilas una GUI sobre la API de Compute Engine y tiene un botón de “inicio” que inicia una instancia, puedes llamar a
compute.instances.testIamPermissions()
para determinar si se debe habilitar el botón o no.Para probar si un emisor tiene permisos específicos sobre un recurso, sigue estos pasos:
Modifica el acceso a los recursos para varios miembros
Si deseas modificar el acceso a los recursos de Compute Engine para varios miembros a la vez, revisa las recomendaciones sobre cómo modificar una política de IAM de manera programática.
¿Qué sigue?
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-12-22 (UTC)
-