Le plug-in Open Policy Agent (OPA) définit les politiques de contrôle d'accès en injectant un proxy sidecar OPA dans vos applications. Si vous avez besoin d'une autorisation et d'un contrôle d'accès granulaires pour les applications situées dans des namespaces spécifiques, vous pouvez activer le contrôle de la portée d'injection. Une fois cette fonctionnalité activée, un proxy sidecar OPA est injecté uniquement dans les pods des namespaces portant le libellé opa-istio-injection=enabled, ce qui permet un contrôle d'accès plus fin.
Prérequis
Vous avez ajouté un cluster à une instance ASM, et l'instance est en version 1.12.4.19 ou ultérieure. Pour plus d'informations, consultez la rubrique Ajouter un cluster à une instance ASM.
Vous avez créé les namespaces
defaultetdevelop. Pour plus d'informations, consultez la rubrique Gérer les namespaces et les quotas.-
Vous avez déployé une application Nginx dans le namespace
defaultet une application sleep dans le namespacedevelop. Pour plus d'informations, consultez la rubrique Créer un déploiement sans état.
Étape 1 : Activer OPA et le contrôle de la portée
Dans cette rubrique, après avoir activé le plug-in OPA et le contrôle de la portée d'injection, le libellé opa-istio-injection=enabled est ajouté au namespace default, mais le libellé opa-istio-injection=enabled n'est pas ajouté au namespace develop. Vous pouvez ensuite vérifier si le proxy sidecar OPA est injecté dans les applications Nginx et Sleep afin de confirmer que vous contrôlez correctement la portée d'injection du proxy sidecar OPA.
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 OPA Policy, sélectionnez les options Enable Open Policy Agent (OPA) Plugin et Enable OPA Injection Scope Control. Cliquez ensuite sur Enable OPA, puis sur OK dans la boîte de dialogue Note.
Étape 2 : Ajouter un libellé au namespace
Les étapes suivantes expliquent comment ajouter le libellé opa-istio-injection=enabled au namespace default via la console ACK. Vous pouvez également vous connecter au cluster avec kubectl et exécuter la commande kubectl label namespace default opa-istio-injection=enabled --overwrite pour ajouter le libellé. Pour savoir comment se connecter à un cluster, consultez la rubrique Obtenir le KubeConfig d'un cluster et utiliser kubectl pour s'y connecter.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Namespaces and Quotas.
Sur la page Namespaces, cliquez sur Edit dans la colonne Actions correspondant au namespace default.
Dans la boîte de dialogue Edit Namespace, définissez le nom du libellé sur opa-istio-injection et sa valeur sur enabled, cliquez sur Add, puis sur OK.
Étape 3 : Redémarrer les applications
Redémarrez les applications en supprimant leurs pods pour déclencher l'injection automatique du proxy sidecar OPA.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, sélectionnez .
-
Sur la page Pods, définissez le paramètre Namespace sur default. Dans la colonne Actions correspondant au pod de l'application Nginx, sélectionnez . Dans la boîte de dialogue Note, cliquez sur OK.
Si votre application comporte plusieurs pods, supprimez-les tous pour la redémarrer. Le redémarrage est réussi lorsque le statut du pod est Running.
Répétez les étapes précédentes pour redémarrer le pod de l'application sleep dans le namespace
develop.
Étape 4 : Vérifier le contrôle de la portée
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, sélectionnez .
-
Sur la page Pods, vérifiez si les applications Nginx et sleep ont reçu l'injection du proxy sidecar OPA.
Définissez le paramètre Namespace sur default et cliquez sur le nom de l'application Nginx. Sous l'onglet Containers, vous verrez apparaître opa-istio, ce qui indique que l'application Nginx a bien reçu l'injection du proxy sidecar OPA.

Définissez le paramètre Namespace sur develop et cliquez sur le nom de l'application sleep. Sous l'onglet Containers, vous ne verrez pas opa-istio, ce qui indique que l'application sleep n'a pas reçu l'injection du proxy sidecar OPA.

Ces résultats montrent qu'après activation du contrôle de la portée d'injection, les applications situées dans des namespaces portant le libellé
opa-istio-injection=enabledreçoivent l'injection du proxy sidecar OPA, tandis que celles situées dans des namespaces sans ce libelléopa-istio-injection=enabledne la reçoivent pas. Cela confirme que le contrôle de la portée d'injection fonctionne comme prévu.