Mengonfigurasi keamanan transpor
Di Cloud Service Mesh dengan Istio API untuk workload Kubernetes, TLS bersama otomatis (mTLS otomatis) diaktifkan secara default. Dengan mTLS otomatis, proxy sidecar klien otomatis mendeteksi apakah server memiliki sidecar. Sidecar klien mengirim mTLS ke workload dengan sidecar dan mengirim teks biasa ke workload tanpa sidecar. Namun, perlu diperhatikan bahwa layanan menerima traffic plaintext dan mTLS. Saat memasukkan proxy sidecar ke Pod, sebaiknya Anda juga mengonfigurasi layanan agar hanya menerima traffic mTLS.
Dengan Cloud Service Mesh, Anda dapat mengonfigurasi layanan untuk 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 beban kerja tertentu,
kebijakan tersebut akan lebih diprioritaskan. Misalnya, kebijakan khusus beban kerja lebih diprioritaskan daripada kebijakan khusus namespace. Jika tidak ada kebijakan yang ditentukan untuk beban kerja, beban kerja akan mewarisi kebijakan dari namespace atau mesh.
Lihat Fitur yang didukung untuk mengetahui detail kolom
PeerAuthentication
CR yang didukung oleh platform.
Mengaktifkan TLS bersama per namespace
Untuk mengaktifkan mTLS bagi semua beban kerja dalam namespace tertentu, gunakan
kebijakan autentikasi seluruh namespace. Anda menentukan namespace yang berlaku untuknya
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 beban kerja
Untuk menetapkan kebijakan PeerAuthentication
untuk beban kerja tertentu, Anda harus mengonfigurasi
bagian selector
dan menentukan label yang cocok dengan beban kerja yang diinginkan.
Namun, Cloud Service Mesh tidak dapat menggabungkan kebijakan tingkat beban kerja untuk
traffic mTLS keluar ke layanan. Anda perlu mengonfigurasi aturan tujuan untuk
mengelola perilaku tersebut.
Terapkan kebijakan autentikasi ke workload 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
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
Menerapkan mTLS di 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
(secara
default adalah PERMISSIVE
). Kebijakan PeerAuthentication
seluruh mesh tidak boleh
memiliki pemilih dan harus diterapkan di namespace root, istio-system
. Saat
Anda men-deploy kebijakan, panel kontrol akan otomatis menyediakan sertifikat TLS
sehingga workload dapat melakukan autentikasi satu sama lain.
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
Menemukan dan menghapus kebijakan PeerAuthentication
Untuk mengetahui daftar semua kebijakan PeerAuthentication
di 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