Configura IAP con la federación de identidades de personal

En esta página, se muestra cómo configurar Identity-Aware Proxy (IAP) para usar Federación de identidades de personal.

Cuando configuras la Federación de identidades de personal con IAP, puedes puede usar un proveedor de identidad (IdP) externo para autenticar y autorizar personal, un grupo de usuarios, como empleados, socios y contratistas, que usan Identity and Access Management (IAM), para que los usuarios puedan acceder de forma segura a los servicios implementados en en Google Cloud o de forma local.

Configurar IAP con la federación de identidades de personal te permite hacer lo siguiente: lo siguiente con respecto a tus aplicaciones protegidas con IAP:

  • Redirecciona a un usuario final a un IdP externo, como Okta, para que acceda.
  • Configura una sesión de acceso de entre 15 minutos y 12 horas.
  • Permite que solo usuarios finales específicos o conjuntos de usuarios finales en un IdP accedan a tu y mantener la integridad de su aplicación.
  • Especifica el contexto bajo el cual un usuario final puede acceder a una aplicación. Para Por ejemplo, solo permite el acceso durante un horario específico del día.

Puedes usar IAP con la federación de identidades de personal en todos y balanceadores de cargas que admite IAP.

Configura IAP con la federación de identidades de personal para una aplicación

La configuración de IAP con la federación de identidades de personal abarca las siguientes tareas principales:

  1. Configura un grupo de trabajadores y un proveedor.
  2. Crea un ID y un secreto de cliente de OAuth.
  3. Habilita IAP y configúralo para usar la Federación de identidades de personal.

Configura un grupo de trabajadores y un proveedor

Para configurar un grupo de trabajadores y un proveedor, sigue las instrucciones en Federación de identidades de personal y cuándo Para configurar el tiempo de duración de la sesión, consulta Administra las sesiones de IAP con la federación de identidades de personal.

Si quieres asignar una dirección de correo electrónico de un IdP externo a Google Cloud, Debes agregar una asignación de atributos en tu proveedor del grupo de trabajadores para google.email. Ejemplo: google.email=assertion.email.

Crea un ID y un secreto de cliente de OAuth

  1. Sigue las instrucciones para crear un ID y un secreto de cliente de OAuth. en un proyecto de la misma organización que el grupo de trabajadores al que usar para esta configuración. El proyecto no tiene que ser el mismo proyecto en el que se encuentra el recurso protegido con IAP. Al crear el ID de cliente y el secreto de OAuth, haz lo siguiente:

    1. Usa un marcador de posición para el URI de redireccionamiento cuando crees el ID de cliente. Después del crea el ID de cliente, ejecuta describe un cliente de OAuth para obtener el clientID generado.

    2. Cuando tengas el clientID, ejecuta update un cliente de OAuth para actualizar allowed-redirect-uris a lo siguiente: https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect

      Donde CLIENT_ID es el clientID que se recuperó en el paso anterior.

    3. Después de crear el secreto del cliente, ejecuta describe un cliente de OAuth credentials para obtener el clientSecret generado.

    Guarda los elementos clientId y clientSecret porque los necesitarás más adelante. pasos.

Habilita IAP para usar la federación de identidades de personal

Console

  1. En la consola de Google Cloud, abre la página IAP.
    Ir a la página de IAP
  2. Selecciona un proyecto El proyecto debe estar en la misma organización que grupo de trabajadores que creaste anteriormente. El proyecto no tiene que ser proyecto en el que creaste el secreto y el ID de cliente de OAuth.
  3. Haz clic en la pestaña Aplicaciones y, luego, busca la aplicación que quieren restringir el acceso al uso de IAP.
  4. En la columna IAP, activa la opción Activado (On).

gcloud

Para usar gcloud CLI y habilitar IAP, sigue las instrucciones procedimientos para el servicio correspondiente:

