Configurazione della sicurezza del livello di trasporto
In Cloud Service Mesh 1.5 e versioni successive, TLS reciproco (mTLS automatico) viene attivato predefinito. Con mTLS automatico, un proxy sidecar client rileva automaticamente se server ha un file collaterale. Il lato client invia mTLS ai carichi di lavoro con file collaterali e invia il testo non crittografato ai carichi di lavoro senza file collaterali. Tuttavia, tieni presente che i servizi accetta sia il traffico in testo non crittografato che il traffico mTLS. Man mano che inserisci proxy sidecar per dai tuoi pod, ti consigliamo di configurare anche i servizi per accettare Traffico mTLS.
Con Cloud Service Mesh, puoi configurare i tuoi servizi in modo che accettino solo mTLS tramite
applicando un criterio PeerAuthentication
. Cloud Service Mesh ti offre la flessibilità
per applicare il criterio all'intero mesh di servizi, a uno spazio dei nomi o a un
per ogni carico di lavoro. Quando specifichi un criterio per un carico di lavoro specifico,
criterio ha la precedenza. Ad esempio, un criterio specifico del carico di lavoro prende
la precedenza su uno specifico per lo spazio dei nomi. Se non viene specificato alcun criterio per
per un carico di lavoro, 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 uno specifico spazio dei nomi, utilizza un
di autenticazione a livello di spazio dei nomi. Sei tu a specificare lo spazio dei nomi a cui si applica
sotto 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
sezione selector
e specifica le etichette corrispondenti al carico di lavoro desiderato.
Tuttavia, Cloud Service Mesh non può aggregare i criteri a livello di carico di lavoro per i messaggi in uscita
Traffico mTLS verso un servizio. Devi configurare una regola di destinazione per gestire
tale comportamento.
Applica un criterio di autenticazione a un carico di lavoro specifico nello 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
Per configurare 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
Applica mTLS a livello di mesh
Per impedire a tutti i servizi nel mesh di accettare traffico di testo normale, imposta
un criterio PeerAuthentication
a livello di mesh con la modalità mTLS impostata su STRICT
(il
il valore predefinito è PERMISSIVE
). Il criterio PeerAuthentication
a livello di mesh non deve
dispongono di un selettore e devono essere applicati nello spazio dei nomi principale, istio-system
. Quando
esegui il deployment del criterio, il piano di controllo esegue automaticamente il provisioning di TLS
in modo che i carichi di lavoro possano
autenticarsi tra loro.
Per applicare il protocollo 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
Trova ed elimina PeerAuthentication
criteri
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