Mengonfigurasi keamanan transpor

Di Cloud Service Mesh, TLS bersama otomatis (mTLS otomatis) diaktifkan secara default. Dengan mTLS otomatis, proxy sidecar klien akan otomatis mendeteksi apakah server memiliki sidecar. Sidecar klien mengirim mTLS ke beban kerja dengan sidecar dan mengirim teks biasa ke beban kerja tanpa sidecar. Namun, perhatikan bahwa layanan menerima traffic teks biasa dan mTLS. Saat memasukkan proxy sidecar ke Pod, sebaiknya konfigurasikan juga layanan Anda 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.

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 dipilih. Namun, Cloud Service Mesh tidak dapat menggabungkan kebijakan tingkat beban kerja untuk traffic mTLS eksternal ke layanan. Anda perlu mengonfigurasi aturan tujuan untuk mengelola perilaku tersebut.

  1. 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
  2. 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

Mengonfigurasi versi TLS minimum untuk beban kerja Anda

Anda dapat menggunakan kolom minProtocolVersion untuk menentukan versi TLS minimum untuk koneksi TLS di antara workload Anda.

Untuk informasi selengkapnya tentang cara menetapkan versi TLS minimum dan memeriksa konfigurasi TLS workload Anda, lihat Konfigurasi Versi TLS Minimum Workload Istio.

Langkah selanjutnya