En esta página, se describe cómo administrar el acceso individual o grupal a los recursos protegidos por Identity-Aware Proxy (IAP) a nivel del recurso.
Descripción general
Puedes usar IAP para configurar 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, Esta función se aplica a los proyectos que tienen apps de 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 acceso a nivel de proyecto y superior, ve a la página de IAM. Las listas de usuarios que tienen acceso (las "entidades principales") a nivel del proyecto se aplican a todos los recursos protegidos por IAP en el proyecto.
Antes de comenzar
Necesitarás lo siguiente antes de comenzar:
- Un recurso protegido por IAP al que deseas agregar acceso individual o grupal.
- Nombres de usuarios o grupos a los que deseas agregarles acceso
Activa y desactiva 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 |
clientauthconfig.clients.create,
clientauthconfig.clients.update y clientauthconfig.clients.getWithSecret. Estos permisos se otorgan con el rol de editor del proyecto.
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 por IAP con la consola deGoogle Cloud , sigue el proceso para agregar o quitar el acceso.
Agregar acceso
Ve a la página Identity-Aware Proxy.
Ir a la página Identity-Aware ProxySelecciona 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.
En el Panel de información del lado derecho, agrega las direcciones de correo electrónico de los grupos o las personas a las que deseas otorgar un rol de Identity and Access Management (IAM) para el recurso.
Aplica roles de política de acceso a la principal seleccionando entre los siguientes roles en el menú desplegable Selecciona un rol:
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.
Cuando termines de agregar direcciones de correo electrónico y de configurar las funciones, haz clic en Agregar.
Quitar acceso
- Ve a la página Identity-Aware Proxy.
Ir a la página Identity-Aware Proxy - Selecciona el recurso que está protegido con IAP.
- En el panel de información del lado derecho, selecciona la sección que corresponde al rol que deseas quitar de una principal.
- 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.
- En el cuadro de diálogo Quitar principal que aparece, haz clic en Quitar.
Administra el acceso con la 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 del proyecto se aplica a todos los recursos de Google Cloud en el proyecto. El acceso a los recursos a nivel de proyecto y de nivel superior se administra en la página Administrador de IAM, pero se mostrará en la página Administrador de IAP.
Los usuarios necesitan ciertos permisos para acceder a una app protegida por IAP.
Para otorgar estos permisos, los administradores pueden usar una API para actualizar las políticas de IAM. El
permiso iap.webServiceVersions.accessViaIAP otorga acceso de usuario a una app. 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 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. A continuación, se muestra una llamada de ejemplo que obtiene la política de IAM para una versión del servicio de la app 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 enumeran los tipos de recursos admitidos, así como los permisos necesarios para llamar a la API de IAM.
| Tipo de recurso | Permisos |
|---|---|
|
Todas las apps web protegidas con IAP en el proyecto Esto es lo mismo que la casilla de verificación Todos los servicios web en la página de IAP. Ruta de acceso https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web |
iap.web.getIamPolicyiap.web.setIamPolicy |
|
Todos los servicios de backend del proyecto Esto es lo mismo que la casilla de verificación Servicio de backend en la página de IAP. Rutas de acceso Alcance global: https://iap.googleapis.com/v1/projects/ Alcance regional: https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
Cada regla de reenvío del proyecto Permisos para todas las reglas de reenvío del proyecto. Rutas de acceso Alcance global: https://iap.googleapis.com/v1/projects/ Alcance regional: https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
Una región para cada servicio de Cloud Run en el proyecto Permisos para todos los servicios de Cloud Run en una región del proyecto. Ruta de acceso https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
Un servicio de Cloud Run Permisos para un servicio de Cloud Run. Todos los servicios de Cloud Run son regionales. Ruta de acceso https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
Una app de App Engine Es lo mismo que la casilla de verificación App de App Engine en la página de IAP. Ruta de acceso https://iap.googleapis.com/v1/projects/ |
iap.webTypes.getIamPolicyiap.webTypes.setIamPolicy |
|
Un servicio de backend de Compute Engine La ruta de acceso del servicio de backend puede especificar el ID del servicio de backend o el nombre del servicio de backend. Rutas de acceso Alcance global: https://iap.googleapis.com/v1/projects/ Alcance regional: https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
Una regla de reenvío de Compute Engine Permisos para una regla de reenvío. La ruta de acceso de la regla de reenvío puede especificar el ID o el nombre de la regla de reenvío. Rutas de acceso Alcance global: https://iap.googleapis.com/v1/projects/ Alcance regional: https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
Un servicio de app de App Engine Ruta de acceso https://iap.googleapis.com/v1/projects/ |
iap.webServices.getIamPolicyiap.webServices.setIamPolicy |
|
Una versión del servicio de App Engine Compute Engine no admite el control de versiones. Ruta de acceso https://iap.googleapis.com/v1/projects/ |
iap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicy |
|
Todas las instancias de VM protegidas por IAP en el proyecto Esto es lo mismo que la casilla de verificación Todos los recursos de túnel en la página de IAP. Ruta de acceso https://iap.googleapis.com/v1/projects/ |
iap.tunnel.getIamPolicyiap.tunnel.setIamPolicy |
|
Una zona que tiene al menos una instancia de VM Es lo mismo que una casilla de verificación de nombre de zona en la página de IAP, por ejemplo, us-central1-c.Ruta de acceso https://iap.googleapis.com/v1/projects/ |
iap.tunnelZones.getIamPolicyiap.tunnelZones.setIamPolicy |
|
Una instancia de VM individual Ruta de acceso https://iap.googleapis.com/v1/projects/ |
iap.tunnelInstances.getIamPolicyiap.tunnelInstances.setIamPolicy |
Una región que tenga al menos un grupo de destino, por ejemplo, us-central1Ruta de acceso https://iap.googleapis.com/v1/projects/ |
iap.tunnelLocations.getIamPolicyiap.tunnelLocations.setIamPolicy |
|
Un grupo de destinos individual Ruta https://iap.googleapis.com/v1/projects/ |
iap.tunnelDestGroups.getIamPolicyiap.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 los roles de IAM, consulta Administra roles y permisos.
| Rol | 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.accessViaIAPiap.tunnelDestGroups.accessViaIAP |
Otorga acceso a las instancias de VM protegidas por IAP. |
Administrador de políticas de IAP (roles/iap.admin) |
iap.web.getIamPolicyiap.web.setIamPolicyiap.webTypes.getIamPolicyiap.webTypes.setIamPolicyiap.webServices.getIamPolicyiap.webServices.setIamPolicyiap.webServiceVersions.getIamPolicyiap.webServiceVersions.setIamPolicyiap.tunnel.getIamPolicyiap.tunnel.setIamPolicyiap.tunnelZones.getIamPolicyiap.tunnelZones.setIamPolicyiap.tunnelInstances.getIamPolicyiap.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
También puedes administrar 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 casos de uso.
Puedes crear políticas de denegación y, luego, incluir todos los permisos de IAP en
ellas. 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 se pueden aplicar a
cualquier permiso de IAP, su eficacia está vinculada a un punto de conexión
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
otorga acceso a getSettings a nivel de la organización y no a los
descendientes de la organización. Esto significa que los administradores deben enumerar de forma explícita todos
los permisos detallados relevantes cuando crean políticas de denegación para denegar el acceso en un
punto de adjunto y sus descendientes.
Para obtener una lista completa de estos permisos detallados, consulta
Permisos admitidos en las políticas de denegación.
Todos los permisos en el FQDN 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 detallados.
A continuación, se muestra un ejemplo de una política de denegación de IAM para
denegar el acceso a la API de getSettings a una principal en 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 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 presentan algunas formas más sencillas de crear una política de denegación de IAM sin tener que especificar todos los permisos detallados.
| Acción del administrador | Permiso en la política de denegación |
|---|---|
| Deniega permisos específicos de IAP en todos los tipos de recursos de IAP | *.updateSettings *.getSettings *.setIamPolicy *.getIamPolicy |
| Deniega 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 acceso a un recurso a todos, otorga un rol a una de las siguientes 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ónsubniemail.
Si se otorga acceso público, IAP no generará registros de auditoría de Cloud para la solicitud.
Actualmente, las vinculaciones que otorgan acceso público no pueden tener una condición
asociada.
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/.