API

  1. Crea un archivo settings.json.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true,
     }
    }
    EOF
    
  2. Habilitar IAP en App Engine

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap.enabled"
    

    Para habilitar IAP en En Compute Engine, usa la siguiente URL: https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME?updateMask=iap.enabled.

Actualiza la configuración de IAP

Para configurar IAP para usar la federación de identidades de personal, debes hacer lo siguiente: establece la siguiente configuración:

  • WorkforceIdentitySettings: Es el ID y secreto de cliente de OAuth que se crearon antes.
  • IdentitySources: Es la fuente de identidad.

Para obtener más información, consulta las APIs de IAP.

gcloud

  1. Con el siguiente ejemplo como referencia, crea un iap_settings.yaml. .

    CLIENT_ID=clientId
    CLIENT_SECRET=clientSecret
    WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool
    cat <<EOF > iap_settings.yaml
    access_settings:
      identity_sources: ["WORKFORCE_IDENTITY_FEDERATION"]
      workforce_identity_settings:
        workforce_pools: ["$WORKFORCE_POOL_NAME"]
        oauth2:
          client_id: "$CLIENT_ID"
          client_secret: "$CLIENT_SECRET"
    EOF
    
  2. Ejecuta el siguiente comando para actualizar la configuración de IAP de tu recurso.

    gcloud iap settings set iap_settings.yaml --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE
    

    Reemplaza lo siguiente:

    • PROJECT: El ID del proyecto
    • RESOURCE_TYPE: El tipo de recurso de IAP. El el tipo de recurso debe ser app-engine, iap_web, compute organization o folder.
    • SERVICE: el nombre del servicio Esto es opcional para ambos app-engine y compute.

    Para obtener detalles sobre el comando, consulta gcloud iap settings set.

API

  1. Con el siguiente ejemplo como referencia, crea un iap_settings.json. de configuración de Terraform.

    CLIENT_ID=clientId
    CLIENT_SECRET=clientSecret
    WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool
    cat <<EOF > iap_settings.json
    {
       "access_settings": {
         "identity_sources": ["WORKFORCE_IDENTITY_FEDERATION"],
         "workforce_identity_settings": {
           "workforce_pools": ["$WORKFORCE_POOL_NAME"],
           "oauth2": {
             "client_id": "$CLIENT_ID",
             "client_secret": "$CLIENT_SECRET",
           }
        }
      }
    }
    EOF
    
  2. Usa gcloud CLI para obtener el nombre del recurso y, luego, Copia el RESOURCE_NAME del resultado, ya que lo necesitarás en el paso siguiente.

    gcloud iap settings get \
        --project=PROJECT \
        --resource-type=RESOURCE_TYPE \
        --service=SERVICE
    

    Reemplaza lo siguiente:

    • PROJECT: El ID del proyecto
    • RESOURCE_TYPE: El tipo de recurso de IAP. El el tipo de recurso debe ser app-engine, iap_web, compute organization o folder.
    • SERVICE: el nombre del servicio Esto es opcional para ambos app-engine y compute.
  3. Reemplaza RESOURCE_NAME en el siguiente comando por RESOURCE_NAME. del paso anterior.

    curl -X PATCH \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d @iap_settings.json \
    "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.identitySources,iapSettings.accessSettings.workforceIdentitySettings.workforcePools,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientId,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientSecret" 
    

Otorga acceso a los recursos protegidos con IAP

Para acceder a un recurso con la protección de IAP, los usuarios finales deben tener la Usuario de aplicación web protegida con IAP en el recurso. Puedes otorgar a un solo usuario el rol de usuario de aplicación web protegida con IAP (principal) o un conjunto de usuarios (conjunto principal, que se asigna a un grupo, a un atributo específico o a todo un grupo de usuarios).

No se admite el acceso sin restricciones a los recursos protegidos con IAP.

