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
Ve a la página Identity-Aware Proxy.
Ir a la página Identity-Aware ProxySelecciona 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.
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.
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.
Cuando hayas terminado de añadir direcciones de correo y asignar roles, haz clic en Añadir.
Quitar acceso
- Ve a la página Identity-Aware Proxy.
Ir a la página Identity-Aware Proxy - Selecciona el recurso protegido con IAP.
- En el panel de información de la derecha, selecciona la sección que corresponda al rol que quieras quitar de un principal.
- En la sección ampliada, junto al nombre de cada usuario o grupo al que quieras quitar el rol, haz clic en Quitar.
- 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/ Ámbito regional: https://iap.googleapis.com/v1/projects/ |
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/ Ámbito regional: https://iap.googleapis.com/v1/projects/ |
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/ |
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/ |
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/ |
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/ Ámbito regional: https://iap.googleapis.com/v1/projects/ |
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/ Ámbito regional: https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicy iap.webServices.setIamPolicy |
Un servicio de aplicación de App Engine Ruta https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicy iap.webServices.setIamPolicy |
An App Engine service version Compute Engine doesn't support versioning. Path https://iap.googleapis.com/v1/projects/ |
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/ |
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/ |
iap.tunnelZones.getIamPolicy iap.tunnelZones.setIamPolicy |
Una instancia de máquina virtual individual Ruta https://iap.googleapis.com/v1/projects/ |
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/ |
iap.tunnelLocations.getIamPolicy iap.tunnelLocations.setIamPolicy |
Un grupo de destino individual Ruta https://iap.googleapis.com/v1/projects/ |
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á unasub
ni unaemail
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.