As malhas de serviço roteiam tráfego HTTP entre microsserviços. No entanto, sem políticas de autorização, qualquer serviço pode chamar outro livremente. As políticas de autorização permitem controlar quais serviços enviam requisições HTTP a outros serviços com base na identidade (service account) e na operação (método HTTP, caminho). Comece com uma linha de base de negação total e conceda acesso incrementalmente para estabelecer um modelo de segurança de confiança zero.
Este tópico demonstra como criar políticas de autorização passo a passo usando o aplicativo de exemplo Bookinfo. Você criará quatro políticas que abrem progressivamente o acesso a cada serviço na cadeia de requisições.
Como funcionam as políticas de autorização
Uma política de autorização consiste em três partes:
|
Parte |
Finalidade |
Exemplo |
|
Selector |
Direciona workloads específicos por rótulo |
|
|
Action |
Especifica se deve permitir ou negar requisições correspondentes |
|
|
Rules |
Define critérios de correspondência para a origem da requisição ( |
Principal de origem, método HTTP |
Comportamentos principais:
Uma especificação vazia (
spec: {}) sem seletor aplica-se a todos os workloads no namespace e nega todas as requisições. Isso serve como linha de base de negação total.Omitir
fromem uma regra faz com que requisições de todas as origens correspondam, desde que as condiçõestosejam atendidas. Isso gera implicações de segurança: a política permite efetivamente que todos os usuários e workloads alcancem a operação de destino.
Pré-requisitos
Antes de começar, verifique se você tem:
O aplicativo Bookinfo implantado na instância ASM. Para obter detalhes, consulte Implantar um aplicativo em uma instância ASM
Recursos Istio configurados para roteamento de tráfego. Para obter detalhes, consulte Usar recursos Istio para rotear tráfego para diferentes versões de um serviço
Etapa 1: Criar uma política de linha de base de negação total
Crie uma política de autorização em branco que negue todas as requisições para workloads no namespace default. Isso estabelece a linha de base de confiança zero.
Faça logon no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em no nome da instância ASM. No painel de navegação à esquerda, escolha Mesh Security Center > AuthorizationPolicy. Clique em Create from YAML.
-
Selecione default na lista suspensa Namespace, escolha um modelo, cole o YAML a seguir no editor de código e clique em Create. A política allow-nothing aparece na página AuthorizationPolicy.
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: allow-nothing namespace: default spec: {} -
Verifique a política. Abra
http://<ASM-gateway-IP>/productpageno navegador. A página retornaRBAC: access denied, o que confirma o bloqueio de todas as requisições.NotaPara obter instruções sobre como obter o endereço IP do gateway ASM, consulte Usar recursos Istio para rotear tráfego para diferentes versões de um serviço.
Etapa 2: Permitir acesso ao serviço productpage
Crie uma política que permita requisições HTTP GET para o workload productpage. Essa política omite o campo from, portanto, permite requisições GET de qualquer origem, incluindo o gateway ASM que atende tráfego externo.
Faça logon no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em no nome da instância ASM. No painel de navegação à esquerda, escolha Mesh Security Center > AuthorizationPolicy.
Crie a política usando um dos métodos a seguir.
Método 1: YAML
Na página AuthorizationPolicy, clique em Create from YAML.
-
Selecione default na lista suspensa Namespace, escolha um modelo, cole o YAML a seguir no editor de código e clique em Create.
apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: "productpage-viewer" namespace: default spec: selector: matchLabels: app: productpage action: ALLOW rules: - to: - operation: methods: ["GET"]
Método 2: Interface do console
Na página AuthorizationPolicy, clique em Create.
-
Configure os parâmetros a seguir e clique em Create.
Parâmetro
Valor
Name
productpage-viewerPolicy Type
ALLOW
Namespace (na aba Workload Scope)
default
Effective Scope
Service
Workload
productpage
Request Matching Rules
Ative Methods em Add Request Target e defina o valor como
GET
A política productpage-viewer aparece na página AuthorizationPolicy.
-
Verifique a política. Abra
http://<ASM-gateway-IP>/productpageno navegador. A página productpage carrega, mas as seções de detalhes e avaliações apresentam erros. Esse comportamento é esperado, pois você autorizou apenas o acesso ao próprio serviço productpage. Os serviços downstream (details e reviews) permanecem bloqueados pela política de negação total.
Etapa 3: Permitir acesso ao serviço details
Permita que o serviço productpage chame o serviço details restringindo o acesso a requisições provenientes da service account bookinfo-productpage.
Localizar a service account do productpage
Faça logon no console ACK. No painel de navegação à esquerda, clique em Clusters.
Clique em no nome do cluster. No painel de navegação à esquerda, escolha Workloads > Deployments.
-
Localize o deployment productpage-v1. Escolha More > View in YAML na coluna Actions. Localize o campo
serviceAccount. O valor ébookinfo-productpage.
Criar a política de autorização
Faça logon no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em no nome da instância ASM. No painel de navegação à esquerda, escolha Mesh Security Center > AuthorizationPolicy.
Crie a política usando um dos métodos a seguir.
Método 1: YAML
Na página AuthorizationPolicy, clique em Create from YAML.
-
Selecione default na lista suspensa Namespace, escolha um modelo, cole o YAML a seguir no editor de código e clique em Create.
kind: AuthorizationPolicy apiVersion: security.istio.io/v1beta1 metadata: name: details-viewer namespace: default spec: action: ALLOW rules: - to: - operation: methods: - GET - from: - source: principals: - cluster.local/ns/default/sa/bookinfo-productpage # Service account from the previous step selector: matchLabels: app: details
Método 2: Interface do console
Na página AuthorizationPolicy, clique em Create.
-
Configure os parâmetros a seguir e clique em Create.
Notabookinfo-productpageé o valor deserviceAccountobtido na etapa anterior.Parâmetro
Valor
Name
details-viewerPolicy Type
ALLOW
Namespace (na aba Workload Scope)
default
Effective Scope
Service
Workload
details
Request Matching Rules
Em Add Request Source, ative Principals e defina o valor como
cluster.local/ns/default/sa/bookinfo-productpage. Em Add Request Target, ative Methods e defina o valor comoGET.
A política details-viewer aparece na página AuthorizationPolicy.
-
Verifique a política. Abra
http://<ASM-gateway-IP>/productpageno navegador. A seção de detalhes à esquerda agora carrega corretamente. A seção de avaliações à direita ainda apresenta erro porque nenhuma política foi criada para o serviço reviews até o momento.
Etapa 4: Permitir acesso ao serviço reviews
Crie uma política de autorização para o serviço reviews usando a mesma service account bookinfo-productpage como origem autorizada.
Faça logon no console ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.
Na página Mesh Management, clique em no nome da instância ASM. No painel de navegação à esquerda, escolha Mesh Security Center > AuthorizationPolicy.
Crie a política usando um dos métodos a seguir.
Método 1: YAML
Na página AuthorizationPolicy, clique em Create from YAML.
-
Selecione default na lista suspensa Namespace, escolha um modelo, cole o YAML a seguir no editor de código e clique em Create.
kind: AuthorizationPolicy apiVersion: security.istio.io/v1beta1 metadata: name: reviews-viewer namespace: default spec: action: ALLOW rules: - to: - operation: methods: - GET - from: - source: principals: - cluster.local/ns/default/sa/bookinfo-productpage selector: matchLabels: app: reviews
Método 2: Interface do console
Na página AuthorizationPolicy, clique em Create.
-
Configure os parâmetros a seguir e clique em Create.
Notabookinfo-productpageé o valor deserviceAccountobtido na Etapa 3.Parâmetro
Valor
Name
reviews-viewerPolicy Type
ALLOW
Namespace (na aba Workload Scope)
default
Effective Scope
Service
Workload
reviews
Request Matching Rules
Em Add Request Source, ative Principals e defina o valor como
cluster.local/ns/default/sa/bookinfo-productpage. Em Add Request Target, ative Methods e defina o valor comoGET.
A política reviews-viewer aparece na página AuthorizationPolicy.
-
Verifique a política. Abra
http://<ASM-gateway-IP>/productpageno navegador. Tanto a seção de detalhes (esquerda) quanto a seção de avaliações (direita) agora carregam corretamente. Todos os serviços na cadeia de requisições do Bookinfo estão autorizados.
Limpeza
Para remover as políticas de autorização criadas neste tópico, exclua-as da página AuthorizationPolicy no console ASM. Selecione cada política e exclua-a:
allow-nothingproductpage-viewerdetails-viewerreviews-viewer
Manter a política de negação total allow-nothing ativa bloqueia todo o tráfego para serviços no namespace default. Sempre remova-a quando não for mais necessária.
Tópicos relacionados
Testar políticas com segurança: Execute políticas de autorização em modo de teste para verificar o comportamento antes da aplicação. Consulte Executar uma política de autorização ASM em modo de teste.
Proteger tráfego TCP: Configure políticas de autorização para requisições TCP para controlar o tráfego L4. Consulte Configurar políticas de autorização para requisições TCP.
Controlar acesso externo: Restrinja o tráfego de saída de serviços da malha para endpoints externos. Consulte Controlar acesso a um site externo e Controlar acesso a um banco de dados externo.
Monitorar logs de acesso: Personalize os logs de acesso do gateway ASM para detectar riscos de segurança. Consulte Configurar coleta de logs de acesso para um gateway ASM.
Ativar trilhas de auditoria: Rastreie operações em recursos ASM e configure alertas. Consulte Usar o recurso de auditoria de operações KubeAPI no ASM e Configurar alertas de auditoria para operações em recursos ASM.