Pour personnaliser une politique de contrôle d'accès selon vos besoins métier, configurez une politique de sécurité Service Mesh (ASM) afin de mettre en œuvre une autorisation personnalisée. Les requêtes sont ainsi transférées vers un service d'autorisation personnalisé que vous spécifiez. Ce service authentifie les requêtes. Cette approche permet de gérer une logique d'authentification complexe, de réduire les coûts de développement et de maintenance, et d'améliorer l'efficacité du développement.
Prérequis
Procédure
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page ASMSecurityPolicy, cliquez sur Create. Dans la boîte de dialogue Create ASMSecurityPolicy, cliquez sur Custom Authorization Service, puis sur OK.
-
Sur la page Create Custom Authorization Service, dans l'assistant Custom Authorization Service Configuration, sélectionnez l'onglet Custom authorization service (HTTP or gRPC protocol) implemented based on envoy.ext_authz. Configurez ensuite les paramètres et cliquez sur Next.
Cet exemple utilise les configurations suivantes. Pour plus d'informations sur les paramètres, consultez la rubrique Connexion à un service d'autorisation personnalisé utilisant HTTP. Configurez les paramètres suivants : ASM security policy name (par exemple,
test), Protocol (HTTP ou gRPC), Service address (par exemple,ext-authz.default.svc.cluster.local), Service port (par exemple,8000) et Timeout (par exemple,10secondes). Activez éventuellement les commutateurs Allow requests when authorization service is unavailable et Use custom error code when authorization service is unavailable. Activez le commutateur Include request headers in check (includeRequestHeadersInCheck) et ajoutez les en-têtes requis à la liste ci-dessous, tels quecookie,authorization,x-forwarded-access-token,x-forwarded-user,x-forwarded-email,x-forwarded-proto,proxy-authorization,user-agent,x-forwarded-host,from,x-forwarded-for,acceptet l'en-tête personnaliséx-ext-authz. Activez le commutateur Override headers on allow (headersToUpstreamOnAllow) et ajoutez les en-têtes à remplacer, tels queauthorization,cookie,path,x-auth-request-access-token,x-forwarded-access-tokenetx-ext-authz-check-result. Activez le commutateur Override headers on deny (headersToDownstreamOnDeny) et ajoutez les en-têtes à remplacer, tels quecontent-type,set-cookieetx-ext-authz-check-result. L'en-têtex-ext-authz-check-resultest un en-tête personnalisé ; il doit être ajouté aux listes d'autorisation et de refus. -
Dans l'assistant Workload and Match Rules, cliquez sur Add Workload Group. Dans la boîte de dialogue New Workload Group, configurez les paramètres et cliquez sur Submit.
Le tableau suivant décrit la configuration des paramètres pour cet exemple.
Paramètre
Description
Workload Group Name
Définissez le nom sur test-policy.
Workload List
-
Cliquez sur Add Workload.
-
Dans la boîte de dialogue Add Workload, sélectionnez Workload Scope. Définissez Namespaces sur default et Workload Type sur Service.
-
Dans la zone Select workloads, sélectionnez productpage, cliquez sur l'icône
pour la déplacer vers la zone selected, puis cliquez sur OK.
Match Rule List
Définissez Match Mode sur The selected request must be authenticated. Sélectionnez Custom Matching Rules pour Matching Rules. Ensuite, activez le commutateur Path et définissez le chemin d'accès sur /productpage.
Après la création de la politique, le message « Politique de sécurité ASM créée avec succès » s'affiche à l'étape Complete de l'assistant. Cliquez sur View YAML pour afficher le fichier YAML de la ressource créée, ou sur Complete pour revenir à la page ASMSecurityPolicy et consulter la nouvelle politique.
-
-
Vérifiez si la configuration d'autorisation personnalisée prend effet.
-
Exécutez la commande suivante pour initier une requête avec l'en-tête
x-ext-authz: allowafin d'accéder au service productpage :curl -I -H "x-ext-authz: allow" http://${IP address of the ingress gateway}/productpageRésultat attendu :
HTTP/1.1 200 OK content-type: text/html; charset=utf-8 content-length: 5288 server: istio-envoy date: Tue, 17 Jan 2023 07:53:14 GMT x-envoy-upstream-service-time: 20Le résultat indique que l'autorisation personnalisée est déclenchée et que l'authentification réussit.
-
Exécutez la commande suivante pour initier une requête avec l'en-tête
x-ext-authz: denyafin d'accéder au service productpage :curl -I -H "x-ext-authz: deny" http://${IP address of the ingress gateway}/productpageRésultat attendu :
HTTP/1.1 403 Forbidden x-ext-authz-check-result: denied date: Tue, 17 Jan 2023 07:55:27 GMT server: istio-envoy x-envoy-upstream-service-time: 2 transfer-encoding: chunkedLe résultat indique que l'autorisation personnalisée est déclenchée, mais que l'authentification échoue.
Les résultats précédents confirment que la configuration d'autorisation personnalisée prend effet.
-
Références
Pour plus d'informations sur les concepts et les fonctionnalités des politiques de sécurité ASM, consultez la rubrique Présentation des politiques de sécurité ASM.
Vous pouvez activer la fonctionnalité d'audit du maillage pour enregistrer ou suivre les opérations quotidiennes des différents utilisateurs. Vous pouvez également configurer des alertes d'audit pour les opérations sur les ressources ASM et envoyer des notifications d'alerte aux contacts concernés en temps opportun lorsque des ressources importantes sont modifiées. Pour plus d'informations, consultez les rubriques Utilisation de la fonctionnalité d'audit des opérations KubeAPI dans ASM et Configuration des alertes d'audit pour les opérations sur les ressources ASM.