Gestionar el acceso a los recursos protegidos mediante IAP

En esta página se describe cómo gestionar el acceso individual o de grupo a los recursos protegidos con Identity-Aware Proxy (IAP) a nivel de recurso.

Información general

Puedes usar IAP para configurar políticas de IAP para recursos individuales y de Cloud Run en un Google Cloud proyecto. Varias aplicaciones de un proyecto pueden tener políticas de acceso diferentes. Esto incluye proyectos que tienen aplicaciones de Compute Engine, Google Kubernetes Engine y App Engine. En el caso de las aplicaciones de App Engine, se pueden aplicar diferentes políticas de acceso a versiones y servicios concretos.

Para gestionar el acceso a nivel de proyecto y superior, usa la página de administrador de gestión de identidades y accesos. Las listas de usuarios que tienen acceso (los "principales") a nivel de proyecto se aplican a todos los recursos protegidos mediante IAP del proyecto.

Antes de empezar

Antes de empezar, necesitarás lo siguiente:

  • Un recurso protegido mediante IAP al que quieras añadir acceso individual o de grupo.
  • Nombres de usuarios o grupos a los que quieras añadir acceso.

Activar y desactivar IAP

Para activar y desactivar las compras en la aplicación, se necesitan ciertos permisos. En la siguiente tabla se muestra el permiso necesario para cada tipo de aplicación.

Tipo de aplicación Permiso requerido
App Engine appengine.applications.update
Compute Engine, Google Kubernetes Engine o Cloud Run compute.backendServices.update

Estos permisos se conceden mediante roles como Editor de proyectos, Administrador de App Engine y Administrador de redes de Compute. Aunque estas funciones permiten activar y desactivar las compras en la aplicación, no tienen los permisos necesarios para modificar las políticas de acceso.

Además, activar las compras en la aplicación con la Google Cloud consolaclientauthconfig.clients.create puede requerir los permisos clientauthconfig.clients.update y clientauthconfig.clients.getWithSecret. Estos permisos se conceden mediante el rol Editor de proyecto.

Para obtener más información sobre cómo conceder roles, consulta Conceder, cambiar y revocar el acceso.

Gestionar el acceso en la consola Google Cloud

Para controlar el acceso a un recurso protegido mediante IAP con laGoogle Cloud consola, sigue el proceso para añadir o quitar el acceso.

Añadir acceso

  1. Ve a la página Identity-Aware Proxy.
    Ir a la página Identity-Aware Proxy

  2. Selecciona el recurso que quieras proteger con compras en la aplicación. Las siguientes selecciones de recursos protegen un grupo de recursos determinado:

    • Todos los servicios web: se protegerán todos los recursos del proyecto. Ten en cuenta que no es lo mismo que conceder acceso a nivel de proyecto con la página de administrador de IAM. Un usuario al que se le haya asignado el rol Administrador de políticas de IAP a nivel del recurso Todos los servicios web solo tendrá permisos para las políticas de IAP.

    • Servicios de backend: todos los servicios de backend estarán protegidos.

  3. En el panel de información de la derecha, añade las direcciones de correo de los grupos o las personas a los que quieras conceder un rol de gestión de identidades y accesos (IAM) para el recurso.

  4. Aplica roles de política de acceso al principal seleccionando uno de los siguientes roles en el menú desplegable Selecciona un rol:

    • Propietario: concede el mismo acceso que Administrador de políticas de IAP. Usa el rol Administrador de políticas de compras en aplicaciones. Este rol solo permite modificar políticas y no da acceso a la aplicación.

    • Administrador de políticas de IAP: cuenta con derechos de administrador sobre las políticas de IAP.

    • Usuario de aplicaciones web protegidas mediante IAP: dispone de acceso a la aplicación y a otros recursos HTTPS que usan IAP.

    • Revisor de seguridad: concede permiso para ver y auditar las políticas de IAP.

  5. Cuando hayas terminado de añadir direcciones de correo y asignar roles, haz clic en Añadir.

Quitar acceso

  1. Ve a la página Identity-Aware Proxy.
    Ir a la página Identity-Aware Proxy
  2. Selecciona el recurso protegido con IAP.
  3. En el panel de información de la derecha, selecciona la sección que corresponda al rol que quieras quitar de un principal.
  4. En la sección ampliada, junto al nombre de cada usuario o grupo al que quieras quitar el rol, haz clic en Quitar.
  5. En el cuadro de diálogo Quitar principal que aparece, haga clic en Quitar.

Gestionar el acceso con la API

IAM proporciona un conjunto estándar de métodos para crear y gestionar políticas de control de acceso en los Google Cloud recursos.

Recursos y permisos

La API IAP te permite aplicar permisos de gestión de identidades y accesos a recursos concretos de un proyecto protegido mediante IAP. Los permisos de gestión de identidades y accesos concedidos en un nivel determinado se aplican a todos los niveles inferiores. Por ejemplo, un permiso concedido a nivel de proyecto se aplica a todos los recursos del proyecto. Google Cloud El acceso a nivel de proyecto y superior se gestiona en la página de administración de gestión de identidades y accesos, pero se mostrará en la página de administración de IAP.

