Usar políticas de autorización para delegar la autorización en IAP y gestión de identidades y accesos

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, recibirás 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 la compra 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, IAP se aplicará a todas las solicitudes.

gcloud

  1. Ejecuta el siguiente comando para preparar un archivo policy.yaml. La política permite que los clientes con un intervalo de direcciones IP de 10.0.0.1/24 habiliten IAP en una regla de reenvío.
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
httpRules:
  - from:
      sources:
      - ipBlocks:
        - prefix: "10.0.0.1"
          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
  1. Ejecuta el siguiente comando para habilitar 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

Haz los cambios siguientes:

  • PROJECT_ID: el Google Cloud ID de proyecto.
  • LOCATION: la región en la que se encuentra el recurso.
  • FORWARDING_RULE_ID: ID del recurso de regla de reenvío.
  • AUTHZ_POLICY_NAME: nombre de la política de autorización.

API

  1. 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": [
      {
        "from": {
          "sources": {
            "ipBlocks": [
              {
                "prefix": "10.0.0.1",
                "length": "24"
              }
            ]
          }
        }
      }
    ],
    "customProvider": {
      "cloudIap": {}
    }
    }
    EOF
    
  2. Ejecuta el siguiente comando para habilitar 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 @policy.json \
    "https://networksecurity.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
    

    Haz los cambios siguientes:

    • PROJECT_ID: el Google Cloud ID de proyecto.
    • LOCATION: la región en la que se encuentra el recurso.
    • FORWARDING_RULE_ID: ID del recurso de regla de reenvío.
    • AUTHZ_POLICY_NAME: nombre de la política de autorización.

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 alpha 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 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]

Configurar permisos a nivel de organización

gcloud alpha iap web set-iam-policy POLICY_FILE --organization=ORGANIZATION

Configurar permisos a nivel de carpeta

gcloud alpha iap web set-iam-policy POLICY_FILE --folder=FOLDER

Configurar permisos a nivel de proyecto

gcloud alpha 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 alpha 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 alpha 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 alpha 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 alpha 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, organization o folder.
  • 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. Actualiza 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.