Une politique d'autorisation mal configurée peut bloquer le trafic légitime ou autoriser un accès non autorisé. Le mode essai vous permet de valider une politique avant de l'appliquer : la politique évalue chaque requête et enregistre le résultat, mais n'autorise ni ne refuse jamais le trafic.
Cette rubrique explique comment déployer deux applications de test, créer une politique d'autorisation en mode essai, inspecter les journaux d'évaluation, puis désactiver le mode essai pour appliquer la politique.
Prérequis
Une instance ASM (version 1.14 ou ultérieure) avec au moins un cluster ajouté. Pour ajouter un cluster, consultez la rubrique Ajouter un cluster à une instance ASM. Pour mettre à jour votre instance ASM, consultez la rubrique Mettre à jour une instance ASM.
Un namespace nommé
fooavec l'injection automatique du proxy sidecar activée. Pour plus de détails, consultez la rubrique Gérer les namespaces globaux.kubectl connecté au cluster. Pour plus de détails, consultez la rubrique Obtenir le fichier kubeconfig d'un cluster et utiliser kubectl pour se connecter au cluster.
Étape 1 : Déployer les applications de test et vérifier la connectivité
Déployez deux charges de travail exemples : sleep (un client basé sur curl) et HTTPBin (un serveur echo HTTP), puis confirmez qu'elles peuvent communiquer.
-
Créez un fichier
sleep.yamlavec le contenu suivant : -
Déployez l'application sleep dans le namespace
foo:kubectl apply -f sleep.yaml -n foo -
Créez un fichier
httpbin.yamlavec le contenu suivant : -
Déployez l'application HTTPBin dans le namespace
foo:kubectl apply -f httpbin.yaml -n foo -
Envoyez 20 requêtes depuis le pod sleep vers HTTPBin pour vérifier la connectivité :
for i in {1..20}; do kubectl exec "$(kubectl get pod -l app=sleep -n foo -o jsonpath={.items..metadata.name})" -c sleep -n foo -- curl http://httpbin.foo:8000/headers -s -o /dev/null -w "%{http_code}\n"; doneRésultat attendu :
200 200 200 ...Les 20 requêtes renvoient toutes le code
200, ce qui confirme la connectivité entre les deux applications.
Étape 2 : Créer une politique d'autorisation avec le mode essai activé
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez Service Mesh > Mesh Management.
Sur la page Mesh Management, cliquez sur le nom de votre instance ASM. Dans le volet de navigation de gauche, sélectionnez Mesh Security Center > AuthorizationPolicy. Cliquez sur Create.
-
Configurez la politique d'autorisation pour refuser des requêtes spécifiques, activez l'interrupteur du mode essai, puis cliquez sur Create.

