Configura una extensión para Secure Web Proxy

Service Extensions permite que las extensiones de Secure Web Proxy envíen llamadas a los servicios de autorización para insertar procesamiento personalizado en la ruta de procesamiento del tráfico. En esta página, se describe cómo configurar extensiones de Secure Web Proxy con políticas de autorización.

Las extensiones de Secure Web Proxy se configuran con políticas de autorización de solicitudes y contenido como extensiones de autorización. Las extensiones basadas en políticas de autorización de solicitudes se configuran para ejecutarse antes que las basadas en políticas de autorización de contenido.

Para obtener información sobre cómo funcionan las extensiones de Secure Web Proxy, consulta la descripción general de las extensiones de Secure Web Proxy.

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

Antes de comenzar

  1. Crea, configura e implementa una instancia de Secure Web Proxy llamada swp-instance1 en una ubicación que desees usar para la extensión, por ejemplo, us-west1.

    El proxy debe implementarse con una política de seguridad de la puerta de enlace con la inspección de seguridad de la capa de transporte (TLS) habilitada.

  2. Configura los siguientes servicios de ejemplo:

    Las extensiones de Secure Web Proxy solo pueden segmentarse para nombres de dominio completamente calificados (FQDN). Cuando usas destinos de FQDN para las extensiones, el plano de datos usa el protocolo HTTP/2 con encriptación TLS para comunicarse con los extremos en el puerto 443. Sin embargo, el plano de datos no valida el certificado del servidor. Por motivos de seguridad, asegúrate de que los extremos resueltos estén dentro de la VPC.

Configura una extensión para una política de autorización de solicitudes

En el siguiente ejemplo, se muestra cómo configurar una extensión de autorización que aplica una política de autorización de solicitudes a la instancia de Secure Web Proxy en us-west1. La política requiere que el tráfico pase la autenticación TLS mutua de una entidad específica antes de que se le permita llegar al destino, example.com/mcp.

gcloud

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

    1. Define la extensión en un archivo YAML que asocie la extensión con request-authz.com. Usa los valores de muestra proporcionados.

      cat >swp-request-authz-extension.yaml <<EOF
      name: my-swp-request-authz-ext
      authority: ext11.com
      loadBalancingScheme: INTERNAL_MANAGED
      service: "request-authz.com"
      forwardHeaders:
        - Authorization
      failOpen: false
      timeout: "0.1s"
      wireFormat: EXT_AUTHZ_GRPC
      EOF
      

      Las extensiones de Secure Web Proxy son recursos regionales y deben estar en la misma región que tu instancia de Secure Web Proxy.

      En el caso de las políticas de autorización de solicitudes, el valor de wireFormat puede ser EXT_AUTHZ_GRPC para que la llamada use el protocolo ext_authz, aunque también se admite el protocolo ext_proc.

      De forma predeterminada, failOpen se configura como false. Si la extensión agota el tiempo de espera o falla, se detiene el procesamiento de la solicitud. Esta opción predeterminada es preferible cuando se prioriza la seguridad o la integridad por sobre la disponibilidad.

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

      gcloud beta service-extensions authz-extensions import my-swp-request-authz-ext \
          --source=swp-request-authz-extension.yaml \
          --location=us-west1
      
  2. En el mismo proyecto, configura una política de autorización con la extensión.

    Para cualquier solicitud a example.com/mcp, la política requiere autenticación de TLS mutua de una principal específica y delega aún más la decisión de autorización a la extensión de autorización, my-swp-authz-request-ext.

    1. Define una política de autorización que asocie la extensión my-swp-authz-request-ext con el proxy de Secure Web Proxy, swp-instance1. Usa los valores de muestra proporcionados.

      cat >swp-request-authz-policy.yaml <<EOF
      name: my-swp-request-authz-policy
      target:
        resources:
          - "projects/PROJECT_ID/locations/us-west1/gateways/swp-instance1"
      policyProfile: REQUEST_AUTHZ
      httpRules:
      - to:
          operations:
          - hosts:
            - exact: "example.com"
          - paths:
            - prefix: "/mcp"
        from:
          sources:
          - principals:
            - principal_selector: CLIENT_CERT_DNS_NAME_SANS
              principal:
                exact: "spiffe://p.global.123.workload.id.goog/ns/ns1/sa/hellomcp"
      action: CUSTOM
      customProvider:
        authzExtension:
          resources:
            - "projects/PROJECT_ID/locations/us-west1/authzExtensions/my-swp-request-authz-ext"
      EOF
      

      Reemplaza PROJECT_ID por el ID del proyecto.

      En el caso de las políticas de autorización de solicitudes, el valor de policyProfile debe ser REQUEST_AUTHZ.

      La acción CUSTOM indica que hay una extensión asociada al proxy.

      Para obtener más información sobre un recurso de política de autorización, consulta la documentación de referencia de authzPolicy.

    2. Importa la política de autorización al proyecto. Usa el comando gcloud beta network-security authz-policies import con los siguientes valores de muestra.

      gcloud beta network-security authz-policies import my-swp-request-authz-policy \
          --source=swp-request-authz-policy.yaml \
          --location=us-west1
      

