En esta página se describe cómo usar las políticas de autorización para designar Identity-Aware Proxy (IAP) como el motor de autorización personalizado en una política de autorización para balanceadores de carga de aplicaciones.
Para delegar la autorización en IAP y en Gestión de Identidades y Accesos (IAM), autoriza el tráfico a una regla de reenvío basada en identidades de IAM o de usuarios finales para balanceadores de carga gestionados. De esta forma, puedes aplicar el control de acceso basado en IAP a tus servicios de backend.
Antes de empezar
- Familiarízate con 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 IAP. Si las compras en la aplicación están habilitadas, recibes un error al enviar tu configuración.
- Habilita la API Network Services.
Crea la política de autorización y habilita IAP
Para crear una política de autorización, cree un archivo de política que defina el destino y las reglas, y, a continuación, habilite IAP en la regla de reenvío. Puedes aplicar compras en la aplicación solo a solicitudes específicas definiendo condiciones en la sección httpRules de tu archivo de política. Si se omite la sección httpRules, se aplicará IAP a todas las solicitudes.
gcloud
运行以下命令以准备
policy.yaml文件。该政策允许 IP 地址范围为10.0.0.0/24的客户端在转发规则上启用 IAP。$ cat << EOF > policy.yaml action: CUSTOM description: authz policy with Cloud IAP name: AUTHZ_POLICY_NAME httpRules: - from: sources: - ipBlocks: - prefix: "10.0.0.0" length: 24 customProvider: cloudIap: {} target: loadBalancingScheme: EXTERNAL_MANAGED resources: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID EOF运行以下命令,在转发规则上启用 IAP。
gcloud network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
替换以下内容:
PROJECT_ID: Google Cloud 项目 ID。
LOCATION:资源所在的区域。
FORWARDING_RULE_ID:转发规则资源的 ID。
AUTHZ_POLICY_NAME:授权政策的名称。
API
运行以下命令,准备
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": [ { "from": { "sources": { "ipBlocks": [ { "prefix": "10.0.0.0", "length": 24 } ] } } } ], "customProvider": { "cloudIap": {} } } EOF运行以下命令,在转发规则上启用 IAP。
curl -X PATCH \\ -H "Authorization: Bearer $(gcloud auth print-access-token)" \\ -H "Accept: application/json" \\ -H "Content-Type: application/json" \\ -d @policy.json \\ "https://networksecurity.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
替换以下内容:
PROJECT_ID: Google Cloud 项目 ID。
LOCATION:资源所在的区域。
FORWARDING_RULE_ID:转发规则资源的 ID。
AUTHZ_POLICY_NAME:授权政策的名称。
Aplicar permisos a recursos
Puedes usar la API de IAP para aplicar permisos de IAM a recursos concretos de un proyecto protegido con 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 Google Cloud recursos del proyecto.
A continuación, se muestran algunos ejemplos de comandos para configurar permisos. Para obtener más información, consulta gcloud iap web set-iam-policy.
gcloud
En los comandos de ejemplo, sustituye POLICY_FILE por la ruta a un archivo con formato YAML que contenga una política válida. A continuación, se muestra un ejemplo de archivo YAML:
bindings:
members: user:example@example.com
role: roles/iap.httpsResourceAccessor
Actualizar el permiso de acceso al recurso de regla de reenvío
gcloud iap web set-iam-policy POLICY_FILE [--organization=ORGANIZATION \ --folder=FOLDER --project=PROJECT_ID \ --resource-type=RESOURCE_TYPE --service=SERVICE]
Configurar permisos a nivel de organización
gcloud iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION
Configurar permisos a nivel de carpeta
gcloud iap web set-iam-policy POLICY_FILE --folder=FOLDER
Configurar permisos a nivel de proyecto
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=iap_web
Configurar permisos para todas las reglas de reenvío globales de un proyecto
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID --resource-type=forwarding_rule
Configurar permisos para todas las reglas de reenvío de un proyecto en una región
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --region=REGION
Configurar permisos para una regla de reenvío global específica de un proyecto
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE
Configurar permisos para una regla de reenvío específica de un proyecto en una región
gcloud iap web set-iam-policy POLICY_FILE --project=PROJECT_ID \ --resource-type=forwarding_rule --service=SERVICE --region=REGION
Haz los cambios siguientes:
- POLICY_FILE: ruta a un archivo YAML que contiene una política válida.
- ORGANIZATION: el ID de tu organización.
- FOLDER: la carpeta que contiene tu solicitud.
- PROJECT_ID: el Google Cloud ID de proyecto.
- RESOURCE_TYPE: el tipo de recurso de IAP. El tipo de recurso debe ser
app-engine,iap_web,compute,organizationofolder. - SERVICE: el ID o el nombre de la regla de reenvío.
- REGION: la región en la que se encuentra el recurso.
API
Configurar permisos a nivel de organización
organization/ORGANIZATION
Configurar permisos a nivel de carpeta
folders/FOLDER
Configurar permisos a nivel de proyecto
projects/PROJECT_ID
Configurar permisos para todas las reglas de reenvío globales de un proyecto
projects/PROJECT_ID/forwarding_rule
Configurar permisos para todas las reglas de reenvío de un proyecto en una región
projects/PROJECT_ID/iap_web/forwarding_rule-REGION
Configurar permisos para una regla de reenvío global específica de un proyecto
projects/PROJECT_ID/iap_web/forwarding_rule/services/SERVICE
Configurar permisos para una regla de reenvío específica de un proyecto en una región
projects/PROJECT_ID/iap_web/forwarding_rule-REGION/services/SERVICE
Definir 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 policy.json, puedes crear el archivo JSON ejecutando el siguiente comando. Actualice los valores según sea necesario.
cat << EOF > policy.json
{
"bindings": {
"members": "user:example@example.com",
"role": "roles/iap.httpsResourceAccessor",
}
}
EOF
Haz los cambios siguientes:
- ORGANIZATION: el ID de tu organización.
- FOLDER: la carpeta que contiene tu solicitud.
- PROJECT_ID: el Google Cloud ID de proyecto.
- REGION: la región en la que se encuentra el recurso.
- SERVICE: el ID o el nombre de la regla de reenvío.