Bagikan melalui


Otoritas sertifikat kustom (CA) di Azure Kubernetes Service (AKS) (pratinjau)

AKS menghasilkan dan menggunakan sertifikat, Otoritas Sertifikat (CA), dan Akun Layanan (CA) berikut:

  • Server API AKS membuat CA yang disebut CA Kluster.
  • Server API memiliki CA Kluster, yang menandatangani sertifikat untuk komunikasi satu arah dari server API ke kubelets.
  • Setiap kubelet juga membuat Permintaan Penandatanganan Sertifikat (CSR), yang ditandatangani oleh CA Kluster, untuk komunikasi dari kubelet ke server API.
  • Agregator API menggunakan CA Kluster untuk menerbitkan sertifikat untuk komunikasi dengan API lain. Agregator API juga dapat memiliki CA sendiri untuk menerbitkan sertifikat tersebut, tetapi saat ini Agregator API menggunakan CA Kluster.
  • Setiap simpul menggunakan token SA, yang ditandatangani oleh CA Kluster.
  • Klien kubectl memiliki sertifikat untuk berkomunikasi dengan kluster AKS.

Anda juga dapat membuat otoritas sertifikat kustom, yang memungkinkan Anda membangun kepercayaan antara kluster dan beban kerja Azure Kubernetes Service (AKS), seperti registri privat, proksi, dan firewall. Rahasia Kubernetes menyimpan informasi otoritas sertifikat, dan kemudian diteruskan ke semua simpul dalam kluster. Fitur ini diterapkan per kumpulan simpul, jadi Anda perlu mengaktifkannya pada kumpulan simpul baru dan yang sudah ada.

Artikel ini menunjukkan kepada Anda cara membuat CA kustom dan menerapkannya ke kluster AKS Anda.

Prasyarat

  • Langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis.
  • Azure CLI terinstal (versi 2.43.0 atau lebih tinggi).
  • String sertifikat yang dikodekan base64 atau file teks dengan sertifikat.

Batasan

  • Fitur ini saat ini tidak didukung untuk kumpulan simpul Windows.

Memasang ekstensi aks-preview Azure CLI

Penting

Fitur pratinjau AKS tersedia berdasarkan layanan mandiri. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan mereka dikecualikan dari perjanjian tingkat layanan dan garansi terbatas. Pratinjau AKS sebagian dicakup oleh dukungan pelanggan berdasarkan upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

  1. Instal ekstensi aks-preview menggunakan az extension add perintah .

    az extension add --name aks-preview
    
  2. Perbarui ke versi terbaru ekstensi menggunakan az extension update perintah .

    az extension update --name aks-preview
    

Daftarkan CustomCATrustPreview bendera fitur

  1. Daftarkan CustomCATrustPreview bendera fitur menggunakan az feature register perintah .

    az feature register --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
    

    Dibutuhkan beberapa menit agar status menampilkan Terdaftar.

  2. Verifikasi status pendaftaran menggunakan az feature show perintah .

    az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
    
  3. Saat status mencerminkan Terdaftar, refresh pendaftaran penyedia sumber daya Microsoft.ContainerService menggunakan az provider register perintah .

    az provider register --namespace Microsoft.ContainerService
    

Penginstalan CA kustom pada kumpulan simpul AKS

Menginstal CA pada kumpulan simpul AKS

  • Jika lingkungan Anda mengharuskan CA kustom Anda ditambahkan ke penyimpanan kepercayaan simpul untuk provisi yang benar, Anda perlu meneruskan file teks yang berisi hingga 10 sertifikat yang dipisahkan baris kosong selama az aks create atau az aks update operasi. Contoh file teks:

    -----BEGIN CERTIFICATE-----
    cert1
    -----END CERTIFICATE-----
    
    -----BEGIN CERTIFICATE-----
    cert2
    -----END CERTIFICATE-----
    

Menginstal CA selama pembuatan kumpulan simpul

  • Instal CA selama pembuatan kumpulan simpul menggunakan az aks create perintah dan tentukan file teks Anda untuk --custom-ca-trust-certificates parameter .

    az aks create \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --node-count 2 \
        --enable-custom-ca-trust \
        --custom-ca-trust-certificates pathToFileWithCAs \
        --generate-ssh-keys
    

Rotasi CA untuk ketersediaan selama boot up kumpulan simpul

  • Perbarui CA yang diteruskan ke kluster Anda selama boot up menggunakan az aks update perintah dan menentukan file teks Anda untuk --custom-ca-trust-certificates parameter .

    az aks update \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --custom-ca-trust-certificates pathToFileWithCAs
    

    Catatan

    Operasi ini memicu pembaruan model, memastikan simpul baru memiliki CA terbaru yang diperlukan untuk provisi yang benar. AKS membuat simpul tambahan, menguras simpul yang ada, menghapusnya, dan menggantinya dengan simpul yang memiliki set CA baru yang terinstal.

Menginstal CA setelah pembuatan kumpulan simpul

