Administra el acceso a los recursos protegidos con IAP

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

Descripción general

IAP te permite configurar las políticas de IAP para recursos individuales y de Cloud Run en un proyecto de Google Cloud. Es posible que las distintas aplicaciones de un proyecto tengan sus propias políticas de acceso, incluidos proyectos con aplicaciones como Compute Engine, Google Kubernetes Engine y App Engine. En el caso de las aplicaciones de App Engine, pueden aplicarse distintas políticas de acceso para las versiones individuales y los servicios.

Para administrar el nivel de proyecto y un mayor acceso, usa la página de administrador de IAM. Las listas de usuarios que tienen acceso (los "principales") a nivel del proyecto se aplican a todos los recursos protegidos con IAP del proyecto.

Antes de comenzar

Necesitarás lo siguiente antes de comenzar:

  • Un recurso protegido con IAP al que quieres agregarle una o el acceso a grupos.
  • Nombres de usuarios o grupos a los que deseas agregarles acceso

Activación y desactivación de IAP

Para activar y desactivar IAP, se necesitan ciertos permisos. La siguiente tabla muestra los permisos necesarios para cada tipo de aplicación.

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

Estos permisos se otorgan mediante funciones, como el editor de proyectos, el administrador de App Engine y el administrador de red de Compute. Si bien estas funciones permiten activar o desactivar IAP, no tienen los permisos necesarios para modificar las políticas de acceso.

Además, activar IAP con la consola de Google Cloud también puede requerir los permisos clientauthconfig.clients.create y clientauthconfig.clients.getWithSecret. La función de editor de proyectos otorga estos permisos.

Para obtener más información sobre cómo otorgar funciones, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.

Administra el acceso en la consola de Google Cloud

Para controlar el acceso a un recurso protegido con IAP mediante la console de Google Cloud, sigue el proceso para agregar o quitar el acceso.

Agregar acceso

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

  2. Selecciona el recurso que deseas proteger con IAP. Las siguientes selecciones de recursos aseguran un conjunto determinado de ellos:

    • Todos los servicios web: se protegerán todos los recursos del proyecto. Ten en cuenta que esto no es lo mismo que otorgar acceso a nivel de proyecto con la página de administrador de IAM. Un usuario que tenga la función de administrador de políticas de IAP en el nivel de recursos Todos los servicios web solo tendrá permisos para las políticas de IAP.

    • Servicios de backend: se protegerán todos los servicios de backend.

  3. En el panel de información a la derecha, agrega las direcciones de correo electrónico de los grupos. o personas a las que deseas otorgar un rol de Identity and Access Management (IAM) para el recurso.

  4. Aplica las funciones asignadas al miembro respecto de las políticas de acceso. Para ello, selecciona una de las siguientes funciones en el menú desplegable Seleccionar una función:

    • Propietario: Otorga el mismo acceso que la función de Administrador de políticas de IAP. Usa en cambio la función de administrador de políticas de IAP. Esta función solo permite modificar políticas, no otorga acceso a la aplicación.

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

    • Usuario de aplicaciones web protegido con IAP: Otorga acceso a la aplicación y a otros recursos HTTPS que usan IAP.

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

  5. Cuando termines de agregar direcciones de correo electrónico y de configurar las funciones, haz clic en Agregar.

Quitar acceso

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

Administra el acceso con API

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

Recursos y permisos

La API de IAP te permite aplicar permisos de IAM a recursos individuales en un proyecto protegido con IAP. Los permisos de IAM otorgados a un nivel determinado se aplican a todos los niveles por debajo de este. Por ejemplo, un permiso otorgado a nivel de proyecto se aplica a todos los recursos de Google Cloud del proyecto. El acceso a nivel de proyecto y superior se administra en la página de administrador de IAM, pero se mostrará en la página de administrador de IAP.

Los usuarios necesitan ciertos permisos para acceder a una app protegida con IAP. Para otorgar estos permisos, los administradores pueden usar una API para actualizar las políticas de IAM. El El permiso iap.webServiceVersions.accessViaIAP otorga al usuario acceso a una app. Si Usas IAP para controlar el acceso a servicios administrativos como SSH y RDP, los usuarios necesitarán el iap.tunnelInstances.accessViaIAP permiso.

Cada recurso de IAP tiene su propio permiso getIamPolicy y setIamPolicy que le otorga la capacidad de administrar las políticas de acceso para ese recurso y sus elementos secundarios.

