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 Cloud IAM en el recurso. La política vincula a un miembro o más, como un usuario o una cuenta de servicio, con una función o más. 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, configura políticas de Cloud IAM en los recursos de nivel inferior cuando sea posible, en lugar de a nivel de proyecto o superior.

Si deseas obtener información general sobre cómo otorgar, cambiar y revocar el acceso a recursos no relacionados con Compute Engine, por ejemplo, a fin de otorgar acceso a un proyecto de Google Cloud, consulta la documentación de Cloud IAM para otorgar, cambiar y revocar el acceso a los recursos.

Antes de comenzar

Recursos admitidos

Compute Engine admite el control de acceso a nivel de los recursos para los siguientes recursos:

Otros recursos de Compute Engine no admiten el control de acceso a nivel de los recursos, por lo que debes administrar el acceso a otros tipos de recursos a nivel de proyecto, la carpeta o la 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

Antes de otorgar una función de Cloud IAM a un usuario para un recurso, verifica qué funciones están disponibles para otorgar en un recurso en particular. Para obtener más información, consulta Visualiza las funciones otorgables en los recursos.

A fin de otorgar permisos a los usuarios para acceder a recursos específicos de Compute Engine, establece una política de Cloud IAM en el recurso.

Console

  1. En Google Cloud Console, 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. Haz clic en Mostrar panel de información para expandir la columna de permisos.
  4. En el campo Agregar miembros, agrega uno o más miembros.
  5. En la lista Seleccionar una función, selecciona una función o más.
  6. Haz clic en Agregar para guardar los cambios.

gcloud

Para otorgar una función a un miembro en un recurso, usa el subcomando add-iam-policy-binding del recurso con las marcas --member y --role.

gcloud compute resource-type add-iam-policy-binding resource-name \
    --member='member' \
    --role='role'

Reemplaza los siguientes elementos:

  • resource-type: El tipo de recurso. Estos son algunos de los valores válidos:
    • disks
    • images
    • instances
    • instance-templates
    • regionDisks
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • resource-name: El nombre del recurso. Por ejemplo, my_instance
  • member: Una identidad válida a la que deseas otorgar la función. Debe tener el formato user|group|serviceAccount:email o domain:domain. Por ejemplo:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role: La función para asignar esta identidad

Si otorgas acceso a un recurso que, por el momento, se encuentra en versión Beta, usa un comando gcloud beta compute en su lugar.

API

Para modificar una política de Cloud IAM mediante la API, realiza las siguientes acciones:

  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 Cloud IAM de una VM:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:getIamPolicy

    Reemplaza los siguientes elementos:

    • project-id: 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
    • instance: 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 funciones asociadas. 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/instance:setIamPolicy

    Reemplaza lo siguiente:

    • project-id: 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
    • instance: El nombre de la instancia de VM

    En el cuerpo de la solicitud, proporciona la política de Cloud 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 Google Cloud Console, 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. Haz clic en Mostrar panel de información para expandir la columna de permisos.
  4. Haz clic en la tarjeta de función correspondiente al recurso del que deseas quitar miembros. Con esto, se expande la tarjeta y se muestra a los miembros con esa función en ese recurso.
  5. Haz clic en Borrar para quitar un miembro de esa función.

gcloud

Para quitar una función a un miembro en 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 los siguientes elementos:

  • resource-type: Tipo de recurso. Estos son algunos de los valores válidos:
    • disks
    • images
    • instances
    • instance-templates
    • regionDisks
    • sole-tenancy node-groups
    • sole-tenancy node-templates
    • snapshots
  • resource-name: Nombre del recurso. Por ejemplo, my_instance
  • member: La identidad que deseas quitar. Debe tener el formato user|group|serviceAccount:email o domain:domain. Por ejemplo:
    • user:test-user@gmail.com
    • group:admins@example.com
    • serviceAccount:test123@example.domain.com
    • domain:example.domain.com
  • role: Función desde la 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.

API

Para modificar una política de Cloud IAM directamente mediante la API, realiza las siguientes acciones:

  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 Cloud IAM de una VM:

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance:getIamPolicy

    Reemplaza los siguientes elementos:

    • project-id: el ID del proyecto para esta instancia de VM
    • zone: La zona de la VM. Para recursos regionales o globales, reemplaza zones/zone por regions/region o global
    • instance: 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/instance:setIamPolicy

    Reemplaza lo siguiente:

    • project-id: 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
    • instance: El nombre de la instancia de VM

    En el cuerpo de la solicitud, proporciona la política de Cloud 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/instance-name/setIamPolicy
        {
          "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 al mismo tiempo, revisa las recomendaciones sobre cómo modificar una política de Cloud IAM de manera programática.

Próximos pasos