Mengelola SSH untuk akses aman ke simpul Azure Kubernetes Service (AKS)

Artikel ini menjelaskan cara mengonfigurasi kunci SSH (pratinjau) pada kluster AKS atau kumpulan simpul Anda, selama penyebaran awal atau di lain waktu.

AKS mendukung opsi konfigurasi berikut untuk mengelola kunci SSH pada node kluster:

  • Membuat kluster dengan kunci SSH
  • Memperbarui kunci SSH pada kluster AKS yang ada
  • Menonaktifkan dan mengaktifkan layanan SSH

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:

Sebelum Anda mulai

  • Anda memerlukan aks-preview versi 0.5.116 atau yang lebih baru untuk menggunakan Pembaruan.
  • Anda memerlukan aks-preview versi 1.0.0b6 atau yang lebih baru untuk menggunakan Nonaktifkan.
  • Fitur Buat dan Perbarui SSH mendukung kumpulan simpul Linux, Windows, dan Azure Linux pada kluster yang ada.
  • Fitur Nonaktifkan SSH tidak didukung dalam rilis pratinjau ini pada kumpulan simpul yang menjalankan sistem operasi Windows Server.

Memasang ekstensi aks-preview Azure CLI

  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 DisableSSHPreview bendera fitur

Untuk menggunakan fitur Nonaktifkan SSH, lakukan langkah-langkah berikut untuk mendaftar dan mengaktifkannya di langganan Anda.

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

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

    Dibutuhkan beberapa menit agar status menampilkan Terdaftar.

  2. Verifikasi status pendaftaran menggunakan az feature show perintah .

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

    az provider register --namespace Microsoft.ContainerService
    

Membuat kluster AKS dengan kunci SSH

Gunakan perintah az aks create untuk menyebarkan kluster AKS dengan kunci umum SSH. Anda dapat menentukan kunci atau file kunci menggunakan --ssh-key-value argumen .

Parameter SSH Deskripsi Nilai default
--generate-ssh-key Jika Anda tidak memiliki kunci SSH Anda sendiri, tentukan --generate-ssh-key. Azure CLI secara otomatis menghasilkan sekumpulan kunci SSH dan menyimpannya di direktori ~/.ssh/default .
--ssh-key-value Jalur kunci publik atau konten kunci untuk diinstal pada VM simpul untuk akses SSH. Contohnya, ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm. ~/.ssh/id_rsa.pub
--no-ssh-key Jika Anda tidak memerlukan kunci SSH, tentukan argumen ini. Namun, AKS secara otomatis menghasilkan sekumpulan kunci SSH karena dependensi sumber daya Azure Virtual Machine tidak mendukung file kunci SSH kosong. Akibatnya, kunci tidak dikembalikan dan tidak dapat digunakan untuk SSH ke dalam simpul VM. Kunci privat dibuang dan tidak disimpan.

Catatan

Jika tidak ada parameter yang ditentukan, Azure CLI default untuk mereferensikan kunci SSH yang disimpan dalam ~/.ssh/id_rsa.pub file. Jika kunci tidak ditemukan, perintah mengembalikan pesan An RSA key file or key value must be supplied to SSH Key Value.

Berikut ini adalah contoh perintah ini:

  • Untuk membuat kluster dan menggunakan kunci SSH yang dihasilkan default:

    az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
    
  • Untuk menentukan file kunci publik SSH, sertakan --ssh-key-value argumen:

    az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
    

Memperbarui kunci publik SSH pada kluster AKS yang ada

az aks update Gunakan perintah untuk memperbarui kunci umum SSH (pratinjau) pada kluster Anda. Operasi ini memperbarui kunci pada semua kumpulan simpul. Anda dapat menentukan kunci atau file kunci menggunakan --ssh-key-value argumen .

Catatan

Memperbarui kunci SSH didukung pada set skala komputer virtual Azure dengan kluster AKS.

Berikut ini adalah contoh perintah ini:

  • Untuk menentukan nilai kunci publik SSH baru, sertakan --ssh-key-value argumen:

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
    
  • Untuk menentukan file kunci publik SSH, tentukan dengan --ssh-key-value argumen:

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
    

Penting

Setelah Anda memperbarui kunci SSH, AKS tidak secara otomatis memperbarui kumpulan simpul Anda. Kapan saja, Anda dapat memilih untuk melakukan operasi pembaruan nodepool. Operasi perbarui kunci SSH berlaku setelah pembaruan gambar simpul selesai.

Nonaktifkan gambaran umum SSH

Untuk meningkatkan keamanan dan mendukung persyaratan atau strategi keamanan perusahaan Anda, AKS mendukung penonaktifan SSH (pratinjau) baik pada kluster maupun di tingkat kumpulan simpul. Nonaktifkan SSH memperkenalkan pendekatan yang disederhanakan dibandingkan dengan satu-satunya solusi yang didukung, yang memerlukan konfigurasi aturan grup keamanan jaringan pada kartu antarmuka jaringan subnet/simpul AKS (NIC).

Ketika Anda menonaktifkan SSH pada waktu pembuatan kluster, itu berlaku setelah kluster dibuat. Namun, ketika Anda menonaktifkan SSH pada kluster atau kumpulan simpul yang ada, AKS tidak secara otomatis menonaktifkan SSH. Kapan saja, Anda dapat memilih untuk melakukan operasi peningkatan nodepool. Operasi nonaktifkan/aktifkan kunci SSH berlaku setelah pembaruan gambar simpul selesai.

Parameter SSH Deskripsi
disabled Layanan SSH dinonaktifkan.
localuser Layanan SSH diaktifkan dan pengguna dengan kunci SSH dapat mengakses simpul dengan aman.