Étape 3 : Vérifier les résultats du mode essai via les journaux
En mode essai, la politique évalue chaque requête sans appliquer ses décisions. Le proxy sidecar enregistre chaque résultat d'évaluation dans ses journaux.
-
Envoyez 20 requêtes depuis le pod sleep vers HTTPBin :
for i in {1..20}; do kubectl exec "$(kubectl get pod -l app=sleep -n foo -o jsonpath={.items..metadata.name})" -c sleep -n foo -- curl http://httpbin.foo:8000/headers -s -o /dev/null -w "%{http_code}\n"; doneRésultat attendu :
200 200 200 ...Toutes les requêtes renvoient toujours le code
200. La politique a évalué chaque requête, mais n'a pas appliqué le refus. -
Définissez le niveau de journalisation RBAC du proxy sidecar HTTPBin sur
debugafin que les résultats d'évaluation du mode essai apparaissent dans les journaux :kubectl exec "$(kubectl get pod -l app=httpbin -n foo -o jsonpath={.items..metadata.name})" -c istio-proxy -n foo -- curl -X POST 127.0.0.1:15000/logging?rbac=debugRésultat attendu :
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0active loggers: ... rbac: debug ... 100 1028 0 1028 0 0 1003k 0 --:--:-- --:--:-- --:--:-- 1003k -
Filtrez les journaux du proxy sidecar pour identifier les entrées de refus en mode essai :
kubectl logs "$(kubectl -n foo -l app=httpbin get pods -o jsonpath={.items..metadata.name})" -c istio-proxy -n foo | grep "shadow denied"Exemple de résultat :
2023-12-20T03:58:47.107915Z debug envoy rbac external/envoy/source/extensions/filters/http/rbac/rbac_filter.cc:130 shadow denied, matched policy ns[foo]-policy[test]-rule[0] thread=32 2023-12-20T03:58:48.800098Z debug envoy rbac external/envoy/source/extensions/filters/http/rbac/rbac_filter.cc:130 shadow denied, matched policy ns[foo]-policy[test]-rule[0] thread=33 2023-12-20T03:58:50.420179Z debug envoy rbac external/envoy/source/extensions/filters/http/rbac/rbac_filter.cc:130 shadow denied, matched policy ns[foo]-policy[test]-rule[0] thread=32Chaque entrée
shadow deniedindique que la politique aurait refusé la requête. La portionmatched policy ns[foo]-policy[test]-rule[0]identifie la politique et la règle correspondantes.
Étape 4 : Appliquer la politique d'autorisation
Une fois que vous avez confirmé que les résultats du mode essai correspondent à vos attentes, désactivez le mode essai pour commencer à appliquer la politique.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez Service Mesh > Mesh Management.
Sur la page Mesh Management, cliquez sur le nom de votre instance ASM. Dans le volet de navigation de gauche, sélectionnez Mesh Security Center > AuthorizationPolicy.
Recherchez la politique d'autorisation créée à l'étape 2, désactivez l'interrupteur dans la colonne Commissioning mode, puis cliquez sur OK dans la boîte de dialogue Submit.
-
Envoyez 20 requêtes pour confirmer que la politique applique bien les refus :
for i in {1..20}; do kubectl exec "$(kubectl get pod -l app=sleep -n foo -o jsonpath={.items..metadata.name})" -c sleep -n foo -- curl http://httpbin.foo:8000/headers -s -o /dev/null -w "%{http_code}\n"; doneRésultat attendu :
403 403 403 ...Toutes les requêtes renvoient le code
403, ce qui confirme que la politique refuse désormais activement le trafic. -
Réinitialisez le niveau de journalisation RBAC du proxy sidecar HTTPBin sur
warning:kubectl exec "$(kubectl get pod -l app=httpbin -n foo -o jsonpath={.items..metadata.name})" -c istio-proxy -n foo -- curl -X POST 127.0.0.1:15000/logging?rbac=warningRésultat attendu :
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- --:--:-- 0active loggers: ... rbac: warning ... 100 1028 0 1028 0 0 1003k 0 --:--:-- --:--:-- --:--:-- 1003k
Étapes suivantes
Configurer des politiques d'autorisation pour le contrôle d'accès aux charges de travail — Restreignez l'accès par chemin de requête, méthode ou adresse IP client.
Configurer des politiques d'autorisation pour les requêtes HTTP et Configurer des politiques d'autorisation pour les requêtes TCP — Contrôle d'accès granulaire entre services.
Utiliser une politique d'autorisation pour contrôler le trafic d'accès depuis les services d'une instance ASM vers un site web externe et Utiliser une politique d'autorisation pour contrôler le trafic d'accès depuis les services d'une instance ASM vers une base de données externe — Contrôle d'accès sortant pour les services du maillage.
Configurer les fonctionnalités de génération et de collecte des journaux d'accès d'une passerelle ASM — Personnalisez les journaux d'accès de la passerelle pour la surveillance de la sécurité.
Utiliser la fonctionnalité d'audit des opérations KubeAPI dans ASM et Configurer des alertes d'audit pour les opérations sur les ressources ASM — Suivez et alertez sur les modifications des ressources ASM.