Administrar el acceso a los recursos de Compute Engine,Administrar el acceso a los recursos de Compute Engine


Esta página describe cómo puedes ejercer el principio de privilegio mínimo al otorgar acceso a recursos específicos de Compute Engine en lugar de otorgar acceso a un recurso principal, como un proyecto, carpeta u organización.

Usted otorga acceso a un recurso estableciendo una política de administración de identidad y acceso (IAM) en el recurso. La política vincula a uno o más miembros, como un usuario o una cuenta de servicio, a uno o más roles . Cada rol contiene una lista de permisos que permiten al miembro interactuar con el recurso.

Si otorga acceso a un recurso principal (por ejemplo, a un proyecto), implícitamente otorga acceso a todos sus recursos secundarios (por ejemplo, a todas las máquinas virtuales de ese proyecto). Para limitar el acceso a los recursos, establezca políticas de IAM en recursos de nivel inferior cuando sea posible, en lugar de en el nivel de proyecto o superior.

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

Antes de comenzar

Roles requeridos

Para obtener los permisos que necesita para administrar el acceso a los recursos de Compute Engine, solicite a su administrador que le otorgue la función de IAM de Administrador de Compute ( roles/compute.admin ) en el recurso. Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .

Esta función predefinida contiene los permisos necesarios para administrar el acceso a los recursos de Compute Engine. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :

Permisos requeridos

Se requieren los siguientes permisos para administrar el acceso a los recursos de Compute Engine:

  • 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 de la persona que llama: compute. RESOURCE_TYPE .getIamPolicy en el recurso

    Reemplace RESOURCE_TYPE con el recurso al que desea administrar el acceso. Por ejemplo, instances , instanceTemplates o images .

Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .

Recursos soportados

Para ver una lista de recursos de Compute Engine que admiten el control de acceso a nivel de recursos, consulte Tipos de recursos que aceptan políticas de IAM y filtros para Compute Engine .

Para otros recursos de Compute Engine que no admiten el control de acceso a nivel de recursos, debes administrar el acceso a esos recursos en los niveles de proyecto, carpeta u organización. Para obtener información sobre organizaciones, carpetas o proyectos, consulte Jerarquía de recursos .

Conceder acceso a los recursos de Compute Engine

Una entidad principal , como una cuenta de usuario o de servicio, puede acceder a los recursos de Compute Engine. Una identidad es una propiedad de un principal. La identidad de un principal suele estar representada por una dirección de correo electrónico asociada a la cuenta.

Antes de otorgar una función de IAM a una entidad principal para un recurso, verifique qué funciones están disponibles para otorgarse en un recurso en particular. Para obtener más información, consulte Ver las funciones que se pueden otorgar en los recursos .

Para otorgar permiso para acceder a recursos específicos de Compute Engine, establezca una política de IAM en el recurso.

Consola

  1. En la consola de Google Cloud, vaya a la página de recursos respectiva para la que desea agregar permisos.
  2. Seleccione las casillas de verificación junto a los recursos que desea actualizar.
  3. Complete los siguientes pasos según la página de recursos.
    • Para instancias de VM, haga clic en Permisos .
    • Para todos los demás recursos, complete lo siguiente:
      1. Compruebe si el panel de información está visible. Si no está visible, haga clic en Mostrar panel de información .
      2. Seleccione la pestaña Permisos .
  4. Haga clic en Agregar entidad principal .
  5. Agregue la identidad del principal y seleccione el rol requerido.
  6. Para guardar los cambios, haga clic en Guardar .

nube de gcloud

Para otorgar una función a una entidad principal en un recurso, use el subcomando add-iam-policy-binding de ese recurso con los indicadores --member y --role .

gcloud compute RESOURCE_TYPE add-iam-policy-binding RESOURCE_NAME \
    --member='PRINCIPAL' \
    --role='ROLE'

Reemplace lo siguiente:

  • RESOURCE_TYPE : el tipo de recurso. Los valores válidos incluyen:
    • 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 : una identidad válida para el principal al que desea otorgarle 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 : el rol para asignar a este director.

Si otorgas acceso a un recurso que está en versión preliminar, usa un comando gcloud beta compute en su lugar.

DESCANSAR

