Mengonfigurasi keamanan transpor

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 mengirim teks biasa ke workload tanpa sidecar. Namun, perlu diperhatikan bahwa layanan menerima traffic teks biasa dan mTLS. Saat memasukkan proxy file bantuan ke Pod, sebaiknya Anda juga mengonfigurasi layanan agar hanya menerima traffic mTLS.

Dengan Anthos Service Mesh, Anda dapat mengonfigurasi layanan agar hanya menerima mTLS dengan menerapkan kebijakan PeerAuthentication. Anthos Service Mesh memberi Anda fleksibilitas untuk menerapkan kebijakan ke seluruh mesh layanan, namespace, atau workload individual. Saat Anda menentukan kebijakan untuk beban kerja tertentu, kebijakan tersebut akan lebih diutamakan. Misalnya, kebijakan khusus workload lebih diutamakan daripada kebijakan khusus namespace. Jika tidak ada kebijakan yang ditentukan untuk beban kerja, kebijakan akan mewarisi kebijakan dari namespace atau mesh.

Mengaktifkan TLS bersama per namespace

Untuk mengaktifkan mTLS untuk semua beban kerja dalam namespace tertentu, gunakan kebijakan autentikasi di seluruh namespace. Tentukan namespace yang akan diterapkan di 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.

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

Terapkan 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

Temukan dan hapus PeerAuthentication kebijakan

Untuk melihat 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

Mengonfigurasi versi TLS minimum untuk workload Anda

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

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

Langkah selanjutnya