Mengonfigurasi keamanan transportasi
Google CloudDi Cloud Service Mesh dengan Istio API untuk workload Kubernetes, TLS mutual otomatis (mTLS otomatis) diaktifkan secara default. Dengan mTLS otomatis, proxy sidecar sisi klien otomatis mendeteksi apakah server memiliki sidecar. Sidecar klien mengirim mTLS ke workload dengan sidecar dan mengirim teks biasa ke workload tanpa sidecar. Namun, perhatikan bahwa layanan menerima traffic teks biasa dan mTLS. Saat Anda menyuntikkan proxy sidecar ke Pod, sebaiknya Anda juga mengonfigurasi layanan 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 beban kerja individual. Saat Anda menentukan kebijakan untuk beban kerja tertentu, kebijakan tersebut akan lebih diprioritaskan. Misalnya, kebijakan khusus beban kerja akan 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 CR PeerAuthentication yang didukung oleh platform.
Mengaktifkan TLS bersama per namespace
Untuk mengaktifkan mTLS bagi semua beban kerja dalam namespace tertentu, gunakan kebijakan autentikasi di seluruh namespace. Anda menentukan namespace yang berlaku
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 mutual TLS per beban kerja
Untuk menyetel kebijakan PeerAuthentication untuk workload tertentu, Anda harus mengonfigurasi
bagian selector dan menentukan label yang cocok dengan workload target.
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 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 EOFOutput 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 EOFOutput 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 di seluruh mesh dengan mode mTLS yang ditetapkan ke STRICT (defaultnya adalah PERMISSIVE). Kebijakan PeerAuthentication di 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 sehingga workload dapat saling mengautentikasi.
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
Menonaktifkan mTLS untuk CSM Terkelola
Cloud Service Mesh tidak mendukung nilai mtls.mode: DISABLE dalam resource
PeerAuthentication.
Agar berhasil menonaktifkan mTLS di Cloud Service Mesh, Anda harus secara eksplisit
menentukan perilaku klien dengan persyaratan server menggunakan
DestinationRule API.
Ringkasan Konseptual
- Sisi Server: Anda menggunakan resource
PeerAuthenticationuntuk menetapkan nilai default proxy sisi server. - Pendekatan Sisi Klien: Anda menggunakan resource
DestinationRuleuntuk secara eksplisit memberi tahu proxy sisi klien agar menggunakan teks biasa saat berkomunikasi dengan server tertentu tersebut.
Contoh
Langkah 1: Konfigurasi PeerAuthentication
Dalam contoh ini, kita akan menggunakan kebijakan default PERMISSIVE sehingga tidak perlu menentukan kebijakan secara eksplisit.
Langkah 2: Konfigurasi Client-Side DestinationRule
Konfigurasi ini memberi tahu klien untuk menggunakan teks biasa saat memanggil httpbin.
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: "DEST_RULE_NAME"
namespace: sample-namespace
spec:
host: "WORKLOAD.NAMESPACE.svc.cluster.local"
trafficPolicy:
tls:
mode: DISABLE
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