Catatan

node debug kubectl terus berfungsi setelah Anda menonaktifkan SSH karena tidak bergantung pada layanan SSH.

Menonaktifkan SSH pada penyebaran kluster baru

Secara default, layanan SSH pada node kluster AKS terbuka untuk semua pengguna dan pod yang berjalan pada kluster. Anda dapat mencegah akses SSH langsung dari jaringan apa pun ke node kluster untuk membantu membatasi vektor serangan jika kontainer dalam pod disusupi. az aks create Gunakan perintah untuk membuat kluster baru, dan sertakan --ssh-access disabled argumen untuk menonaktifkan SSH (pratinjau) pada semua kumpulan simpul selama pembuatan kluster.

Penting

Setelah menonaktifkan layanan SSH, Anda tidak dapat SSH ke dalam kluster untuk melakukan tugas administratif atau memecahkan masalah.

az aks create -g myResourceGroup -n myManagedCluster --ssh-access disabled

Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster. Contoh berikut menyerupai output dan hasil yang terkait dengan menonaktifkan SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

Menonaktifkan SSH pada kluster yang ada

az aks update Gunakan perintah untuk memperbarui kluster yang ada, dan sertakan --ssh-access disabled argumen untuk menonaktifkan SSH (pratinjau) pada semua kumpulan simpul di kluster.

az aks update -g myResourceGroup -n myManagedCluster --ssh-access disabled

Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster. Contoh berikut menyerupai output dan hasil yang terkait dengan menonaktifkan SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

Agar perubahan berlaku, Anda perlu menggambar ulang semua kumpulan simpul dengan menggunakan az aks nodepool upgrade perintah .

az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only

Penting

Selama operasi ini, semua instans Virtual Machine Scale Set ditingkatkan dan dicitrakan ulang untuk menggunakan konfigurasi SSH baru.

Menonaktifkan SSH untuk kumpulan simpul baru

az aks nodepool add Gunakan perintah untuk menambahkan kumpulan simpul, dan sertakan --ssh-access disabled argumen untuk menonaktifkan SSH selama pembuatan kumpulan simpul.

az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled  

Setelah beberapa menit, perintah menyelesaikan dan mengembalikan informasi berformat JSON tentang kluster yang menunjukkan mynodepool berhasil dibuat. Contoh berikut menyerupai output dan hasil yang terkait dengan menonaktifkan SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

Nonaktifkan SSH untuk kumpulan simpul yang ada

Gunakan argumen [az aks nodepool update][az-aks-nodepool-update] command with the --ssh-access disabled' untuk menonaktifkan SSH (pratinjau) pada kumpulan simpul yang ada.

az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled

Setelah beberapa menit, perintah menyelesaikan dan mengembalikan informasi berformat JSON tentang kluster yang menunjukkan mynodepool berhasil dibuat. Contoh berikut menyerupai output dan hasil yang terkait dengan menonaktifkan SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

Agar perubahan diterapkan, Anda perlu menggambar ulang kumpulan simpul dengan menggunakan az aks nodepool upgrade perintah .

az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only

Mengaktifkan kembali SSH pada kluster yang ada

az aks update Gunakan perintah untuk memperbarui kluster yang ada, dan sertakan --ssh-access localuser argumen untuk mengaktifkan kembali SSH (pratinjau) pada semua kumpulan simpul di kluster.

az aks update -g myResourceGroup -n myManagedCluster --ssh-access localuser

Pesan berikut dikembalikan saat proses dilakukan:

Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect."

Setelah mengaktifkan kembali SSH, simpul tidak akan dicitrakan ulang secara otomatis. Kapan saja, Anda dapat memilih untuk melakukan operasi reimage.

Penting

Selama operasi ini, semua instans Virtual Machine Scale Set ditingkatkan dan dicitrakan ulang untuk menggunakan kunci umum SSH baru.

Mengaktifkan kembali SSH untuk kumpulan simpul tertentu

az aks update Gunakan perintah untuk memperbarui kumpulan simpul tertentu, dan sertakan --ssh-access localuser argumen untuk mengaktifkan kembali SSH (pratinjau) pada kumpulan simpul tersebut di kluster. Dalam contoh berikut, nodepool1 adalah kumpulan simpul target.

az aks nodepool update --cluster-name myManagedCluster --name nodepool1 --resource-group myResourceGroup --ssh-access localuser 

Pesan berikut dikembalikan saat proses dilakukan:

Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect.

Penting

Selama operasi ini, semua instans Virtual Machine Scale Set ditingkatkan dan dicitrakan ulang untuk menggunakan kunci umum SSH baru.

Status layanan SSH

Lakukan langkah-langkah berikut untuk menggunakan node-shell ke satu simpul dan periksa status layanan SSH menggunakan systemctl.

  1. Dapatkan shell bash standar dengan menjalankan kubectl node-shell <node> perintah .

    kubectl node-shell aks-nodepool1-20785627-vmss000001
    
  2. Jalankan systemctl perintah untuk memeriksa status layanan SSH.

    systemctl status ssh
    

Jika SSH dinonaktifkan, output sampel berikut menunjukkan hasilnya:

ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)
     Active: inactive (dead) since Wed 2024-01-03 15:36:57 UTC; 20min ago

Jika SSH diaktifkan, output sampel berikut menunjukkan hasilnya:

ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-01-03 15:40:20 UTC; 19min ago

Langkah berikutnya

Untuk membantu memecahkan masalah dengan konektivitas SSH ke node kluster, Anda dapat melihat log kubelet atau melihat log simpul master Kubernetes.