Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Controlar o escopo de injeção do sidecar OPA

Última atualização: Jun 28, 2026

O plug-in Open Policy Agent (OPA) define políticas de controle de acesso ao injetar um proxy sidecar OPA nas suas aplicações. Se você precisar de autorização e controle de acesso refinados para aplicações em namespaces específicos, ative o controle de escopo de injeção. Após a ativação desse recurso, o sistema injeta o proxy sidecar OPA apenas nos pods de namespaces rotulados com opa-istio-injection=enabled, permitindo um controle de acesso mais granular.

Pré-requisitos

  • Adicione um cluster a uma instância do ASM com versão 1.12.4.19 ou posterior. Para obter mais informações, consulte Adicionar um cluster a uma instância do ASM.

  • Crie os namespaces default e develop. Para obter mais informações, consulte Gerencie namespaces e cotas.

  • Implante uma aplicação Nginx no namespace default e uma aplicação sleep no namespace develop. Para obter mais informações, consulte Crie um Deployment sem estado.

    Exemplos de Nginx e sleep

    1. Use o conteúdo a seguir para criar os arquivos nginx.yaml e 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. Execute os comandos a seguir para implantar a aplicação Nginx no namespace default e a aplicação sleep no namespace develop:

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

Etapa 1: Ativar o OPA e o controle de escopo

Neste tópico, após a ativação do plug-in OPA e do controle de escopo de injeção, o rótulo opa-istio-injection=enabled é adicionado ao namespace default, mas não ao namespace develop. Em seguida, verifique se o proxy sidecar OPA foi injetado nas aplicações Nginx e Sleep para confirmar que o controle de escopo de injeção funciona corretamente.

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em o nome da instância do ASM. No painel de navegação à esquerda, escolha Mesh Security Center > OPA Policy.

  3. Na página OPA Policy, selecione Enable Open Policy Agent (OPA) Plugin e Enable OPA Injection Scope Control. Em seguida, clique em Enable OPA e confirme clicando em OK na caixa de diálogo Note.

Etapa 2: Rotular o namespace

As etapas a seguir descrevem como adicionar o rótulo opa-istio-injection=enabled ao namespace default no console do ACK. Como alternativa, conecte-se ao cluster com kubectl e execute o comando kubectl label namespace default opa-istio-injection=enabled --overwrite para adicionar o rótulo. Para obter mais informações sobre como se conectar a um cluster, consulte Obter o KubeConfig de um cluster e usar kubectl para se conectar ao cluster.

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em o nome do seu cluster. No painel de navegação à esquerda, clique em Namespaces and Quotas.

  3. Na página Namespaces, clique em Edit na coluna Actions do namespace default.

  4. Na caixa de diálogo Edit Namespace, defina o nome do rótulo como opa-istio-injection e o valor como enabled. Clique em Add e, em seguida, em OK.

Etapa 3: Reiniciar as aplicações

Reinicie as aplicações excluindo seus pods para acionar a injeção automática do proxy sidecar OPA.

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em o nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Pods.

  3. Na página Pods, defina Namespace como default. Na coluna Actions do pod da aplicação Nginx, clique em More > Delete. Na caixa de diálogo Note, clique em OK.

    Se sua aplicação tiver vários pods, exclua todos eles para reiniciá-la. A reinicialização será bem-sucedida quando o status do pod for Running.

  4. Repita as etapas anteriores para reiniciar o pod da aplicação sleep no namespace develop.

Etapa 4: Verificar o controle de escopo

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em o nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Pods.

  3. Na página Pods, verifique se as aplicações Nginx e sleep receberam a injeção do proxy sidecar OPA.

    • Defina Namespace como default e clique em o nome da aplicação Nginx. Na aba Containers, a presença de opa-istio indica que a aplicação Nginx recebeu a injeção do proxy sidecar OPA.注入OPA

    • Defina Namespace como develop e clique em o nome da aplicação sleep. Na aba Containers, a ausência de opa-istio indica que a aplicação sleep não recebeu a injeção do proxy sidecar OPA.sleep

    Esses resultados mostram que, após a ativação do controle de escopo de injeção, o sistema injeta o proxy sidecar OPA apenas em aplicações de namespaces rotulados com opa-istio-injection=enabled. Aplicações em namespaces sem esse rótulo não recebem a injeção. Isso confirma que o controle de escopo de injeção funciona conforme o esperado.