Configura una extensión de autorización

Las extensiones de servicio permiten que los balanceadores de cargas de aplicaciones envíen llamadas a los servicios de backend para insertar procesamiento personalizado en la ruta de procesamiento. Las extensiones de autorización se ejecutan en la ruta de procesamiento de solicitudes cuando el balanceador de cargas recibe encabezados de solicitud y después de que el mapa de URL elige el servicio de backend. En esta página, se describe cómo configurar extensiones de autorización para usar un motor de autorización personalizado definido en una política de autorización.

Para obtener una descripción general de las extensiones del balanceador de cargas de aplicaciones, consulta Descripción general de las extensiones de Cloud Load Balancing.

Introducción

Cloud Load Balancing te permite configurar políticas de autorización que aplican el control de acceso al tráfico que ingresa a los balanceadores de cargas. A veces, las decisiones de autorización complejas no se pueden expresar fácilmente con una política de autorización.

Puedes configurar políticas de autorización con extensiones de autorización para delegar las decisiones de autorización a motores de autorización personalizados. En la ruta de datos, las extensiones de autorización se ejecutan después de las extensiones de ruta, pero antes de las extensiones de tráfico. Para cada solicitud de autorización, el balanceador de cargas reenvía los encabezados de solicitud a la extensión. Según la respuesta del proveedor, el proxy del balanceador de cargas reenvía o rechaza la solicitud.

Para obtener información sobre los límites relacionados con las extensiones del balanceador de cargas de aplicaciones, consulta la página Cuotas y límites.

Antes de comenzar

Crea los recursos necesarios como se describe en Configura un servicio de backend de texto destacado.

Configura una extensión de autorización

En el siguiente ejemplo, se muestra cómo configurar una extensión de autorización, my-authz-ext, con una política de autorización para delegar decisiones de autorización para un balanceador de cargas de aplicaciones interno regional en us-east1.

gcloud

  1. Configura la extensión de autorización.

    1. Define la extensión en un archivo YAML que la asocie con el servicio de backend, authz-service. Usa los valores de muestra proporcionados.

      cat >authz-extension.yaml <<EOF
          name: my-authz-ext
          authority: ext11.com
          loadBalancingScheme: INTERNAL_MANAGED
          service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/authz-service
          forwardHeaders:
            - Authorization
          failOpen: false
          timeout: "0.1s"
          wireFormat: EXT_AUTHZ_GRPC
      EOF
      

      Reemplaza PROJECT_ID por el ID del proyecto.

      De forma predeterminada, todas las llamadas de Service Extensions usan el protocolo de procesamiento externo de Envoy o ext_proc. En el caso de las llamadas de autorización, también se admite el protocolo de autorización externa o ext_authz más adecuado de forma óptima en la versión preliminar. Cuando la opción wireFormat se establece en EXT_AUTHZ_GRPC, la llamada usa el protocolo ext_authz. Si no se especifica la opción, la llamada usa el protocolo ext_proc.

    2. Importa la extensión de autorización. Usa el comando gcloud service-extensions authz-extensions import con los siguientes valores de muestra.

      gcloud service-extensions authz-extensions import my-authz-ext \
          --source=authz-extension.yaml \
          --location=us-east1
      

      Si quieres configurar el protocolo como ext_authz, usa el comando gcloud beta service-extensions authz-extensions import en su lugar.

  2. Configura una política de autorización con la extensión.

    1. Define una política de autorización que asocie la extensión my-authz-ext con la regla de reenvío fr1. Usa los valores de muestra proporcionados. La acción CUSTOM indica que se está usando una extensión.

      cat >authz-policy.yaml <<EOF
          name: my-authz-policy
          target:
            loadBalancingScheme: INTERNAL_MANAGED
            resources:
              - "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-east1/forwardingRules/fr1"
          action: CUSTOM
          customProvider:
            authzExtension:
              resources:
                - "projects/PROJECT_ID/locations/us-east1/authzExtensions/my-authz-ext"
      EOF
      
    2. Importa la política de autorización al proyecto. Usa el comando gcloud network-security authz-policies import con los siguientes valores de muestra.

      gcloud network-security authz-policies import my-authz-policy \
          --source=authz-policy.yaml \
          --location=us-east1
      

Limitaciones de las extensiones de autorización

A continuación, se incluyen algunas limitaciones de las extensiones de autorización:

  • Una política de autorización solo puede tener una extensión de autorización.
  • Se puede usar una regla de reenvío con varias políticas de autorización, de las cuales solo una puede ser una política de autorización personalizada.

Para conocer las limitaciones que se aplican a todas las extensiones, consulta Limitaciones de las extensiones.

¿Qué sigue?