Para modificar una política de IAM a través de la API, haga lo siguiente:

  1. Lea la política existente con el método getIamPolicy respectivo 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

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto al que pertenece esta VM.
    • ZONE : la zona de la VM. Para recursos regionales o globales, reemplace zones/ ZONE con regions/ REGION o global .
    • VM_NAME : el nombre de la instancia de VM.

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

  2. Edite la política con un editor de texto para agregar o eliminar directores y sus roles asociados. Por ejemplo, para otorgar la función compute.admin a email@example.com, agregue el siguiente enlace nuevo a la política:

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Escriba la política actualizada con setIamPolicy() :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto al que pertenece esta VM.
    • ZONE : la zona de la VM. Para recursos regionales o globales, reemplace zones/ ZONE con regions/ REGION o global .
    • VM_NAME : el nombre de la instancia de VM.

    En el cuerpo de la solicitud, proporcione la política de IAM actualizada del paso anterior.

Revocar el acceso a los recursos

Como práctica recomendada, una vez que las entidades principales ya no necesiten acceso a sus recursos de Compute Engine, revoque su acceso.

Consola

  1. En la consola de Google Cloud, vaya a la página de recursos respectiva para la que desea agregar permisos.
  2. Seleccione las casillas de verificación junto a los recursos que desea actualizar.
  3. Complete los siguientes pasos según la página de recursos.
    • Para instancias de VM, haga clic en Permisos .
    • Para todos los demás recursos, complete lo siguiente:
      1. Compruebe si el panel de información está visible. Si no está visible, haga clic en Mostrar panel de información .
      2. Seleccione la pestaña Permisos .
  4. Haga clic en la tarjeta de función de la que desea eliminar los directores. Esto expande la tarjeta y muestra los usuarios con ese rol para ese recurso.
  5. Para eliminar un director de esa función, haga clic en Eliminar .

nube de gcloud

Para eliminar una función de una entidad principal para un recurso, use el subcomando remove-iam-policy-binding del recurso con los indicadores --member y --role .

gcloud compute RESOURCE_TYPE remove-iam-policy-binding RESOURCE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Reemplace lo siguiente:

  • RESOURCE_TYPE : tipo de recurso. Los valores válidos incluyen:
    • 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 del cual desea eliminar al principal.

Si estás revocando el acceso a un recurso que está en versión preliminar, usa un comando gcloud beta compute en su lugar.

DESCANSAR

