Configurar uma extensão para o Secure Web Proxy

As Service Extensions permitem que as extensões do Secure Web Proxy enviem chamadas para serviços de autorização para inserir processamento personalizado no caminho de processamento de tráfego. Nesta página, descrevemos como configurar extensões do Secure Web Proxy com políticas de autorização.

As extensões do Secure Web Proxy são configuradas com políticas de autorização de solicitação e conteúdo como extensões de autorização. As extensões baseadas em políticas de autorização de solicitação são configuradas para serem executadas antes daquelas baseadas em políticas de autorização de conteúdo.

Para saber como as extensões do Secure Web Proxy funcionam, consulte Visão geral das extensões do Secure Web Proxy.

Para informações sobre os limites relacionados a extensões de autorização, consulte a página Cotas e limites.

Antes de começar

  1. Crie, configure e implante uma instância do Secure Web Proxy chamada swp-instance1 em um local que você quer usar para a extensão, por exemplo, us-west1.

    O proxy precisa ser implantado com uma política de segurança do gateway com a inspeção Transport Layer Security (TLS) ativada.

  2. Configure os seguintes serviços de exemplo:

    As extensões do Secure Web Proxy só podem segmentar nomes de domínio totalmente qualificados (FQDNs). Quando você usa destinos FQDN para extensões, o plano de dados usa o protocolo HTTP2 com criptografia TLS para se comunicar com os endpoints na porta 443. No entanto, o plano de dados não valida o certificado do servidor. Por motivos de segurança, verifique se os endpoints resolvidos estão na VPC.

Configurar uma extensão para uma política de autorização de solicitação

O exemplo a seguir mostra como configurar uma extensão de autorização que aplica uma política de autorização de solicitação à instância do Secure Web Proxy em us-west1. A política exige que o tráfego passe pela autenticação TLS mútua de um principal específico antes de poder chegar ao destino, example.com/mcp.

gcloud

  1. Configure a extensão de autorização.

    1. Defina a extensão em um arquivo YAML que a associa ao request-authz.com. Use os valores de amostra fornecidos.

      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
      

      As extensões do Secure Web Proxy são recursos regionais e precisam estar na mesma região que a instância do Secure Web Proxy.

      Para políticas de autorização de solicitação, o valor wireFormat pode ser EXT_AUTHZ_GRPC para que a callout use o protocolo ext_authz, embora o protocolo ext_proc também seja compatível.

      Por padrão, failOpen é definido como false. Se a extensão atingir o tempo limite ou falhar, o processamento da solicitação será interrompido. Essa opção padrão é preferível quando a prioridade é a segurança ou a integridade em vez da disponibilidade.

    2. Importe a extensão de autorização. Use o comando gcloud beta service-extensions authz-extensions import com os seguintes valores de exemplo.

      gcloud beta service-extensions authz-extensions import my-swp-request-authz-ext \
          --source=swp-request-authz-extension.yaml \
          --location=us-west1
      
  2. No mesmo projeto, configure uma política de autorização com a extensão.

    Para qualquer solicitação a example.com/mcp, a política exige autenticação TLS mútua de uma principal específica e delega ainda mais a decisão de autorização à extensão de autorização, my-swp-authz-request-ext.

    1. Defina uma política de autorização que associe a extensão my-swp-authz-request-ext ao proxy do Secure Web Proxy swp-instance1. Use os valores de amostra fornecidos.

      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
      

      Substitua PROJECT_ID pelo ID do projeto.

      Para políticas de autorização de solicitação, o valor de policyProfile precisa ser REQUEST_AUTHZ.

      A ação CUSTOM indica que uma extensão está associada ao proxy.

      Para mais informações sobre um recurso de política de autorização, consulte a documentação de referência do authzPolicy.

    2. Importe a política de autorização para o projeto. Use o comando gcloud beta network-security authz-policies import com os seguintes valores de exemplo.

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

Configurar uma extensão para uma política de autorização de conteúdo

O exemplo a seguir mostra como configurar uma extensão de autorização que aplica uma política de autorização de conteúdo à instância do Secure Web Proxy em us-west1. A política exige um serviço de limpeza de conteúdo para realizar uma inspeção detalhada dos payloads de aplicativos e permitir ou negar solicitações ou alterar as solicitações e respostas, conforme necessário.

gcloud

  1. Configure a extensão de autorização.

    1. Defina a extensão em um arquivo YAML que a associa ao content-sdp.com. Use os valores de amostra fornecidos.

      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
      

      Para políticas de autorização de conteúdo, o valor de policyProfile precisa ser CONTENT_AUTHZ.

      Para políticas de CONTENT_AUTHZ, o valor wireFormat não precisa ser definido explicitamente como EXT_PROC_GRPC. Por padrão, o destaque usa o protocolo ext_proc.

    2. Importe a extensão de autorização. Use o comando gcloud beta service-extensions authz-extensions import com os seguintes valores de exemplo.

      gcloud beta service-extensions authz-extensions import my-swp-content-authz-ext \
          --source=swp-content-authz-extension.yaml \
          --location=us-west1
      
  2. Configure uma política de autorização com a extensão.

    1. Defina uma política de autorização que associe a extensão my-swp-content-authz-ext ao proxy do Secure Web Proxy, swp-instance1. Use os valores de amostra fornecidos.

      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
      

      Para políticas de autorização de conteúdo, o valor de policyProfile é definido como CONTENT_AUTHZ. Esse valor indica que o provedor de política personalizada processa o tráfego de solicitação e resposta, incluindo o processamento do corpo.

    2. Importe a política de autorização para o projeto. Use o comando gcloud beta network-security authz-policies import com os seguintes valores de exemplo.

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

Limitações das extensões do Secure Web Proxy

Consulte as seções a seguir para informações sobre as limitações das extensões do Secure Web Proxy:

A seguir