Mengamankan akses ke server API menggunakan rentang alamat IP resmi di Azure Kubernetes Service (AKS)

Artikel ini menunjukkan kepada Anda cara menggunakan fitur rentang alamat IP resmi server API untuk membatasi alamat IP dan CIDR mana yang dapat mengakses sarana kontrol.

Server API Kubernetes adalah inti dari sarana kontrol Kubernetes dan merupakan cara terpusat untuk berinteraksi dan mengelola kluster Anda. Untuk meningkatkan keamanan kluster Anda dan meminimalkan risiko serangan, sebaiknya batasi rentang alamat IP yang dapat mengakses server API. Untuk melakukan ini, Anda dapat menggunakan fitur rentang IP resmi server API.

Sebelum Anda mulai

  • Anda memerlukan Azure CLI versi 2.0.76 atau yang lebih baru yang sudah terpasang dan terkonfigurasi. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.
  • Untuk mempelajari alamat IP apa yang akan disertakan saat mengintegrasikan kluster AKS Anda dengan Azure DevOps, lihat artikel alamat IP dan URL domain yang diizinkan Azure DevOps.

Batasan

Fitur rentang IP resmi server API memiliki batasan berikut:

  • Fitur rentang IP resmi server API dipindahkan dari pratinjau pada Oktober 2019. Untuk kluster yang dibuat setelah fitur dipindahkan dari pratinjau, fitur ini hanya didukung pada load balancer SKU Standar . Setiap kluster yang ada pada load balancer SKU Dasar dengan fitur rentang IP resmi server API yang diaktifkan akan terus berfungsi apa adanya. Namun, kluster ini tidak dapat dimigrasikan ke load balancer SKU Standar . Kluster yang ada akan terus berfungsi jika versi Kubernetes dan sarana kontrol ditingkatkan.
  • Fitur rentang IP resmi server API tidak didukung pada kluster privat.
  • Saat menggunakan fitur ini dengan kluster yang menggunakan IP Publik Node, kumpulan simpul yang menggunakan IP Publik Node harus menggunakan awalan IP publik. Awalan IP publik harus ditambahkan sebagai rentang resmi.

Ringkasan rentang IP resmi server API

Server API Kubernetes mengekspos API Kubernetes yang mendasar dan menyediakan interaksi untuk alat manajemen seperti kubectl dan dasbor Kubernetes. AKS menyediakan sarana kontrol kluster penyewa tunggal dengan server API khusus. Server API diberi alamat IP publik secara default. Anda dapat mengontrol akses menggunakan kontrol akses berbasis peran Kubernetes (Kubernetes RBAC) atau Azure RBAC.

Untuk mengamankan akses ke sarana kontrol AKS/server API yang dapat diakses publik, Anda dapat mengaktifkan dan menggunakan rentang IP resmi. Rentang IP resmi ini hanya memungkinkan rentang alamat IP yang ditentukan untuk berkomunikasi dengan server API. Setiap permintaan yang dibuat ke server API dari alamat IP yang bukan bagian dari rentang IP resmi ini diblokir.

Membuat kluster AKS dengan rentang IP resmi server API diaktifkan

Penting

Secara default, kluster Anda menggunakan load balancer SKU Standar yang dapat Anda gunakan untuk mengonfigurasi gateway outbound. Saat Anda mengaktifkan rentang IP resmi server API selama pembuatan kluster, IP publik untuk kluster Anda diizinkan secara default selain rentang yang Anda tentukan. Jika Anda menentukan "" atau tidak ada nilai untuk --api-server-authorized-ip-ranges, rentang IP resmi server API dinonaktifkan. Perhatikan bahwa jika Anda menggunakan PowerShell, gunakan --api-server-authorized-ip-ranges="" (dengan tanda sama dengan) untuk menghindari masalah penguraian.

Catatan

Anda harus menambahkan rentang ini ke daftar yang diizinkan:

  • Alamat IP keluar kluster (firewall, gateway NAT, atau alamat lainnya, tergantung pada jenis keluar Anda).
  • Rentang apa pun yang mewakili jaringan tempat Anda mengelola kluster.

Batas atas untuk jumlah rentang IP yang dapat Anda tentukan adalah 200.

Aturan ini membutuhkan waktu hingga 2 menit untuk diterapkan. Mohon tunggu hingga waktu tersebut saat menguji koneksi.

Saat membuat kluster dengan rentang IP resmi server API diaktifkan, Anda menggunakan --api-server-authorized-ip-ranges parameter untuk menyediakan daftar rentang alamat IP publik resmi. Saat Anda menentukan rentang CIDR, mulailah dengan alamat IP pertama dalam rentang. Misalnya, 137.117.106.90/29 adalah rentang yang valid, tetapi pastikan Anda menentukan alamat IP pertama dalam rentang, seperti 137.117.106.88/29.

  • Buat kluster AKS dengan rentang IP resmi server API yang diaktifkan menggunakan az aks create perintah dengan --api-server-authorized-ip-ranges parameter . Contoh berikut membuat kluster bernama myAKSCluster di grup sumber daya bernama myResourceGroup dengan rentang IP resmi server API diaktifkan. Rentang alamat IP yang diizinkan adalah 73.140.245.0/24:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --generate-ssh-keys
    

Tentukan IP keluar untuk load balancer SKU Standar

