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
- Run the following command to prepare a
policy.yaml
file.
$ 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
- Run the following command to enable IAP on a forwarding rule.
gcloud beta network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
Replace the following:
- PROJECT_ID: The Google Cloud project ID.
- LOCATION: The region that the resource is located in.
- FORWARDING_RULE_ID: The ID of the forwarding rule resource.
- AUTHZ_POLICY_NAME: The name of the authorization policy.
API
- Run the following command to prepare a
policy.json
file.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
Run the following command to enable IAP on a forwarding rule.
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"
Replace the following:
- PROJECT_ID: The Google Cloud project ID.
- LOCATION: The region that the resource is located in.
- FORWARDING_RULE_ID: The ID of the forwarding rule resource.
- AUTHZ_POLICY_NAME: The name of the authorization policy.
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