Pada Anthos Service Mesh 1.5 dan yang lebih baru, mutual TLS otomatis (auto mTLS) diaktifkan secara default. Dengan mTLS otomatis, proxy sidecar klien secara otomatis mendeteksi apakah server memiliki file bantuan. Sidecar klien mengirimkan mTLS ke workload dengan sidecar dan mengirimkan teks biasa ke workload tanpa sidecar. Namun, perlu diperhatikan bahwa layanan menerima traffic teks biasa dan mTLS. Saat memasukkan proxy file bantuan ke Pod Anda, sebaiknya konfigurasi juga layanan Anda agar hanya menerima traffic mTLS.
Dengan Anthos Service Mesh, Anda dapat menerapkan mTLS di luar kode aplikasi dengan menerapkan satu file YAML. Anthos Service Mesh memberi Anda fleksibilitas untuk menerapkan kebijakan autentikasi ke seluruh mesh layanan, ke namespace, atau setiap workload.
Menerapkan mTLS di seluruh mesh
Untuk mencegah semua layanan Anda di mesh menerima traffic teks biasa, tetapkan
kebijakan PeerAuthentication
seluruh mesh dengan mode mTLS ditetapkan ke STRICT
(default-nya
adalah PERMISSIVE
). Kebijakan PeerAuthentication
seluruh mesh tidak boleh
memiliki pemilih dan harus diterapkan di namespace root, istio-system
. Saat kebijakan di-deploy, bidang kontrol akan otomatis menyediakan sertifikat TLS
sehingga beban kerja dapat saling melakukan autentikasi.
Untuk menerapkan mTLS di seluruh 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 yang diharapkan:
peerauthentication.security.istio.io/AUTH_POLICY_NAME created
Mengaktifkan TLS bersama per namespace
Untuk mengaktifkan mTLS untuk semua beban kerja dalam namespace tertentu, gunakan kebijakan autentikasi di seluruh namespace. Spesifikasi kebijakan ini
sama seperti kebijakan seluruh mesh, tetapi Anda harus menentukan namespace yang diterapkan
pada 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 yang diharapkan:
peerauthentication.security.istio.io/AUTH_POLICY_NAME created
Mengaktifkan TLS bersama per workload
Agar dapat menetapkan kebijakan PeerAuthentication
untuk beban kerja tertentu, Anda harus mengonfigurasi
bagian selector
dan menentukan label yang cocok dengan beban kerja yang diinginkan.
Namun, Anthos Service Mesh tidak dapat menggabungkan kebijakan tingkat workload untuk traffic mTLS keluar ke layanan. Anda perlu mengonfigurasi aturan tujuan untuk mengelola perilaku tersebut.
Terapkan kebijakan autentikasi ke beban kerja tertentu dalam namespace Anda:
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 yang diharapkan:
peerauthentication.security.istio.io/AUTH_POLICY_NAME created
Konfigurasikan aturan tujuan yang cocok:
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 yang diharapkan:
destinationrule.networking.istio.io/WORKLOAD created
Menemukan dan menghapus PeerAuthentication
kebijakan
Untuk daftar semua kebijakan PeerAuthentication
dalam mesh layanan:
kubectl get peerauthentication --all-namespaces
Jika ada kebijakan PeerAuthentication
yang berlaku, Anda dapat menghapusnya dengan
kubectl delete
:
kubectl delete peerauthentication -n NAMESPACE AUTH_POLICY_NAME