Como configurar a segurança de transporte

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.

mTLS mútuo

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.

  1. 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
  2. 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

A seguir