Mengonfigurasi keamanan transportasi
Di Cloud Service Mesh 1.5 dan yang lebih baru, mutual TLS (mTLS otomatis) diaktifkan secara default. Dengan mTLS otomatis, proxy file bantuan klien akan otomatis mendeteksi apakah server memiliki file bantuan. File bantuan klien mengirimkan mTLS ke workload dengan file bantuan dan mengirim teks biasa ke workload tanpa file bantuan. Namun, perlu diketahui bahwa layanan menerima traffic teks biasa dan mTLS. Saat Anda memasukkan proxy file bantuan ke Pod, sebaiknya konfigurasi juga layanan Anda agar hanya menerima traffic mTLS.
Dengan Cloud Service Mesh, Anda dapat mengonfigurasi layanan agar hanya menerima mTLS dengan menerapkan kebijakan PeerAuthentication
. Cloud Service Mesh memberi Anda fleksibilitas untuk menerapkan kebijakan ke seluruh mesh layanan, ke namespace, atau ke setiap workload. Saat Anda menentukan kebijakan untuk workload tertentu, kebijakan tersebut
akan diprioritaskan. Misalnya, kebijakan khusus workload lebih diprioritaskan daripada kebijakan khusus namespace. Jika tidak ada kebijakan yang ditentukan untuk
beban kerja, kebijakan tersebut akan mewarisi kebijakan dari namespace atau mesh.
Mengaktifkan TLS bersama per namespace
Guna mengaktifkan mTLS untuk semua beban kerja dalam namespace tertentu, gunakan kebijakan autentikasi di seluruh namespace. Tentukan namespace yang akan diterapkan
di bagian 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
Guna menetapkan kebijakan PeerAuthentication
untuk workload tertentu, Anda harus mengonfigurasi
bagian selector
dan menentukan label yang cocok dengan workload yang diinginkan.
Namun, Cloud 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 di 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
Mengonfigurasi 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
Menerapkan mTLS seluruh mesh
Untuk mencegah semua layanan Anda di mesh menerima traffic teks biasa, tetapkan
kebijakan PeerAuthentication
seluruh mesh dengan mode mTLS yang disetel ke STRICT
(defaultnya adalah
PERMISSIVE
). Kebijakan PeerAuthentication
seluruh mesh tidak boleh
memiliki pemilih dan harus diterapkan di namespace root, istio-system
. Saat
Anda men-deploy kebijakan, bidang kontrol akan otomatis menyediakan sertifikat TLS
agar workload dapat saling melakukan autentikasi.
Untuk menerapkan mTLS 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
Temukan dan hapus PeerAuthentication
kebijakan
Untuk mengetahui 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