Habilitar IAP para Compute Engine

En esta página se explica cómo proteger una instancia de Compute Engine con Identity-Aware Proxy (IAP).

Antes de empezar

Para habilitar IAP para Compute Engine, necesitas lo siguiente:

Si aún no has configurado tu instancia de Compute Engine, consulta Configurar IAP para Compute Engine para ver una guía completa.

IAP usa un cliente de OAuth gestionado por Google para autenticar a los usuarios. Solo los usuarios de la organización pueden acceder a la aplicación con IAP. Si quieres permitir el acceso a usuarios ajenos a tu organización, consulta Habilitar las compras en aplicaciones para aplicaciones externas.

Puedes habilitar IAP en un servicio de backend de Compute Engine o en una regla de reenvío de Compute Engine. Cuando habilitas IAP en un servicio de backend de Compute Engine, solo ese servicio de backend está protegido por IAP. Cuando habilitas IAP en una regla de reenvío de Compute Engine, todas las instancias de Compute Engine que hay detrás de la regla de reenvío están protegidas por IAP.

Habilitar IAP en una regla de reenvío

Puedes habilitar IAP en una regla de reenvío mediante el framework de políticas de autorización del balanceador de carga.

gcloud

  1. Run the following command to prepare a policy.yaml file. The policy allows clients with an IP address range of 10.0.0.0/24 to enable IAP on a forwarding rule.
$ 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
  1. Run the following command to enable IAP on a forwarding rule.
gcloud 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

  1. 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": [
      {
        "from": {
          "sources": {
            "ipBlocks": [
              {
                "prefix": "10.0.0.0",
                "length": 24
              }
            ]
          }
        }
      }
    ],
    "customProvider": {
      "cloudIap": {}
    }
    }
    EOF
    
  2. 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 @policy.json \
    "https://networksecurity.googleapis.com/v1/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.

Después de habilitar IAP en una regla de reenvío, puedes aplicar permisos a los recursos.

Habilitar IAP en un servicio de backend de Compute Engine

Puedes habilitar IAP en un servicio de backend de Compute Engine a través de ese servicio de backend.

consola

El cliente de OAuth gestionado por Google no está disponible al habilitar IAP mediante la Google Cloud consola.

If you haven't configured your project's OAuth consent screen, you'll be prompted to do so. To configure your OAuth consent screen, see Setting up your OAuth consent screen.

If you are running GKE clusters version 1.24 or later, you can configure IAP and GKE by using the Kubernetes Gateway API. To do so, complete the following steps and then follow the instructions in Configure IAP. Do not configure BackendConfig.

Setting up IAP access

  1. Go to the Identity-Aware Proxy page.
    Go to the Identity-Aware Proxy page
  2. Select the project you want to secure with IAP.
  3. Select the checkbox next to the resource you want to grant access to.

    If you don't see a resource, ensure that the resource is created and that the BackendConfig Compute Engine ingress controller is synced.

    To verify that the backend service is available, run the following gcloud command:

    gcloud compute backend-services list
  4. On the right side panel, click Add principal.
  5. In the Add principals dialog that appears, enter the email addresses of groups or individuals who should have the IAP-secured Web App User role for the project.

    The following kinds of principals can have this role:

    • Google Account: user@gmail.com
    • Google Group: admins@googlegroups.com
    • Service account: server@example.gserviceaccount.com
    • Google Workspace domain: example.com

    Make sure to add a Google Account that you have access to.

  6. Select Cloud IAP > IAP-secured Web App User from the Roles drop-down list.
  7. Click Save.

Turning on IAP

  1. On the Identity-Aware Proxy page, under APPLICATIONS, find the load balancer that serves the instance group you want to restrict access to. To turn on IAP for a resource,
    To enable IAP:
    • At least one protocol in the load balancer frontend configuration must be HTTPS. Learn about setting up a load balancer.
    • You need the compute.backendServices.update, clientauthconfig.clients.create, clientauthconfig.clients.update, and clientauthconfig.clients.getWithSecret permissions. These permissions are granted by roles, such as the Project Editor role. To learn more, see Managing access to IAP-secured resources.
  2. In the Turn on IAP window that appears, click Turn On to confirm that you want IAP to secure your resource. After you turn on IAP, it requires login credentials for all connections to your load balancer. Only accounts with the IAP-Secured Web App User role on the project will be given access.

gcloud

Antes de configurar tu proyecto y las compras en la aplicación, necesitas una versión actualizada de la CLI de gcloud. Para obtener instrucciones sobre cómo instalar gcloud CLI, consulta Instalar gcloud CLI.

  1. Para autenticarte, usa la CLI de Google Cloud y ejecuta el siguiente comando.
    gcloud auth login
  2. Para iniciar sesión, sigue la URL que aparece.
  3. Después de iniciar sesión, copia el código de verificación que aparece y pégalo en la línea de comandos.
  4. Ejecuta el siguiente comando para especificar el proyecto que contiene el recurso que quieres proteger con IAP.
    gcloud config set project PROJECT_ID
  5. Para habilitar las compras en la aplicación, ejecuta el comando con ámbito global o regional.

    Ámbito global
    gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled
    Ámbito regional
    gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled

Una vez que hayas habilitado IAP, puedes usar la CLI de gcloud para modificar la política de acceso de IAP con el rol de IAM roles/iap.httpsResourceAccessor. Más información sobre cómo gestionar roles y permisos

API

  1. Run the following command to prepare a settings.json file.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true
      }
    }
    EOF
    

  2. Run the following command to enable IAP.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
    

After you enable IAP, you can use the Google Cloud CLI to modify the IAP access policy using the IAM role roles/iap.httpsResourceAccessor. Learn more about managing roles and permissions.