Configurazione della sicurezza del livello di trasporto

In Anthos Service Mesh 1.5 e versioni successive, il TLS automatico (mTLS automatico) è abilitato per impostazione predefinita. Con mTLS automatico, un proxy sidecar client rileva automaticamente se il server ha un file collaterale. Il client collaterale invia mTLS ai carichi di lavoro con sidecar e invia testo non crittografato ai carichi di lavoro senza sidecar. Tuttavia, tieni presente che i servizi accettano sia il traffico in testo non crittografato che il traffico mTLS. Quando inserisci i proxy sidecar nei tuoi pod, ti consigliamo anche di configurare i tuoi servizi in modo che accettino solo il traffico mTLS.

Con Anthos Service Mesh, puoi configurare i tuoi servizi in modo che accettino mTLS solo applicando un criterio PeerAuthentication. Anthos Service Mesh ti offre la flessibilità di applicare il criterio all'intero mesh di servizi, a uno spazio dei nomi o a un singolo carico di lavoro. Quando specifichi un criterio per un carico di lavoro specifico, questo ha la precedenza. Ad esempio, un criterio specifico per carico di lavoro ha la precedenza su uno specifico per lo spazio dei nomi. Se non viene specificato alcun criterio per il carico di lavoro, questo eredita il criterio dallo spazio dei nomi o dal mesh.

Abilita TLS reciproco per spazio dei nomi

Per abilitare mTLS per tutti i carichi di lavoro all'interno di un determinato spazio dei nomi, utilizza un criterio di autenticazione a livello di spazio dei nomi. Specifica lo spazio dei nomi a cui si applica in metadata.

kubectl apply -f - <<EOF
apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
  name: "AUTH_POLICY_NAME"
  namespace: "NAMESPACE"
spec:
  mtls:
    mode: STRICT
EOF

Output previsto:

peerauthentication.security.istio.io/AUTH_POLICY_NAME created

Abilita TLS reciproco per carico di lavoro

Per impostare un criterio PeerAuthentication per un carico di lavoro specifico, devi configurare la sezione selector e specificare le etichette che corrispondono al carico di lavoro desiderato. Tuttavia, Anthos Service Mesh non può aggregare i criteri a livello di carico di lavoro per il traffico mTLS in uscita verso un servizio. Per gestire tale comportamento, devi configurare una regola di destinazione.

  1. Applica un criterio di autenticazione a un carico di lavoro specifico nel tuo spazio dei nomi:

    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
    

    Output previsto:

    peerauthentication.security.istio.io/AUTH_POLICY_NAME created
  2. Configura una regola di destinazione corrispondente:

    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
    

    Output previsto:

    destinationrule.networking.istio.io/WORKLOAD created

Applicazione di mTLS a livello di mesh

Per impedire a tutti i servizi nel mesh di accettare il traffico di testo normale, imposta un criterio PeerAuthentication a livello di mesh con la modalità mTLS impostata su STRICT (il valore predefinito è PERMISSIVE). Il criterio PeerAuthentication a livello di mesh non deve avere un selettore e deve essere applicato nello spazio dei nomi principale istio-system. Quando esegui il deployment del criterio, il piano di controllo esegue automaticamente il provisioning dei certificati TLS in modo che i carichi di lavoro possano autenticarsi l'uno con l'altro.

Per applicare in modo forzato mTLS a livello di mesh:

kubectl apply -f - <<EOF
apiVersion: "security.istio.io/v1beta1"
kind: "PeerAuthentication"
metadata:
  name: "AUTH_POLICY_NAME"
  namespace: "istio-system"
spec:
  mtls:
    mode: STRICT
EOF

Output previsto:

peerauthentication.security.istio.io/AUTH_POLICY_NAME created

Ricerca ed eliminazione dei criteri PeerAuthentication

Per un elenco di tutti i criteri PeerAuthentication nel mesh di servizi:

kubectl get peerauthentication --all-namespaces

Se è in vigore un criterio PeerAuthentication, puoi eliminarlo con kubectl delete:

kubectl delete peerauthentication -n NAMESPACE AUTH_POLICY_NAME

Passaggi successivi