En esta página, se describe cómo usar las políticas de autorización para designar a Identity-Aware Proxy (IAP) como el motor de autorización personalizado en una política de autorización para los balanceadores de cargas de aplicaciones.
Para delegar la autorización al IAP y a Identity and Access Management (IAM), autorizas el tráfico a una regla de reenvío según IAM o las identidades del usuario final para los balanceadores de cargas administrados. Esto te permite aplicar el control de acceso basado en IAP para tus servicios de backend.
Antes de comenzar
- Comprende los conceptos de las políticas de autorización.
- Asegúrate de que los servicios de backend de las reglas de reenvío no tengan habilitado el IAP. Si los IAP están habilitados, recibirás un error cuando envíes la configuración.
- Habilita la API de Network Services.
Crea la política de autorización y habilita IAP
Para crear una política de autorización, crea un archivo de políticas que defina el objetivo y las reglas, y, luego, habilita IAP en la regla de reenvío.
gcloud
- Ejecuta el siguiente comando para preparar un archivo
policy.yaml
.
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
customProvider:
cloudIap: {}
target:
loadBalancingScheme: EXTERNAL_MANAGED
resources:
- https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID
EOF
- Ejecuta el siguiente comando para habilitar el IAP en una regla de reenvío.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Reemplaza lo siguiente:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la región en la que se encuentra el recurso.
- FORWARDING_RULE_ID: Es el ID del recurso de la regla de reenvío.
- AUTHZ_POLICY_NAME: Es el nombre de la política de autorización.
API
- Ejecuta el siguiente comando para preparar un archivo
policy.json
.cat << EOF > policy.json { "name": "AUTHZ_POLICY_NAME", "target": { "loadBalancingScheme": "INTERNAL_MANAGED", "resources": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID" ], }, "action": "CUSTOM", "httpRules": [], "customProvider": { "cloudIap": {} } } EOF
Ejecuta el siguiente comando para habilitar el IAP en una regla de reenvío.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
Reemplaza lo siguiente:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la región en la que se encuentra el recurso.
- FORWARDING_RULE_ID: Es el ID del recurso de la regla de reenvío.
- AUTHZ_POLICY_NAME: Es el nombre de la política de autorización.
Aplica permisos a los recursos
Puedes usar la API de IAP para 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.
A continuación, se incluyen algunos comandos de ejemplo para configurar permisos. Para obtener más información, consulta gcloud alpha iap web set-iam-policy
:
gcloud
En los comandos de ejemplo, reemplaza POLICY_FILE por la ruta de acceso a un archivo en formato YAML que contenga una política válida. El siguiente es un ejemplo de archivo YAML:
policy:
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
Actualiza el permiso de quién puede acceder al recurso de la regla de reenvío
gcloud alpha iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \ --folder=FOLDER --project=/PROJECT_ID \ --resource-type=RESOURCE_TYPE --service=SERVICE]
Configura el permiso a nivel de la organización
gcloud alpha iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION
Configura el permiso a nivel de la carpeta
gcloud alpha iap web set-iam-policy POLICY_FILE --folder=FOLDER
Configura el permiso a nivel del proyecto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
Configura el permiso para todas las reglas de reenvío globales de un proyecto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule
Configura el permiso para todas las reglas de reenvío en un proyecto de una región
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --region=REGION
Configura el permiso para una regla de reenvío global específica en un proyecto
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE
Configura el permiso para una regla de reenvío específica en un proyecto de una región
gcloud alpha iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE --region=REGION
API
Configura el permiso a nivel de la organización
organization/ORGANIZATION
Configura el permiso a nivel de la carpeta
folders/FOLDER
Configura el permiso a nivel del proyecto
projects/PROJECT_ID
Configura el permiso para todas las reglas de reenvío globales de un proyecto
projects/PROJECT_ID/forwarding_rule
Configura el permiso para todas las reglas de reenvío en un proyecto de una región
projects/PROJECT_ID/iap_web/forwarding_rule-REGION
Configura el permiso para una regla de reenvío global específica en un proyecto
projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE
Configura el permiso para una regla de reenvío específica en un proyecto de una región
projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE
Establece la política de autorización
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @policy.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"
En el caso de policy.json
, puedes crear el archivo JSON ejecutando el siguiente
comando. Actualiza los valores según sea necesario.
cat << EOF > policy.json { "policy": { "bindings": { "members": "user:example@example.com", "role": "roles/iap.httpsResourceAccessor", } } } EOF