Console

  1. En la consola de Google Cloud, abre la página IAP.
    Ir a la página de IAP
  2. Selecciona el recurso que deseas proteger con IAP.
  3. Haz clic en Agregar principal y, luego, agrega la identificadores principales de los grupos o personas a los que deseas otorgar un Es un rol de IAM para el recurso.
  4. En Asignar roles, selecciona Usuario de aplicación web protegida con IAP.
  5. Haz clic en Agregar.

gcloud

Ejecuta el siguiente comando.

gcloud iap web add-iam-policy-binding \
    --member=PRINCIPAL_IDENTIFIER \
    --role='roles/iap.httpsResourceAccessor' \
    --project=PROJECT_ID \
    --resource-type=RESOURCE_TYPE \
    --service=SERVICE \
    --condition=CONDITION

Reemplaza lo siguiente :

  • PRINCIPAL_IDENTIFIER: El identificadores principales.
  • PROJECT_ID: El ID del proyecto
  • RESOURCE_TYPE: El tipo de recurso IAP, que puede ser app-engine o backend-services.
  • SERVICE: el nombre del servicio Esto es opcional cuando resource-type es app-engine.
  • CONDITION: Son las condiciones de IAM (opcional). A continuación, se muestra un ejemplo de una condición configurada con niveles de acceso:
expression="accessPolicies/12345678/accessLevels/iap_test_access_level" in request.auth.access_levels,title=iap-test-access-level,description=only access in weekdays

API

No se recomienda este método porque abarca toda la Política de IAM de un recurso. Un error podría quitar la política de un recurso.

  1. Obtén las vinculaciones de políticas de IAM existentes.

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Accept: application/json" \
      -H "Content-Type: application/json" \
      -d {} \
    "https://iap.googleapis.com/v1/RESOURCE_NAME:getIamPolicy" -o iam_policy_bindings.json
    

    Reemplaza RESOURCE_NAME por RESOURCE_NAME que obtuviste en un paso anterior.

  2. En el archivo iam_policy_bindings.json que obtuviste del resultado anterior quita las líneas version y etag, y agrega la vinculación que deseas agregar para el identificador principal. Para obtener más información, consulta Comprende las políticas de permisos.

    {
      "bindings": [
        {
          // existing bindings
        },
        {
          "role": "roles/iap.httpsResourceAccessor",
          "members": [
          "principal://iam.googleapis.com/locations/global/workforcePools/iap-test-pool/subject/iap-test-subject"
          ],
          "condition": {
            "expression": "\"accessPolicies/12345678/accessLevels/iap_test_access_level\" in request.auth.access_levels",
            "title": "iap-test-access-level",
            "description": "only access in week days"
          }
        }
      ]
    }
    
  3. Actualiza las vinculaciones de políticas de IAM.

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Accept: application/json" \
      -H "Content-Type: application/json" \
      -d "{"policy":$(cat iam_policy_bindings.json)}" \
    "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"
    

    Reemplaza RESOURCE_NAME por RESOURCE_NAME que obtuviste en un paso anterior.

Consulta GetIamPolicy y SetIamPolicy para obtener más información.

Configura el acceso adaptado al contexto (opcional)

También puedes configurar reglas de acceso adaptado al contexto para la autorización avanzada.

Para configurar niveles de acceso, consulta Crea y aplica niveles de acceso. Los niveles de acceso basados en la información del dispositivo no están disponibles cuando se usa Federación de identidades de personal. Aún puedes usar el acceso basado en el contexto de las solicitudes con condiciones sobre la dirección IP, y la hora y fecha.

Limitaciones cuando se trabaja con grupos de trabajadores

  • IAP admite solo un grupo de trabajadores, y el grupo de trabajadores puede contener solo un proveedor.
  • El grupo de trabajadores, el ID y secreto de cliente de OAuth y el Todas las aplicaciones habilitadas para IAP deben estar en la misma organización.
  • No se admiten los niveles de acceso para la información relacionada con el dispositivo.
  • Solo se admiten las siguientes opciones de configuración de IAP:
  • No se admite el acceso programático con la federación de identidades de personal.