Los usuarios necesitan ciertos permisos para acceder a una aplicación protegida por compras en la aplicación. Para conceder estos permisos, los administradores pueden usar una API para actualizar las políticas de gestión de identidades y accesos. El permiso iap.webServiceVersions.accessViaIAP concede acceso de usuario a una aplicación. Si usas IAP para controlar el acceso a servicios administrativos, como SSH y RDP, los usuarios necesitarán el permiso iap.tunnelInstances.accessViaIAP.

Cada recurso de IAP tiene sus propios permisos getIamPolicy y setIamPolicy, que permiten gestionar las políticas de acceso de ese recurso y de sus elementos secundarios.

Para llamar a la API IAM, crea una llamada con una ruta de URL a un recurso. A continuación, se muestra una llamada de ejemplo que obtiene la política de IAM de una versión de servicio de una aplicación de App Engine.

https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy

En la siguiente tabla se indican los tipos de recursos admitidos, así como los permisos necesarios para llamar a la API IAM.

Tipo de recurso Permisos
Todas las aplicaciones web protegidas mediante IAP del proyecto
Es lo mismo que la casilla Todos los servicios web de la página de administración de IAP.

Ruta
https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web
iap.web.getIamPolicy

iap.web.setIamPolicy
Todos los servicios de backend del proyecto
Es lo mismo que la casilla Servicio de backend de la página de administrador de IAP.

Rutas
ámbito global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute

Ámbito regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Todas las reglas de reenvío del proyecto
Permisos para todas las reglas de reenvío del proyecto.

Rutas
ámbito global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule

Ámbito regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Una región por cada servicio de Cloud Run del proyecto
Permisos para todos los servicios de Cloud Run de una región del proyecto.

Ruta
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/cloud_run-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Un servicio de Cloud Run
Permisos de un servicio de Cloud Run. Todos los servicios de Cloud Run son regionales.

Ruta
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/cloud_run-REGION_NAME/services/SERVICE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Una aplicación de App Engine
Es lo mismo que la casilla Aplicación de App Engine de la página de administrador de IAP.

Ruta
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Un servicio de backend de Compute Engine:
la ruta del servicio de backend puede especificar el ID del servicio de backend o el nombre del servicio de backend.

Rutas
ámbito global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute/services/
BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME

Ámbito regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME/
services/BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Una regla de reenvío de Compute Engine
Permisos de una regla de reenvío. La ruta de la regla de reenvío puede especificar el ID o el nombre de la regla de reenvío.

Rutas
ámbito global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule/services/
FORWARDING_RULE_ID or FORWARDING_RULE_NAME

Ámbito regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule-REGION_NAME/
services/FORWARDING_RULE_ID or FORWARDING_RULE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Un servicio de aplicación de App Engine

Ruta
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
An App Engine service version
Compute Engine doesn't support versioning.

Path
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID/versions/VERSION_ID
iap.webServiceVersions.getIamPolicy

iap.webServiceVersions.setIamPolicy
Todas las instancias de VM protegidas mediante IAP del proyecto
Es lo mismo que la casilla Todos los recursos de túnel de la página de administración de IAP.

Ruta
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel
iap.tunnel.getIamPolicy

iap.tunnel.setIamPolicy
Una zona que tenga al menos una instancia de máquina virtual:
es lo mismo que una casilla de verificación de nombre de zona en la página de administración de IAP, como us-central1-c.

Ruta
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
iap.tunnelZones.getIamPolicy

iap.tunnelZones.setIamPolicy
Una instancia de máquina virtual individual

Ruta
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
/instances/INSTANCE_ID or INSTANCE_NAME
iap.tunnelInstances.getIamPolicy

iap.tunnelInstances.setIamPolicy
Una región que tenga al menos un grupo de destino, por ejemplo, us-central1

Ruta
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
iap.tunnelLocations.getIamPolicy

iap.tunnelLocations.setIamPolicy
Un grupo de destino individual

Ruta
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
/destGroups/GROUP_NAME
iap.tunnelDestGroups.getIamPolicy

iap.tunnelDestGroups.setIamPolicy

Roles

En la siguiente tabla se indican los roles de gestión de identidades y accesos de IAP, así como una lista de todos los permisos específicos de IAP que incluye cada rol. Para obtener más información sobre los roles de gestión de identidades y accesos, consulta el artículo sobre gestión de roles y permisos.

