Cuando agregas un miembro nuevo a tu proyecto, puedes usar una política de administración de identidades y accesos (IAM) para darle a ese miembro una o más funciones de IAM. Cada función de IAM contiene permisos que otorgan al miembro acceso a recursos específicos.
Compute Engine tiene un conjunto de funciones de IAM predefinidas que se describen en esta página. También puedes crear funciones personalizadas que contengan subconjuntos de permisos que se correspondan directamente con tus necesidades.
A fin de saber qué permisos son necesarios para cada método, consulta la documentación de referencia de la API de Compute Engine:
Para obtener información sobre cómo otorgar acceso, consulta las siguientes páginas.
- Para configurar políticas de IAM a nivel de proyecto, consulta Otorga, cambia y revoca el acceso a los recursos en la documentación de IAM.
- Para establecer políticas en recursos de Compute Engine específicos, lee Otorga acceso a los recursos de Compute Engine.
- Para asignar funciones a una cuenta de servicio de Compute Engine, lee Crea y habilita cuentas de servicio para instancias.
Antes de comenzar
- Lee la documentación de IAM.
¿Qué es IAM?
Google Cloud ofrece IAM, que te permite otorgar acceso detallado a recursos específicos de Google Cloud y evita el acceso no deseado a otros recursos. IAM te permite adoptar el principio de seguridad de menor privilegio, de manera que solo otorgas el acceso necesario a tus recursos.
IAM te permite controlar quién (identidad) tiene qué (funciones) permisos sobre qué recursos mediante la configuración de políticas de IAM. Las políticas de IAM asignan funciones específicas a un miembro del proyecto, lo que le otorga ciertos permisos a esa identidad. Por ejemplo, para un recurso determinado, como un proyecto, puedes asignar la función roles/compute.networkAdmin
a una Cuenta de Google, y esa cuenta puede controlar los recursos relacionados con la red en el proyecto, pero no puede administrar otros recursos, como instancias y discos. También puedes usar IAM para administrar las funciones heredadas de la consola de Google Cloud que se les otorgan a los miembros del equipo del proyecto.
El rol serviceAccountUser
Cuando se otorga junto con roles/compute.instanceAdmin.v1
, roles/iam.serviceAccountUser
brinda a los miembros la capacidad de crear y administrar instancias que usan una cuenta de servicio. En particular, si otorgas roles/iam.serviceAccountUser
y roles/compute.instanceAdmin.v1
juntos, los miembros reciben permiso para hacer lo siguiente:
- Crear una instancia que se ejecute como una cuenta de servicio
- Adjuntar un disco persistente a una instancia que se ejecuta como cuenta de servicio
- Establecer metadatos de instancia en una instancia que se ejecuta como cuenta de servicio
- Usar SSH para conectarse a una instancia que se ejecuta como cuenta de servicio
- Volver a configurar una instancia para ejecutarla como una cuenta de servicio
Puedes otorgar roles/iam.serviceAccountUser
de las siguientes formas:
Recomendada. Otorga la función a un miembro en una cuenta de servicio específica. Esto le da acceso a un miembro a la cuenta de servicio para la cual es un
iam.serviceAccountUser
, pero evita el acceso a otras cuentas de servicio para las cuales el miembro no es uniam.serviceAccountUser
.Otorga la función a un miembro en el nivel de proyecto. El miembro tiene acceso a todas las cuentas de servicio en el proyecto, incluidas las cuentas de servicio que se creen en el futuro.
Si no estás familiarizado con las cuentas de servicio, obtén más información sobre las cuentas de servicio.
Permiso de Google Cloud Console
Para usar Google Cloud Console a fin de acceder a los recursos de Compute Engine, debes tener una función que contenga los permisos siguientes en el proyecto:
compute.projects.get
Conéctate a una instancia como instanceAdmin
Después de otorgar la función roles/compute.instanceAdmin.v1
a un miembro del proyecto, este puede conectarse a instancias de máquina virtual (VM) mediante herramientas estándar de Google Cloud, como la CLI de gcloud o una conexión SSH en el navegador.
Cuando un miembro usa la CLI de gcloud o una conexión SSH en el navegador, las herramientas generan automáticamente un par de clave pública/privada y agregan la clave pública a los metadatos del proyecto. Si el miembro no tiene permisos para editar los metadatos del proyecto, la herramienta agrega la clave pública del miembro a los metadatos de la instancia.
Si el miembro tiene un par de claves existente que quiere usar, puede agregar su clave pública a los metadatos de la instancia de forma manual. Obtén más información para agregar claves SSH a una instancia.
IAM con cuentas de servicio
Crea nuevas cuentas de servicio personalizadas y otórgales funciones de IAM para limitar el acceso de tus instancias. Usa las funciones de IAM con cuentas de servicio personalizadas para hacer lo siguiente:
- Limitar el acceso de tus instancias a las API de Google Cloud mediante funciones de IAM detalladas
- Dar una identidad exclusiva a cada instancia o conjunto de instancias
- Limitar el acceso de tu cuenta de servicio predeterminada
Obtén más información sobre cuentas de servicio.
IAM y los grupos de instancias administrados
Los grupos de instancias administrados (MIG) son recursos que realizan acciones en tu nombre interactuar de forma directa con el usuario. Por ejemplo, el MIG puede agregar y quitar VM del grupo.
El agente de servicio de las API de Google del proyecto, que tiene todas las operaciones que realiza Compute Engine como parte del MIG, tiene una dirección de correo electrónico como la siguiente: PROJECT_ID@cloudservices.gserviceaccount.com
De forma predeterminada, el agente de servicio de las API de Google tiene el rol de editor (roles/editor
) a nivel de proyecto, que otorga privilegios suficientes para crear recursos en función de la configuración del MIG. Si personalizas el acceso para el agente de servicio de las API de Google, otorga el rol de administrador de instancias de Compute (v1) (roles/compute.instanceAdmin.v1
) y, de forma opcional, el rol de usuario de la cuenta de servicio (roles/iam.serviceAccountUser
). El rol de usuario de cuenta de servicio solo es necesario si el MIG crea VM que se puedan ejecutar como cuentas de servicio.
Ten en cuenta que otros procesos, incluido Deployment Manager, también usan el agente de servicios de las API de Google.
Cuando creas un MIG o actualizas su plantilla de instancias, Compute Engine valida que el agente de servicio de las API de Google tenga la siguiente función y permisos:
- Función de usuario de cuenta de servicio, que es importante si planeas crear instancias que puedan ejecutarse como cuenta de servicio
- Permisos para todos los recursos a los que se hace referencia en las plantillas de instancias, como imágenes, discos, redes de VPC y subredes
Funciones predefinidas de IAM en Compute Engine
Con la IAM, cada método de la API de Compute Engine requiere que la identidad que realiza la solicitud a la API tenga los permisos adecuados para usar el recurso. Los permisos se asignan mediante la configuración de políticas que otorgan funciones a un miembro (usuario, grupo o cuenta de servicio) del proyecto.
Además de las funciones básicas (visualizador, editor y propietario) y funciones personalizadas, puedes asignar las siguientes funciones predefinidas de Compute Engine a los miembros de tu proyecto.
Puedes otorgar varias funciones a un miembro del proyecto para un mismo recurso. Por ejemplo, si tu equipo de redes también administra las reglas de firewall, puedes otorgar roles/compute.networkAdmin
y roles/compute.securityAdmin
al grupo de Google del equipo de redes.
En las siguientes tablas, se describen las funciones predefinidas de IAM en Compute Engine, además de los permisos que contiene cada función. Cada función contiene un conjunto de permisos que es adecuado para una tarea específica. Por ejemplo, los roles de administrador de instancias otorgan permisos para administrar instancias, las funciones relacionadas con la red incluyen permisos para administrar recursos relacionados con la red, y la función de seguridad incluye permisos para administrar recursos relacionados con la seguridad, como firewalls y certificados SSL.
Algunos permisos se marcan como permisos de propietario con
Un permiso es un permiso de propietario si se cumple una de las siguientes condiciones: .- El permiso está en el rol básico de propietario, pero no en las roles básicos de visualizador o editor.
- El permiso no tiene ningún rol básico, pero permite que las principales realicen tareas que el propietario de una cuenta puede realizar, por ejemplo, administrar la facturación.
Función de administrador de Compute
Detalles | Permisos |
---|---|
Administrador de Compute( Control total de todos los recursos de Compute Engine. Si el usuario administrará instancias de máquinas virtuales que están configuradas para ejecutarse como una cuenta de servicio, también debes otorgar el rol Recursos de nivel más bajo en los que puedes otorgar este rol:
Contiene 33 permisos de propietario |
compute.*
resourcemanager.projects.get resourcemanager.projects.list serviceusage.quotas.get serviceusage.services.get serviceusage.services.list |
Función de usuario de imagen de Compute
Detalles | Permisos |
---|---|
Usuario de imagen de Compute( Es el permiso para enumerar y leer imágenes sin tener otros permisos en la imagen. Si se otorga este rol a nivel de proyecto, se les permite a los usuarios enumerar todas las imágenes del proyecto y crear recursos basados en estas, como instancias y discos persistentes. Recursos de nivel más bajo en los que puedes otorgar este rol:
|
compute.images.get compute.images.getFromFamily compute.images.list compute.images.useReadOnly resourcemanager.projects.get resourcemanager.projects.list serviceusage.quotas.get serviceusage.services.get serviceusage.services.list |
Función de administrador de instancias de Compute (Beta)
Detalles | Permisos |
---|---|
Administrador de instancias de Compute (beta)( Permisos para crear, modificar y borrar instancias de máquina virtual. Esto incluye los permisos para crear, modificar y borrar discos, y también configurar los ajustes de una VM protegida. Si el usuario administrará instancias de máquinas virtuales que están configuradas para ejecutarse como una cuenta de servicio, también debes otorgar el rol Por ejemplo, si tu empresa tiene una persona que administra grupos de instancias de máquinas virtuales, pero no administra la red, la configuración de seguridad ni las instancias que se ejecutan como cuentas de servicio, puedes otorgar este rol en la organización, carpeta o proyecto que contenga las instancias, o puedes otorgarla en instancias individuales. Recursos de nivel más bajo en los que puedes otorgar este rol:
Contiene 6 permisos de propietario |
compute.acceleratorTypes.*
compute. compute. compute.addresses.get compute.addresses.list compute.addresses.use compute.addresses.useInternal compute.autoscalers.*
compute.diskTypes.*
compute.disks.create compute.disks.createSnapshot compute.disks.delete compute.disks.get compute.disks.list compute.disks.resize compute.disks.setLabels compute. compute. compute. compute.disks.update compute.disks.use compute.disks.useReadOnly compute.globalAddresses.get compute.globalAddresses.list compute.globalAddresses.use
compute.
compute.globalOperations.get compute.globalOperations.list compute.images.get compute.images.getFromFamily compute.images.list compute.images.useReadOnly
compute.
compute.instanceGroups.*
compute.instanceTemplates.*
compute.instances.*
compute.licenses.get compute.licenses.list compute.machineImages.*
compute.machineTypes.*
compute.
compute.networks.get compute.networks.list compute.networks.use compute.networks.useExternalIp compute.projects.get
compute.
compute.regionOperations.get compute.regionOperations.list compute.regions.*
compute.reservations.get compute.reservations.list compute. compute.subnetworks.get compute.subnetworks.list compute.subnetworks.use compute. compute.targetPools.get compute.targetPools.list compute.zoneOperations.get compute.zoneOperations.list compute.zones.*
resourcemanager.projects.get resourcemanager.projects.list serviceusage.quotas.get serviceusage.services.get serviceusage.services.list |
Función de administrador de instancias de Compute (v1)
Detalles | Permisos |
---|---|
Administrador de instancias de Compute (v1)( Tiene control completo sobre instancias, grupos de instancias, instantáneas, imágenes y discos de Compute Engine. Acceso de lectura a todos los recursos de red de Compute Engine. Si le otorgas este rol a un usuario solo a nivel de instancia, ese usuario no podrá crear instancias nuevas. Contiene 18 permisos de propietario |
compute.acceleratorTypes.*
compute. compute. compute.addresses.get compute.addresses.list compute.addresses.use compute.addresses.useInternal compute.autoscalers.*
compute.backendBuckets.get compute.backendBuckets.list compute.backendServices.get compute.backendServices.list compute.diskTypes.*
compute.disks.*
compute. compute. compute.firewalls.get compute.firewalls.list compute.forwardingRules.get compute.forwardingRules.list compute.globalAddresses.get compute.globalAddresses.list compute.globalAddresses.use compute. compute. compute.
compute.
compute.globalOperations.get compute.globalOperations.list compute.healthChecks.get compute.healthChecks.list compute.httpHealthChecks.get compute.httpHealthChecks.list compute.httpsHealthChecks.get compute.httpsHealthChecks.list compute.images.*
compute.
compute.instanceGroups.*
compute.instanceTemplates.*
compute.instances.*
compute. compute.
compute.
compute.interconnects.get compute.interconnects.list compute.licenseCodes.*
compute.licenses.*
compute.machineImages.*
compute.machineTypes.*
compute.networkAttachments.get compute.
compute.
compute.networks.get compute.networks.list compute.networks.use compute.networks.useExternalIp compute.projects.get compute. compute. compute. compute. compute. compute.regionHealthChecks.get compute.
compute.
compute. compute. compute.regionOperations.get compute.regionOperations.list compute. compute. compute.regionSslPolicies.get compute.regionSslPolicies.list compute. compute. compute. compute. compute. compute. compute. compute.regionUrlMaps.get compute.regionUrlMaps.list compute.regions.*
compute.reservations.get compute.reservations.list compute.resourcePolicies.*
compute.routers.get compute.routers.list compute.routes.get compute.routes.list compute.serviceAttachments.get compute. compute.snapshots.*
compute.sslCertificates.get compute.sslCertificates.list compute.sslPolicies.get compute.sslPolicies.list compute. compute.subnetworks.get compute.subnetworks.list compute.subnetworks.use compute. compute.targetGrpcProxies.get compute.targetGrpcProxies.list compute.targetHttpProxies.get compute.targetHttpProxies.list compute.targetHttpsProxies.get compute. compute.targetInstances.get compute.targetInstances.list compute.targetPools.get compute.targetPools.list compute.targetSslProxies.get compute.targetSslProxies.list compute.targetTcpProxies.get compute.targetTcpProxies.list compute.targetVpnGateways.get compute.targetVpnGateways.list compute.urlMaps.get compute.urlMaps.list compute.vpnGateways.get compute.vpnGateways.list compute.vpnTunnels.get compute.vpnTunnels.list compute.zoneOperations.get compute.zoneOperations.list compute.zones.*
resourcemanager.projects.get resourcemanager.projects.list serviceusage.quotas.get serviceusage.services.get serviceusage.services.list |
Función de administrador de balanceador de cargas de Compute
Detalles | Permisos |
---|---|
Administrador de balanceador de cargas de Compute Beta( Permisos para crear, modificar y borrar balanceadores de cargas y recursos asociados. Por ejemplo, si tu empresa tiene un equipo de balanceo de cargas que administra balanceadores de cargas, certificados SSL para balanceadores de cargas, políticas SSL y otros recursos de balanceo de cargas y, además, tiene un equipo independiente de herramientas de redes que administra el resto de los recursos de herramientas de redes, debes otorgar este rol al grupo del equipo de balanceo de cargas. Recursos de nivel más bajo en los que puedes otorgar este rol:
Contiene 4 permisos de propietario |
certificatemanager. certificatemanager. certificatemanager. compute.addresses.*
compute.backendBuckets.*
compute.backendServices.*
compute. compute.disks.listTagBindings compute.forwardingRules.*
compute.globalAddresses.*
compute.
compute.
compute.healthChecks.*
compute.httpHealthChecks.*
compute.httpsHealthChecks.*
compute. compute.images.listTagBindings compute.instanceGroups.*
compute.instances.get compute.instances.list compute. compute. compute.instances.use compute.instances.useReadOnly
compute.
compute.networks.get compute.networks.list compute.networks.use compute.projects.get
compute.
|