No Anthos Service Mesh 1.5 e posterior, o TLS mútuo (mm) automático é ativado por padrão. Com o mTLS automático, um proxy sidecar do cliente detecta automaticamente se o servidor tem um sidecar. O sidecar do cliente envia o mTLS para as cargas de trabalho que têm sidecars e um tráfego de texto simples para as que não têm. No entanto, os serviços aceitam o tráfego de texto simples e mTLS. Ao injetar proxies de arquivo secundário nos seus pods, recomendamos que você também configure os serviços para aceitar apenas o tráfego mTLS.
Com o Anthos Service Mesh, você aplica o mTLS fora do código do aplicativo ao aplicar um único arquivo YAML. O Anthos Service Mesh oferece flexibilidade para aplicar uma política de autenticação a toda a malha de serviço, a um namespace ou a uma carga de trabalho individual.
Como aplicar o mTLS em toda a malha
Para impedir que todos os serviços na malha aceitem tráfego de texto simples, defina
uma política PeerAuthentication
para toda a malha com o modo mTLS definido como STRICT
(o
padrão é PERMISSIVE
). para criar um anexo da VLAN de monitoramento. A política PeerAuthentication
em toda a malha não pode
ter um seletor e precisa ser aplicada no namespace raiz, istio-system
. Quando
você implanta a política, o plano de controle provisiona automaticamente certificados TLS
para que as cargas de trabalho possam ser autenticadas entre si.
Para aplicar o mTLS em toda a malha:
kubectl apply -f - <<EOF
apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
name: "AUTH_POLICY_NAME"
namespace: "istio-system"
spec:
mtls:
mode: STRICT
EOF
Resposta esperada:
peerauthentication.security.istio.io/AUTH_POLICY_NAME created
Ativar o TLS mútuo por namespace
Para ativar o mTLS para todas as cargas de trabalho em um namespace específico, use uma
política de autenticação em todo o namespace. A especificação da política é a
mesma para uma política em toda a malha, mas você especifica o namespace a que ela se aplica
em metadata
.
kubectl apply -f - <<EOF
apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
name: "AUTH_POLICY_NAME"
namespace: "NAMESPACE"
spec:
mtls:
mode: STRICT
EOF
Saída esperada:
peerauthentication.security.istio.io/AUTH_POLICY_NAME created
Ativar o TLS mútuo por carga de trabalho
Para definir uma política PeerAuthentication
para uma carga de trabalho específica, configure
a seção selector
e especifique os rótulos que correspondem à carga de trabalho pretendida.
No entanto, o Anthos Service Mesh não agrega políticas no nível da carga de trabalho para o tráfego mTLS de
saída para um serviço. Você precisa configurar uma regra de destino para gerenciar esse comportamento.
Aplique uma política de autenticação a uma carga de trabalho específica no seu namespace:
cat <<EOF | kubectl apply -n NAMESPACE -f - apiVersion: "security.istio.io/v1beta1" kind: "PeerAuthentication" metadata: name: "AUTH_POLICY_NAME" namespace: "NAMESPACE" spec: selector: matchLabels: app: WORKLOAD mtls: mode: STRICT EOF
Resposta esperada:
peerauthentication.security.istio.io/AUTH_POLICY_NAME created
Configure uma regra de destino correspondente:
cat <<EOF | kubectl apply -n NAMESPACE -f - apiVersion: "networking.istio.io/v1alpha3" kind: "DestinationRule" metadata: name: "DEST_RULE_NAME" spec: host: "WORKLOAD.NAMESPACE.svc.cluster.local" trafficPolicy: tls: mode: ISTIO_MUTUAL EOF
Resposta esperada:
destinationrule.networking.istio.io/WORKLOAD created
Como encontrar e excluir PeerAuthentication
políticas
Para uma lista de todas as políticas PeerAuthentication
na malha de serviço:
kubectl get peerauthentication --all-namespaces
Se houver uma política PeerAuthentication
em vigor, exclua-a com
kubectl delete
:
kubectl delete peerauthentication -n NAMESPACE AUTH_POLICY_NAME