Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Contrôler la portée d'injection des sidecars OPA

Dernière mise à jour :Aug 11, 2026

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 default et develop. Pour plus d'informations, consultez la rubrique Gérer les namespaces et les quotas.

  • Vous avez déployé une application Nginx dans le namespace default et une application sleep dans le namespace develop. Pour plus d'informations, consultez la rubrique Créer un déploiement sans état.

    Exemples Nginx et sleep

    1. Utilisez le contenu suivant pour créer les fichiers nginx.yaml et sleep.yaml.

      nginx.yaml

      apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
      kind: Deployment
      metadata:
        name: nginx-deployment
      spec:
        selector:
          matchLabels:
            app: nginx
        replicas: 1
        template:
          metadata:
            labels:
              app: nginx
              sidecarset-injected: "true"
          spec:
            containers:
            - name: nginx
              image: nginx:1.14.2
              ports:
              - containerPort: 80
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: nginx
      spec:
        ports:
          - name: http
            port: 80
            protocol: TCP
            targetPort: 80
        selector:
          app: nginx
        type: ClusterIP

      sleep.yaml

      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: sleep
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: sleep
        labels:
          app: sleep
          service: sleep
      spec:
        ports:
        - port: 80
          name: http
        selector:
          app: sleep
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: sleep
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: sleep
        template:
          metadata:
            labels:
              app: sleep
          spec:
            terminationGracePeriodSeconds: 0
            serviceAccountName: sleep
            containers:
            - name: sleep
              image: curlimages/curl
              command: ["/bin/sleep", "infinity"]
              imagePullPolicy: IfNotPresent
              volumeMounts:
              - mountPath: /etc/sleep/tls
                name: secret-volume
            volumes:
            - name: secret-volume
              secret:
                secretName: sleep-secret
                optional: true
      ---
    2. Exécutez les commandes suivantes pour déployer l'application Nginx dans le namespace default et l'application sleep dans le namespace develop :

      kubectl apply -f nginx.yaml -n default
      kubectl apply -f sleep.yaml -n develop

É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.

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez Mesh Security Center > OPA Policy.

  3. 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.

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Namespaces and Quotas.

  3. Sur la page Namespaces, cliquez sur Edit dans la colonne Actions correspondant au namespace default.

  4. 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.

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, sélectionnez Workloads > Pods.

  3. 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 More > Delete. 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.

  4. 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

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, sélectionnez Workloads > Pods.

  3. 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.注入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.sleep

    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=enabled reçoivent l'injection du proxy sidecar OPA, tandis que celles situées dans des namespaces sans ce libellé opa-istio-injection=enabled ne la reçoivent pas. Cela confirme que le contrôle de la portée d'injection fonctionne comme prévu.