Administra el acceso a los recursos de Compute Engine


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 un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    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.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Funciones obligatorias

Para obtener los permisos que necesitas a fin de administrar el acceso a los recursos de Compute Engine, pídele a tu administrador que te otorgue el siguiente permiso:Administrador de Compute (roles/compute.admin ) función de IAM en el recurso. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

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:

  • 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 recurso

    Reemplaza RESOURCE_TYPE por el recurso al que deseas administrar el acceso. Por ejemplo, instances, instanceTemplates o images.

También puedes obtener estos permisos con funciones personalizadas o con otras funciones predefinidas

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

  1. En la consola de Google Cloud, ve a la página de recursos correspondiente para la que deseas agregar permisos.
  2. Selecciona las casillas de verificación junto a los recursos que deseas actualizar.
  3. 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:
      1. Comprueba si el panel de información es visible. Si no está visible, haz clic en Mostrar panel de información.
      2. Selecciona la pestaña Permisos.
  4. Haz clic en Agregar principal.
  5. Agrega la identidad para la principal y selecciona el rol requerido.
  6. Para guardar los cambios, haz clic en Guardar.

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:

  • 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 formato user|group|serviceAccount:EMAIL_ADDRESS o domain: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.

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:

  1. 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, reemplaza zones/ZONE por regions/REGION o global
    • VM_NAME: El nombre de la instancia de VM

    Compute Engine muestra la política actual en la respuesta.

  2. 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"
    }
    
  3. 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, reemplaza zones/ZONE por regions/REGION o global
    • 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.

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

  1. En la consola de Google Cloud, ve a la página de recursos correspondiente para la que deseas agregar permisos.
  2. Selecciona las casillas de verificación junto a los recursos que deseas actualizar.
  3. 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:
      1. Comprueba si el panel de información es visible. Si no está visible, haz clic en Mostrar panel de información.
      2. Selecciona la pestaña Permisos.
  4. 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.
  5. Para quitar un usuario de esa función, haz clic en Borrar.

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:

  • 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 formato user|group|serviceAccount:EMAIL_ADDRESS o domain: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 identidad

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:

  1. 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, reemplaza zones/ZONE por regions/REGION o global
    • VM_NAME: El nombre de la instancia de VM

    Compute Engine muestra la política actual en la respuesta.

  2. 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"
    }
    
  3. 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, reemplaza zones/ZONE por regions/REGION o global
    • 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.

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 a testIamPermissions 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:

  1. 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 y compute.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"
           ]
        }
  2. La solicitud muestra los permisos que están habilitados para el emisor.

    {
      "permissions": [
        "compute.instances.start",
        "compute.instances.stop"
      ]
    }
    

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?