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
defaultedevelop. Para obter mais informações, consulte Gerencie namespaces e cotas.-
Implante uma aplicação Nginx no namespace
defaulte uma aplicação sleep no namespacedevelop. Para obter mais informações, consulte Crie um Deployment sem estado.
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.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique em o nome da instância do ASM. No painel de navegação à esquerda, escolha .
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.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em o nome do seu cluster. No painel de navegação à esquerda, clique em Namespaces and Quotas.
Na página Namespaces, clique em Edit na coluna Actions do namespace default.
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.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em o nome do seu cluster. No painel de navegação à esquerda, clique em .
-
Na página Pods, defina Namespace como default. Na coluna Actions do pod da aplicação Nginx, clique em . 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.
Repita as etapas anteriores para reiniciar o pod da aplicação sleep no namespace
develop.
Etapa 4: Verificar o controle de escopo
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em o nome do seu cluster. No painel de navegação à esquerda, clique em .
-
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.

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.

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.