Configurer une extension pour Secure Web Proxy

Les extensions de service permettent aux extensions Secure Web Proxy d'envoyer des appels aux services d'autorisation afin d'insérer un traitement personnalisé dans le chemin de traitement du trafic. Cette page explique comment configurer des extensions Secure Web Proxy avec des règles d'autorisation.

Les extensions Secure Web Proxy sont configurées avec des règles d'autorisation de requête et de contenu en tant qu' extensions d'autorisation. Les extensions basées sur des règles d'autorisation de requête sont configurées pour s'exécuter avant celles basées sur des règles d'autorisation de contenu.

Pour en savoir plus sur le fonctionnement des extensions Secure Web Proxy, consultez la présentation des extensions Secure Web Proxy.

Pour en savoir plus sur les limites liées aux extensions d'autorisation, consultez la page Quotas et limites.

Avant de commencer

  1. Créez, configurez et déployez une instance Secure Web Proxy nommée swp-instance1 dans un emplacement que vous souhaitez utiliser pour l'extension , par exemple us-west1.

    Le proxy doit être déployé avec une règle de sécurité de passerelle avec l'inspection TLS (Transport Layer Security) activée.

  2. Configurez les exemples de services suivants :

    Les extensions Secure Web Proxy ne peuvent cibler que des noms de domaine complets. Lorsque vous utilisez des cibles de nom de domaine complet pour les extensions, le plan de données utilise le protocole HTTP2 avec le chiffrement TLS pour communiquer avec les points de terminaison sur le port 443. Toutefois, le plan de données ne valide pas le certificat du serveur. Pour des raisons de sécurité, assurez-vous que les points de terminaison résolus se trouvent dans le VPC.

Configurer une extension pour une règle d'autorisation de requête

L'exemple suivant montre comment configurer une extension d'autorisation qui applique une règle d'autorisation de requête à l'instance Secure Web Proxy dans us-west1. La règle exige que le trafic passe l'authentification TLS mutuelle à partir d'un compte principal spécifique avant d'être autorisé à atteindre la destination, example.com/mcp.

gcloud

  1. Configurez l'extension d'autorisation.

    1. Définissez l'extension dans un fichier YAML qui l'associe à request-authz.com. Utilisez les exemples de valeurs fournis.

      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
      

      Les extensions Secure Web Proxy sont des ressources régionales et doivent se trouver dans la même région que votre instance Secure Web Proxy.

      Pour les règles d'autorisation de requête, la valeur wireFormat peut être EXT_AUTHZ_GRPC afin que l'appel utilise le protocole ext_authz, bien que le protocole ext_proc soit également compatible.

      Par défaut, failOpen est défini sur false. Si l'extension expire ou échoue, le traitement de la requête s'arrête. Cette option par défaut est préférable lorsque la sécurité ou l'intégrité est prioritaire par rapport à la disponibilité.

    2. Importez l'extension d'autorisation. Utilisez la gcloud beta service-extensions authz-extensions import commande avec les exemples de valeurs suivants.

      gcloud beta service-extensions authz-extensions import my-swp-request-authz-ext \
          --source=swp-request-authz-extension.yaml \
          --location=us-west1
      
  2. Dans le même projet, configurez une règle d'autorisation avec l'extension.

    Pour toute requête adressée à example.com/mcp, la règle exige l'authentification TLS mutuelle à partir d'un compte principal spécifique et délègue ensuite la décision d'autorisation à l'extension d'autorisation, my-swp-authz-request-ext.

    1. Définissez une règle d'autorisation qui associe l'extension my-swp-authz-request-ext au proxy Secure Web Proxy, swp-instance1. Utilisez les exemples de valeurs fournis.

      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
      

      Remplacez PROJECT_ID par l' ID du projet.

      Pour les règles d'autorisation de requête, la valeur de policyProfile doit être REQUEST_AUTHZ.

      L'action CUSTOM indique qu'une extension est associée au proxy.

      Pour en savoir plus sur une ressource de règle d'autorisation, consultez la authzPolicy documentation de référence.

    2. Importez la règle d'autorisation dans le projet. Utilisez la gcloud beta network-security authz-policies import commande avec les exemples de valeurs suivants.

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

Configurer une extension pour une règle d'autorisation de contenu

L'exemple suivant montre comment configurer une extension d'autorisation qui applique une règle d'autorisation de contenu à l'instance Secure Web Proxy dans us-west1. La règle exige qu'un service de nettoyage de contenu effectue une inspection approfondie des charges utiles de votre application pour autoriser ou refuser les requêtes, ou pour les modifier, ainsi que les réponses, selon les besoins.

gcloud

  1. Configurez l'extension d'autorisation.

    1. Définissez l'extension dans un fichier YAML qui l'associe à content-sdp.com. Utilisez les exemples de valeurs fournis.

      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
      

      Pour les règles d'autorisation de contenu, la valeur de policyProfile doit être CONTENT_AUTHZ.

      Pour les règles CONTENT_AUTHZ, la valeur wireFormat n'a pas besoin d'être définie explicitement comme EXT_PROC_GRPC. Par défaut, l'appel utilise le protocole ext_proc.

    2. Importez l'extension d'autorisation. Utilisez la gcloud beta service-extensions authz-extensions import commande avec les exemples de valeurs suivants.

      gcloud beta service-extensions authz-extensions import my-swp-content-authz-ext \
          --source=swp-content-authz-extension.yaml \
          --location=us-west1
      
  2. Configurez une règle d'autorisation avec l'extension.

    1. Définissez une règle d'autorisation qui associe l'extension my-swp-content-authz-ext au proxy Secure Web Proxy, swp-instance1. Utilisez les exemples de valeurs fournis.

      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
      

      Pour les règles d'autorisation de contenu, la valeur de policyProfile est définie sur CONTENT_AUTHZ. Cette valeur indique que le fournisseur de règles personnalisées traite le trafic de requêtes et de réponses, y compris le traitement du corps.

    2. Importez la règle d'autorisation dans le projet. Utilisez la gcloud beta network-security authz-policies import commande avec les exemples de valeurs suivants.

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

Limites des extensions Secure Web Proxy

Pour en savoir plus sur les limites des extensions Secure Web Proxy, consultez les sections suivantes :

  • Pour connaître les limites applicables à toutes les extensions, consultez la section Limites des extensions.

  • Pour connaître les limites applicables aux appels, consultez la section Limites des appels.

Étape suivante