Para modificar una política de IAM directamente a través de la API, haga lo siguiente:

  1. Lea la política existente con el método getIamPolicy respectivo 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

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto al que pertenece esta VM.
    • ZONE : la zona de la VM. Para recursos regionales o globales, reemplace zones/ ZONE con regions/ REGION o global .
    • VM_NAME : el nombre de la instancia de VM.

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

  2. Edite la política con un editor de texto para eliminar miembros de los roles asociados. Por ejemplo, elimine email@example.com de la función compute.admin :

    {
      "members": [
        "user:owner@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Escriba la política actualizada con setIamPolicy() :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto al que pertenece esta VM.
    • ZONE : la zona de la VM. Para recursos regionales o globales, reemplace zones/ ZONE con regions/ REGION o global .
    • VM_NAME : el nombre de la instancia de VM.

    En el cuerpo de la solicitud, proporcione la política de IAM actualizada del paso anterior.

Probar si una persona que llama tiene permisos

Si no sabe qué permisos tiene una identidad, utilice el método API testIamPermissions para 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 devuelve el conjunto de permisos que tiene permitido el autor de la llamada. Puede utilizar este método en cualquiera de los recursos admitidos .

Normalmente, testIamPermissions está diseñado para la integración con su software propietario, como una interfaz gráfica de usuario personalizada. Normalmente no llamas testIamPermissions si estás usando Google Clouddirectamente para gestionar los permisos.

Por ejemplo, si estás creando una GUI sobre la API de Compute Engine y tu GUI tiene un botón de "inicio" que inicia una instancia, puedes llamar a compute.instances.testIamPermissions() para determinar si el botón debe estar habilitado o deshabilitado.

Para probar si una persona que llama tiene permisos específicos en un recurso:

  1. Envíe una solicitud al recurso e incluya en el cuerpo de la solicitud una lista de permisos para verificar.

    Por ejemplo, en una instancia, puede verificar 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 devuelve los permisos habilitados para la persona que llama.

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

Modificar el acceso a recursos para varios miembros

Si desea modificar el acceso a los recursos de Compute Engine para varios miembros simultáneamente, revise las recomendaciones sobre cómo modificar una política de IAM mediante programación .

¿Qué sigue?

,

Esta página describe cómo puedes ejercer el principio de privilegio mínimo al otorgar acceso a recursos específicos de Compute Engine en lugar de otorgar acceso a un recurso principal, como un proyecto, carpeta u organización.

Usted otorga acceso a un recurso estableciendo una política de administración de identidad y acceso (IAM) en el recurso. La política vincula a uno o más miembros, como un usuario o una cuenta de servicio, a uno o más roles . Cada rol contiene una lista de permisos que permiten al miembro interactuar con el recurso.

Si otorga acceso a un recurso principal (por ejemplo, a un proyecto), implícitamente otorga acceso a todos sus recursos secundarios (por ejemplo, a todas las máquinas virtuales de ese proyecto). Para limitar el acceso a los recursos, establezca políticas de IAM en recursos de nivel inferior cuando sea posible, en lugar de en el nivel de proyecto o superior.

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

Antes de comenzar

Roles requeridos

Para obtener los permisos que necesita para administrar el acceso a los recursos de Compute Engine, solicite a su administrador que le otorgue la función de IAM de Administrador de Compute ( roles/compute.admin ) en el recurso. Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .

Esta función predefinida contiene los permisos necesarios para administrar el acceso a los recursos de Compute Engine. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :

Permisos requeridos

Se requieren los siguientes permisos para administrar el acceso a los recursos de Compute Engine:

  • 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 de la persona que llama: compute. RESOURCE_TYPE .getIamPolicy en el recurso

    Reemplace RESOURCE_TYPE con el recurso al que desea administrar el acceso. Por ejemplo, instances , instanceTemplates o images .

Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .

Recursos soportados

Para ver una lista de recursos de Compute Engine que admiten el control de acceso a nivel de recursos, consulte Tipos de recursos que aceptan políticas de IAM y filtros para Compute Engine .

Para otros recursos de Compute Engine que no admiten el control de acceso a nivel de recursos, debes administrar el acceso a esos recursos en los niveles de proyecto, carpeta u organización. Para obtener información sobre organizaciones, carpetas o proyectos, consulte Jerarquía de recursos .

Conceder acceso a los recursos de Compute Engine

Una entidad principal , como una cuenta de usuario o de servicio, puede acceder a los recursos de Compute Engine. Una identidad es una propiedad de un principal. La identidad de un principal suele estar representada por una dirección de correo electrónico asociada a la cuenta.

Antes de otorgar una función de IAM a una entidad principal para un recurso, verifique qué funciones están disponibles para otorgarse en un recurso en particular. Para obtener más información, consulte Ver las funciones que se pueden otorgar en los recursos .

Para otorgar permiso para acceder a recursos específicos de Compute Engine, establezca una política de IAM en el recurso.

Consola

  1. En la consola de Google Cloud, vaya a la página de recursos respectiva para la que desea agregar permisos.
  2. Seleccione las casillas de verificación junto a los recursos que desea actualizar.
  3. Complete los siguientes pasos según la página de recursos.
    • Para instancias de VM, haga clic en Permisos .
    • Para todos los demás recursos, complete lo siguiente:
      1. Compruebe si el panel de información está visible. Si no está visible, haga clic en Mostrar panel de información .
      2. Seleccione la pestaña Permisos .
  4. Haga clic en Agregar entidad principal .
  5. Agregue la identidad del principal y seleccione el rol requerido.
  6. Para guardar los cambios, haga clic en Guardar .

nube de gcloud

Para otorgar una función a una entidad principal en un recurso, use el subcomando add-iam-policy-binding de ese recurso con los indicadores --member y --role .

gcloud compute RESOURCE_TYPE add-iam-policy-binding RESOURCE_NAME \
    --member='PRINCIPAL' \
    --role='ROLE'

Reemplace lo siguiente:

  • RESOURCE_TYPE : el tipo de recurso. Los valores válidos incluyen:
    • 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 : una identidad válida para el principal al que desea otorgarle 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 : el rol para asignar a este principal.

Si otorgas acceso a un recurso que está en versión preliminar, usa un comando gcloud beta compute en su lugar.

DESCANSAR

Para modificar una política de IAM a través de la API, haga lo siguiente:

  1. Lea la política existente con el método getIamPolicy respectivo 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

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto al que pertenece esta VM.
    • ZONE : la zona de la VM. Para recursos regionales o globales, reemplace zones/ ZONE con regions/ REGION o global .
    • VM_NAME : el nombre de la instancia de VM.

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

  2. Edite la política con un editor de texto para agregar o eliminar directores y sus roles asociados. Por ejemplo, para otorgar la función compute.admin a email@example.com, agregue el siguiente enlace nuevo a la política:

    {
      "members": [
        "user:email@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Escriba la política actualizada con setIamPolicy() :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto al que pertenece esta VM.
    • ZONE : la zona de la VM. Para recursos regionales o globales, reemplace zones/ ZONE con regions/ REGION o global .
    • VM_NAME : el nombre de la instancia de VM.

    En el cuerpo de la solicitud, proporcione la política de IAM actualizada del paso anterior.

Revocar el acceso a los recursos

Como práctica recomendada, una vez que las entidades principales ya no necesiten acceso a sus recursos de Compute Engine, revoque su acceso.

Consola

  1. En la consola de Google Cloud, vaya a la página de recursos respectiva para la que desea agregar permisos.
  2. Seleccione las casillas de verificación junto a los recursos que desea actualizar.
  3. Complete los siguientes pasos según la página de recursos.
    • Para instancias de VM, haga clic en Permisos .
    • Para todos los demás recursos, complete lo siguiente:
      1. Compruebe si el panel de información está visible. Si no está visible, haga clic en Mostrar panel de información .
      2. Seleccione la pestaña Permisos .
  4. Haga clic en la tarjeta de función de la que desea eliminar los directores. Esto expande la tarjeta y muestra los usuarios con ese rol para ese recurso.
  5. Para eliminar un director de esa función, haga clic en Eliminar .

nube de gcloud

Para eliminar una función de una entidad principal para un recurso, use el subcomando remove-iam-policy-binding del recurso con los indicadores --member y --role .

gcloud compute RESOURCE_TYPE remove-iam-policy-binding RESOURCE_NAME \
    --member='MEMBER' \
    --role='ROLE'

Reemplace lo siguiente:

  • RESOURCE_TYPE : tipo de recurso. Los valores válidos incluyen:
    • 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 del cual desea eliminar al principal.

Si estás revocando el acceso a un recurso que está en versión preliminar, usa un comando gcloud beta compute en su lugar.

DESCANSAR

Para modificar una política de IAM directamente a través de la API, haga lo siguiente:

  1. Lea la política existente con el método getIamPolicy respectivo 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

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto al que pertenece esta VM.
    • ZONE : la zona de la VM. Para recursos regionales o globales, reemplace zones/ ZONE con regions/ REGION o global .
    • VM_NAME : el nombre de la instancia de VM.

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

  2. Edite la política con un editor de texto para eliminar miembros de los roles asociados. Por ejemplo, elimine email@example.com de la función compute.admin :

    {
      "members": [
        "user:owner@example.com"
      ],
      "role":"roles/compute.admin"
    }
    
  3. Escriba la política actualizada con setIamPolicy() :

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME:setIamPolicy

    Reemplace lo siguiente:

    • PROJECT_ID : el ID del proyecto al que pertenece esta VM.
    • ZONE : la zona de la VM. Para recursos regionales o globales, reemplace zones/ ZONE con regions/ REGION o global .
    • VM_NAME : el nombre de la instancia de VM.

    En el cuerpo de la solicitud, proporcione la política de IAM actualizada del paso anterior.

Probar si una persona que llama tiene permisos

Si no sabe qué permisos tiene una identidad, utilice el método API testIamPermissions para 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 devuelve el conjunto de permisos que tiene permitido el autor de la llamada. Puede utilizar este método en cualquiera de los recursos admitidos .

Normalmente, testIamPermissions está diseñado para la integración con su software propietario, como una interfaz gráfica de usuario personalizada. Normalmente no llamas testIamPermissions si estás usando Google Clouddirectamente para gestionar los permisos.

Por ejemplo, si estás creando una GUI sobre la API de Compute Engine y tu GUI tiene un botón de "inicio" que inicia una instancia, puedes llamar a compute.instances.testIamPermissions() para determinar si el botón debe estar habilitado o deshabilitado.

Para probar si una persona que llama tiene permisos específicos en un recurso:

  1. Envíe una solicitud al recurso e incluya en el cuerpo de la solicitud una lista de permisos para verificar.

    Por ejemplo, en una instancia, puede verificar 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 devuelve los permisos habilitados para la persona que llama.

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

Modificar el acceso a recursos para varios miembros

Si desea modificar el acceso a los recursos de Compute Engine para varios miembros simultáneamente, revise las recomendaciones sobre cómo modificar una política de IAM mediante programación .

¿Qué sigue?