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
Créez, configurez et déployez une instance Secure Web Proxy nommée
swp-instance1dans un emplacement que vous souhaitez utiliser pour l'extension , par exempleus-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.
Configurez les exemples de services suivants :
Un service d'autorisation à utiliser pour configurer une extension pour une règle d'autorisation de requête. Dans cet exemple, supposons que le nom de domaine complet est
request-authz.com.Un service de nettoyage à utiliser pour configurer une extension pour une règle d'autorisation de contenu. Dans cet exemple, supposons que le nom de domaine complet est
content-sdp.com.
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
Configurez l'extension d'autorisation.
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 EOFLes 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
wireFormatpeut êtreEXT_AUTHZ_GRPCafin que l'appel utilise le protocoleext_authz, bien que le protocoleext_procsoit également compatible.Par défaut,
failOpenest défini surfalse. 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é.Importez l'extension d'autorisation. Utilisez la
gcloud beta service-extensions authz-extensions importcommande 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
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.Définissez une règle d'autorisation qui associe l'extension
my-swp-authz-request-extau 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" EOFRemplacez
PROJECT_IDpar l' ID du projet.Pour les règles d'autorisation de requête, la valeur de
policyProfiledoit êtreREQUEST_AUTHZ.L'action
CUSTOMindique qu'une extension est associée au proxy.Pour en savoir plus sur une ressource de règle d'autorisation, consultez la
authzPolicydocumentation de référence.Importez la règle d'autorisation dans le projet. Utilisez la
gcloud beta network-security authz-policies importcommande 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
Configurez l'extension d'autorisation.
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" EOFPour les règles d'autorisation de contenu, la valeur de
policyProfiledoit êtreCONTENT_AUTHZ.Pour les règles
CONTENT_AUTHZ, la valeurwireFormatn'a pas besoin d'être définie explicitement commeEXT_PROC_GRPC. Par défaut, l'appel utilise le protocoleext_proc.Importez l'extension d'autorisation. Utilisez la
gcloud beta service-extensions authz-extensions importcommande 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
Configurez une règle d'autorisation avec l'extension.
Définissez une règle d'autorisation qui associe l'extension
my-swp-content-authz-extau 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" EOFPour les règles d'autorisation de contenu, la valeur de
policyProfileest définie surCONTENT_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.Importez la règle d'autorisation dans le projet. Utilisez la
gcloud beta network-security authz-policies importcommande 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
- Consultez les exemples Python et Go de
ext_procserveurs dans le dépôt GitHub Service Extensions. - Gérer les extensions