Jika lingkungan Anda dapat berhasil disediakan tanpa CA kustom, Anda dapat memberikan CA dengan menyebarkan rahasia di kube-system namespace. Pendekatan ini memungkinkan rotasi sertifikat tanpa perlu rekreasi node.

  • Buat manifes YAML rahasia Kubernetes dengan string sertifikat yang dikodekan base64 Anda di bidang data.

    apiVersion: v1
    kind: Secret
    metadata: 
        name: custom-ca-trust-secret
        namespace: kube-system
    type: Opaque
    data:
        ca1.crt: |
          {base64EncodedCertStringHere}
        ca2.crt: |
          {anotherBase64EncodedCertStringHere}
    

    Data dari rahasia ini digunakan untuk memperbarui CA pada semua node. Pastikan rahasia diberi nama custom-ca-trust-secret dan dibuat di kube-system namespace layanan. Menginstal CA menggunakan rahasia di kube-system namespace memungkinkan rotasi CA tanpa perlu rekreasi simpul. Untuk memperbarui atau menghapus CA, Anda dapat mengedit dan menerapkan manifes YAML. Polling kluster untuk perubahan dan memperbarui simpul yang sesuai. Mungkin perlu waktu beberapa menit sebelum perubahan diterapkan.

    Catatan

    mulai ulang kontainer pada simpul mungkin diperlukan agar CA diambil dengan benar. Jika muncul seperti CA tidak ditambahkan dengan benar ke penyimpanan kepercayaan simpul, Anda dapat memicu mulai ulang menggunakan perintah berikut dari shell simpul:

    systemctl restart containerd

Mengonfigurasi kluster AKS baru untuk menggunakan CA kustom

  • Konfigurasikan kluster AKS baru untuk menggunakan CA kustom menggunakan az aks create perintah dengan --enable-custom-ca-trust parameter .

    az aks create \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --node-count 2 \
        --enable-custom-ca-trust \
        --generate-ssh-keys
    

Mengonfigurasi kluster AKS baru untuk menggunakan CA kustom dengan CA yang diinstal sebelum simpul di-boot

  • Konfigurasikan kluster AKS baru untuk menggunakan CA kustom dengan CA yang diinstal sebelum simpul melakukan boot menggunakan az aks create perintah dengan --enable-custom-ca-trust parameter dan --custom-ca-trust-certificates .

    az aks create \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --node-count 2 \
        --enable-custom-ca-trust \
        --custom-ca-trust-certificates pathToFileWithCAs \
        --generate-ssh-keys
    

Mengonfigurasi kluster AKS yang ada agar CA kustom diinstal sebelum simpul di-boot

  • Konfigurasikan kluster AKS yang ada agar CA kustom Anda ditambahkan ke penyimpanan kepercayaan simpul sebelum boot menggunakan az aks update perintah dengan --custom-ca-trust-certificates parameter .

    az aks update \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --custom-ca-trust-certificates pathToFileWithCAs
    

Mengonfigurasi kumpulan simpul baru untuk menggunakan CA kustom

  • Konfigurasikan kumpulan simpul baru untuk menggunakan CA kustom menggunakan az aks nodepool add perintah dengan --enable-custom-ca-trust parameter .

    az aks nodepool add \
        --cluster-name <cluster-name> \
        --resource-group <resource-group-name> \
        --name <node-pool-name> \
        --enable-custom-ca-trust \
        --os-type Linux
    

    Jika tidak ada kumpulan simpul lain dengan fitur yang diaktifkan, kluster harus merekonsiliasi pengaturannya agar perubahan diterapkan. Operasi ini terjadi secara otomatis sebagai bagian dari perulangan rekonsiliasi AKS. Sebelum operasi, set daemon dan pod tidak muncul di kluster. Anda dapat memicu operasi rekonsiliasi langsung menggunakan az aks update perintah . Set daemon dan pod muncul setelah pembaruan selesai.

Mengonfigurasi kumpulan simpul yang ada untuk menggunakan CA kustom

  • Konfigurasikan kumpulan simpul yang ada untuk menggunakan CA kustom menggunakan az aks nodepool update perintah dengan --enable-custom-ca-trust parameter .

    az aks nodepool update \
        --resource-group <resource-group-name> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --enable-custom-ca-trust
    

    Jika tidak ada kumpulan simpul lain dengan fitur yang diaktifkan, kluster harus merekonsiliasi pengaturannya agar perubahan diterapkan. Operasi ini terjadi secara otomatis sebagai bagian dari perulangan rekonsiliasi AKS. Sebelum operasi, set daemon dan pod tidak muncul di kluster. Anda dapat memicu operasi rekonsiliasi langsung menggunakan az aks update perintah . Set daemon dan pod muncul setelah pembaruan selesai.

Menonaktifkan CA kustom pada kumpulan simpul

  • Nonaktifkan fitur CA kustom pada kumpulan simpul yang ada menggunakan az aks nodepool update perintah dengan --disable-custom-ca-trust parameter .

    az aks nodepool update \
        --resource-group <resource-group-name> \
        --cluster-name <cluster-name> \
        --name <node-pool-name> \
        --disable-custom-ca-trust
    

Pemecahan Masalah

Fitur diaktifkan dan rahasia dengan CA ditambahkan, tetapi operasi gagal dengan Sertifikat X.509 Ditandatangani oleh kesalahan Otoritas Tidak Diketahui

Sertifikat yang salah diformat diteruskan dalam rahasia

AKS memerlukan sertifikasi yang diteruskan dalam rahasia yang dibuat pengguna untuk diformat dengan benar dan dikodekan base64. Pastikan CA yang Anda lewati dikodekan dengan benar base64 dan file dengan CA tidak memiliki jeda baris CRLF. Sertifikat yang diteruskan ke --custom-ca-trust-certificates tidak boleh dikodekan base64.

containerd belum mengambil sertifikat baru

Dari shell node, jalankan systemctl restart containerd. Setelah kontainer dimulai ulang, sertifikasi baru diambil dengan benar oleh runtime kontainer.

Langkah berikutnya

Untuk informasi selengkapnya tentang praktik terbaik keamanan AKS, lihat Praktik terbaik untuk keamanan klaster dan pemutakhiran di Azure Kubernetes Service (AKS).