Configura una extensión para una política de autorización de contenido

En el siguiente ejemplo, se muestra cómo configurar una extensión de autorización que aplica una política de autorización de contenido a la instancia de Secure Web Proxy en us-west1. La política requiere un servicio de saneamiento de contenido para realizar una inspección profunda de las cargas útiles de tu aplicación y permitir o rechazar solicitudes, o bien mutar las solicitudes y respuestas, según sea necesario.

gcloud

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

    1. Define la extensión en un archivo YAML que asocie la extensión con content-sdp.com. Usa los valores de muestra proporcionados.

      cat >swp-authz-content-extension.yaml <<EOF
      name: my-swp-content-authz-ext
      authority: ext11.com
      loadBalancingScheme: INTERNAL_MANAGED
      service: "content-sdp.com"
      failOpen: false
      timeout: "0.1s"
      EOF
      

      En el caso de las políticas de autorización de contenido, el valor de policyProfile debe ser CONTENT_AUTHZ.

      En el caso de las políticas de CONTENT_AUTHZ, no es necesario establecer el valor de wireFormat de forma explícita como EXT_PROC_GRPC. De forma predeterminada, la leyenda usa el protocolo ext_proc.

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

      gcloud beta service-extensions authz-extensions import my-swp-content-authz-ext \
          --source=swp-content-authz-extension.yaml \
          --location=us-west1
      
  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-swp-content-authz-ext con el proxy de Secure Web Proxy, swp-instance1. Usa los valores de muestra proporcionados.

      cat >swp-content-authz-policy.yaml <<EOF
      name: my-swp-content-authz-policy
      target:
        resources:
          - "projects/PROJECT_ID/locations/us-west1/gateways/swp-instance1"
      policyProfile: CONTENT_AUTHZ
      httpRules:
      - to:
          operations:
          - hosts:
            - exact: "example.com"
          - paths:
            - prefix: "/sensitive-stuff"
      action: CUSTOM
      customProvider:
        authzExtension:
          resources:
            - "projects/PROJECT_ID/locations/us-west1/authzExtensions/my-swp-content-authz-ext"
      EOF
      

      En el caso de las políticas de autorización de contenido, el valor de policyProfile se establece como CONTENT_AUTHZ. Este valor indica que el proveedor de políticas personalizadas procesa el tráfico de solicitudes y respuestas, incluido el procesamiento del cuerpo.

    2. Importa la política de autorización al proyecto. Usa el comando gcloud beta network-security authz-policies import con los siguientes valores de muestra.

      gcloud beta network-security authz-policies import my-swp-content-authz-policy \
          --source=swp-content-authz-policy.yaml \
          --location=us-west1
      

Limitaciones de las extensiones de Secure Web Proxy

Consulta las siguientes secciones para obtener información sobre las limitaciones de las extensiones de Secure Web Proxy:

¿Qué sigue?