Saat membuat kluster dengan rentang IP resmi server API diaktifkan, Anda juga dapat menentukan alamat IP keluar atau awalan untuk kluster menggunakan --load-balancer-outbound-ips parameter atau --load-balancer-outbound-ip-prefixes . Semua IP yang disediakan dalam parameter diizinkan bersama dengan IP dalam --api-server-authorized-ip-ranges parameter .

  • Buat kluster AKS dengan rentang IP resmi server API diaktifkan dan tentukan alamat IP keluar untuk load balancer SKU Standar menggunakan --load-balancer-outbound-ips parameter . Contoh berikut membuat kluster bernama myAKSCluster di grup sumber daya bernama myResourceGroup dengan rentang IP resmi server API diaktifkan dan alamat <public-ip-id-1> IP keluar dan <public-ip-id-2>:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --load-balancer-outbound-ips <public-ip-id-1>,<public-ip-id-2> --generate-ssh-keys
    

Hanya mengizinkan IP publik outbound dari load balancer SKU Standar

Jika Anda mengaktifkan rentang IP resmi server API selama pembuatan kluster, IP publik outbound untuk load balancer SKU Standar untuk kluster Anda juga diizinkan secara default selain rentang yang Anda tentukan. Untuk mengizinkan hanya IP publik keluar dari load balancer SKU Standar, Anda menggunakan 0.0.0.0/32 saat menentukan --api-server-authorized-ip-ranges parameter.

  • Buat kluster AKS dengan rentang IP resmi server API yang diaktifkan dan hanya mengizinkan IP publik keluar dari load balancer SKU Standar menggunakan --api-server-authorized-ip-ranges parameter . Contoh berikut membuat kluster bernama myAKSCluster di grup sumber daya bernama myResourceGroup dengan rentang IP resmi server API yang diaktifkan dan hanya memungkinkan IP publik keluar dari load balancer SKU Standar:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 0.0.0.0/32 --generate-ssh-keys
    

Memperbarui rentang IP resmi server API kluster yang ada

  • Perbarui rentang IP resmi server API kluster yang ada menggunakan az aks update perintah dengan --api-server-authorized-ip-ranges parameter . Contoh berikut memperbarui rentang IP resmi server API pada kluster bernama myAKSCluster di grup sumber daya bernama myResourceGroup. Rentang alamat IP yang akan diotorisasi adalah 73.140.245.0/24:

    az aks update --resource-group myResourceGroup --name myAKSCluster -api-server-authorized-ip-ranges 73.140.245.0/24
    

    Anda juga dapat menggunakan 0.0.0.0/32 saat menentukan parameter --api-server-authorized-ip-ranges untuk mengizinkan hanya IP publik dari load balancer SKU Standar.

Menonaktifkan rentang IP resmi

  • Nonaktifkan rentang IP resmi menggunakan az aks update perintah dan tentukan rentang "" kosong untuk --api-server-authorized-ip-ranges parameter .

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
    

Menemukan rentang IP resmi yang sudah ada

  • Temukan rentang IP resmi yang ada menggunakan az aks show perintah dengan parameter yang --query diatur ke apiServerAccessProfile.authorizedIpRanges.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query apiServerAccessProfile.authorizedIpRanges
    

Bagaimana menemukan IP saya untuk disertakan dalam --api-server-authorized-ip-ranges?

Anda harus menambahkan mesin pengembangan, alat, atau alamat IP otomatisasi ke daftar kluster AKS dari rentang IP yang disetujui untuk mengakses server API dari sana.

Opsi lain adalah mengonfigurasi jumpbox dengan alat yang diperlukan di dalam subnet terpisah di jaringan virtual firewall. Ini mengasumsikan lingkungan Anda memiliki firewall dengan jaringan masing-masing, dan Anda telah menambahkan firewall IP ke rentang resmi. Demikian pula, jika Anda memaksa penerowongan dari subnet AKS ke subnet firewall, memiliki jumpbox di subnet kluster juga tidak apa-apa.

  1. Ambil alamat IP Anda menggunakan perintah berikut:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. Tambahkan alamat IP Anda ke daftar yang disetujui menggunakan Azure CLI atau Azure PowerShell:

    # Add to AKS approved list using Azure CLI
    az aks update --resource-group $RG --name $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
    
    # Add to AKS approved list using Azure PowerShell
    Set-AzAksCluster -ResourceGroupName $RG -Name $AKSNAME -ApiServerAccessAuthorizedIpRange '$CURRENT_IP/24,73.140.245.0/24'
    

Catatan

Contoh di atas menambahkan alamat IP lain ke rentang yang disetujui. Perhatikan bahwa alamat IP masih menyertakan alamat IP dari Memperbarui rentang IP resmi server API kluster. Jika Anda tidak menyertakan alamat IP yang ada, perintah ini akan menggantinya dengan yang baru alih-alih menambahkannya ke rentang yang diotorisasi. Untuk menonaktifkan rentang IP resmi, gunakan az aks update dan tentukan rentang kosong "".

Opsi lainnya adalah menggunakan perintah di bawah ini pada sistem Windows untuk mendapatkan alamat IPv4 publik, atau Anda dapat mengikuti langkah-langkah di Menemukan alamat IP Anda.

Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

Anda juga dapat menemukan alamat ini dengan mencari apa alamat IP saya di browser internet.

Langkah berikutnya

Dalam artikel ini, Anda mengaktifkan rentang IP resmi server API. Pendekatan ini adalah salah satu bagian dari cara Anda dapat menjalankan kluster AKS dengan aman. Untuk informasi selengkapnya, lihat Konsep keamanan untuk aplikasi dan kluster di AKS dan Praktik terbaik untuk keamanan kluster dan peningkatan di AKS.