Para llamar a la API de IAM, crea una llamada con una ruta de URL hacia un recurso. El siguiente es un ejemplo del tipo de llamada que recibe la política de IAM para acceder a una versión del servicio de la aplicación 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 enumeran los tipos de recursos admitidos y los permisos necesarios para llamar a la API de IAM.

Tipo de recurso Permisos
Todas las aplicaciones web protegidas con IAP del proyecto
Esto es igual a la casilla de verificación Todos los servicios web en 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
Esto es igual a la casilla de verificación Servicio de backend en la página de administración de IAP.

Rutas de acceso
Alcance global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute

Alcance 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
Alcance global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule

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

iap.webTypes.setIamPolicy
Una app de App Engine
Esto es igual a la casilla de verificación Aplicación de App Engine en la página de administración 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
Alcance global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute/services/
BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME

Alcance 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 para 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
Alcance global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule/services/
FORWARDING_RULE_ID or FORWARDING_RULE_NAME

Alcance 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 app 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
Cada instancia de VM protegida con IAP en el proyecto
Esto es igual a la casilla de verificación Todos los recursos de túnel en 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 VM
Esto es igual a la casilla de verificación Nombre de zona en la página de administración de IAP, por ejemplo, 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 VM 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 tiene 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

Funciones

En la siguiente tabla, se enumeran las funciones de IAM de IAP con una lista correspondiente de todos los permisos específicos de IAP que incluye cada función. Para obtener más información sobre las funciones de IAM, consulta Administración de funciones y permisos.

Función Permisos incluidos Descripción
Usuario de aplicación web protegida con IAP (roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP Otorga acceso a los recursos de App Engine y Compute Engine.
Usuario de túnel protegido con IAP (roles/iap.tunnelResourceAccessor) iap.tunnelInstances.accessViaIAP
iap.tunnelDestGroups.accessViaIAP
Otorga acceso a 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
Otorga derechos administrativos de IAP para administrar las políticas de acceso de IAP de los recursos.

Administra el acceso con Google Cloud CLI

Deniega el acceso

Las políticas de denegación de Identity and Access Management (IAM) te permiten configurar protecciones para el acceso a los recursos de Google Cloud. Para obtener una lista de situaciones en las que las políticas de denegación son útiles, consulta use-cases.

Puedes crear políticas de denegación e incluir todos los permisos de IAP en esas políticas. Para obtener la lista de permisos de IAP que puedes agregar 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 pueden aplicarse permisos de IAP, su eficacia está vinculada a una política de denegación punto de conexión.

Algunos permisos de IAP solo son efectivos en su recurso específico y no en sus elementos subordinados. Por ejemplo, iap.organizations.getSettings otorga acceso a getSettings a nivel de la organización y no a sus elementos secundarios. Esto significa que los administradores deben enumerar explícitamente permisos detallados y relevantes cuando se crean políticas de denegación para denegar el acceso a un y sus elementos subordinados.

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

El siguiente es un ejemplo de una política de denegación de IAM para rechazar el acceso a la API de getSettings a una principal en una organización y su y sus elementos subordinados.

{
  "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 detallados, el siguiente es un ejemplo de la política de denegación de IAM 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 incluyen algunas formas más simples de crear una política de rechazo de IAM sin tener que especificar todos los permisos detallados.

Acción del administrador Permiso en la política de denegación
Cómo denegar permisos de IAP específicos en todos los tipos de recursos de IAP *.updateSettings
*.getSettings
*.setIamPolicy
*.getIamPolicy
Cómo 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 otorgar a todos el acceso a un recurso, asigna un rol a una de las siguientes opciones: principales:

  • allAuthenticatedUsers: Cualquier persona que esté autenticada con una Cuenta de Google o una cuenta de servicio.
  • allUsers: Cualquier persona que esté en Internet, incluidos los usuarios autenticados y no autenticados. El encabezado firmado para la solicitud no tendrá una reclamación sub ni email.

Si se concede acceso público, IAP no generará registros de Cloud Audit Logging para la solicitud.

Actualmente, las vinculaciones que otorgan acceso público no pueden tener asociada una condición. Por ejemplo, no es válida una política que permita a cualquier persona acceder a un recurso si la ruta de la solicitud comienza con /public/.