Rol Incluye permisos Descripción
Usuario de aplicaciones web protegidas mediante IAP (roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP Concede acceso a los recursos de App Engine y Compute Engine.
Usuario de túneles protegidos mediante IAP (roles/iap.tunnelResourceAccessor) iap.tunnelInstances.accessViaIAP
iap.tunnelDestGroups.accessViaIAP
Concede acceso a las instancias de VM protegidas por IAP.
Administrador de políticas de IAP (roles/iap.admin) iap.web.getIamPolicy
iap.web.setIamPolicy
iap.webTypes.getIamPolicy
iap.webTypes.setIamPolicy
iap.webServices.getIamPolicy
iap.webServices.setIamPolicy
iap.webServiceVersions.getIamPolicy
iap.webServiceVersions.setIamPolicy
iap.tunnel.getIamPolicy
iap.tunnel.setIamPolicy
iap.tunnelZones.getIamPolicy
iap.tunnelZones.setIamPolicy
iap.tunnelInstances.getIamPolicy
iap.tunnelInstances.setIamPolicy
Concede derechos de administrador de IAP para gestionar las políticas de acceso de IAP de los recursos.

Gestionar el acceso con Google Cloud CLI

También puedes gestionar el acceso con la CLI de Google Cloud.

Denegar acceso

Las políticas de denegación de Gestión de Identidades y Accesos (IAM) te permiten definir medidas de protección para el acceso a los recursos de Google Cloud . Para ver una lista de situaciones en las que las políticas de denegación son útiles, consulta los casos prácticos.

Puedes crear políticas de denegación e incluir todos los permisos de IAP en esas políticas. Para ver la lista de permisos de compras en aplicaciones que puedes añadir a una política de denegación, consulta Permisos admitidos en las políticas de denegación y busca iap.googleapis.com. Aunque las políticas de denegación se pueden aplicar a cualquier permiso de compra en la aplicación, su eficacia está vinculada a un punto de acoplamiento de la política de denegación.

Algunos permisos de IAP solo son efectivos en su nivel de recurso específico y no en sus descendientes. Por ejemplo, iap.organizations.getSettings da acceso a getSettings a nivel de organización, pero no a los descendientes de la organización. Esto significa que los administradores deben enumerar explícitamente todos los permisos pormenorizados pertinentes al crear políticas de denegación para denegar el acceso en un punto de acoplamiento y sus descendientes.

Para ver una lista completa de estos permisos granulares, consulta Permisos admitidos en las políticas de denegación. Todos los permisos del nombre de dominio completo iap.googleapis.com y los tipos de recursos iap.organizations, iap.folders, iap.projects, iap.web, iap.webTypes, iap.webServices y iap.webServicesVersions son permisos granulares.

A continuación, se muestra un ejemplo de política de denegación de gestión de identidades y accesos para denegar el acceso a la API getSettings a una entidad de una organización y sus descendientes.

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
  "uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
  "kind": "DenyPolicy",
  "displayName": "Only project admins can delete projects.",
  "etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
  "createTime": "2021-09-07T23:15:35.258319Z",
  "updateTime": "2021-09-07T23:15:35.258319Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/public:all"
        ],
        "deniedPermissions": [
          "iap.googleapis.com/iap.organizations.getSettings",
          "iap.googleapis.com/iap.folders.getSettings",
          "iap.googleapis.com/iap.projects.getSettings",
          "iap.googleapis.com/iap.web.getSettings",
          "iap.googleapis.com/iap.webTypes.getSettings",
          "iap.googleapis.com/iap.webServices.getSettings",
          "iap.googleapis.com/iap.webServicesVersions.getSettings",
        ],
      }
    }
  ]
}

En lugar de especificar todos los permisos granulares, a continuación se muestra un ejemplo de política de gestión de identidades y accesos de denegación con un solo permiso: *.getSettings.

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
  "uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
  "kind": "DenyPolicy",
  "displayName": "Only project admins can delete projects.",
  "etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
  "createTime": "2021-09-07T23:15:35.258319Z",
  "updateTime": "2021-09-07T23:15:35.258319Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/public:all"
        ],
        "deniedPermissions": [
          "iap.googleapis.com/*.getSettings",
        ],
      }
    }
  ]
}

A continuación, se indican algunas formas más sencillas de crear una política de gestión de identidades y accesos de denegación sin tener que especificar todos los permisos detallados.

Acción de administrador Permiso en la política de denegación
Denegar permisos de IAP específicos en todos los tipos de recursos de IAP *.updateSettings
*.getSettings
*.setIamPolicy
*.getIamPolicy
Denegar todos los permisos de IAP en un tipo de recurso específico iap.organizations.*
iap.folders.*
iap.projects.*
iap.web.*
iap.webTypes.*
iap.webServices.*
iap.webServicesVersions.*

Acceso público

Para dar acceso a un recurso a todos los usuarios, asigna un rol a uno de los siguientes principales:

  • allAuthenticatedUsers: cualquier persona que se autentique con una cuenta de Google o una cuenta de servicio.
  • allUsers: cualquier persona que tenga acceso a Internet, incluidos los usuarios autenticados y no autenticados. El encabezado firmado de la solicitud no tendrá una sub ni una email reclamación.

Si se concede acceso público, IAP no generará registros de auditoría de Cloud para la solicitud.

Actualmente, los enlaces que conceden acceso público no pueden tener una condición asociada. Por ejemplo, una política que permite que cualquier persona acceda a un recurso si la ruta de la solicitud empieza por /public/ no es válida.