Mengamankan akses jaringan ke Kubernetes

Azure Bastion
Azure DNS
Azure Kubernetes Service (AKS)
Azure Private Link
Azure Virtual Network

Artikel ini membandingkan mode jaringan untuk Azure Kubernetes Service (AKS) dan Amazon Elastic Kubernetes Service (Amazon EKS). Artikel ini menjelaskan cara meningkatkan keamanan koneksi ke server API terkelola dari kluster AKS, dan berbagai opsi untuk membatasi akses jaringan publik.

Catatan

Artikel ini adalah bagian dari serangkaian artikel yang membantu para profesional yang terbiasa dengan Amazon EKS untuk memahami AKS.

Mode jaringan Amazon EKS

Dengan Amazon Virtual Private Cloud (Amazon VPC), Anda dapat meluncurkan sumber daya Amazon Web Services (AWS) ke jaringan virtual yang terdiri dari subnet publik dan privat, atau rentang alamat IP di VPC. Subnet publik menghosting sumber daya yang harus terhubung ke internet, dan subnet privat menghosting sumber daya yang tidak terhubung ke internet publik. Amazon EKS dapat menyediakan grup simpul terkelola di subnet publik dan privat.

Kontrol akses titik akhir memungkinkan Anda mengonfigurasi apakah titik akhir API Server dapat dijangkau dari internet publik atau melalui VPC. EKS menyediakan beberapa cara untuk mengontrol akses ke titik akhir kluster. Anda dapat mengaktifkan titik akhir publik default, titik akhir privat, atau kedua titik akhir secara bersamaan. Saat mengaktifkan titik akhir publik, Anda dapat menambahkan pembatasan Classless Inter-Domain Routing (CIDR) untuk membatasi alamat IP klien yang dapat tersambung ke titik akhir publik.

Bagaimana simpul Amazon EKS terhubung ke sarana kontrol Kube terkelola ditentukan oleh pengaturan titik akhir mana yang dikonfigurasi untuk kluster. Anda dapat mengubah pengaturan titik akhir kapan saja melalui konsol Amazon EKS atau API. Untuk informasi selengkapnya, lihat Kontrol akses titik akhir kluster Amazon EKS.

Titik akhir publik saja

Mengekspos sarana kontrol melalui titik akhir publik adalah mode default untuk kluster Amazon EKS baru. Ketika hanya titik akhir publik untuk kluster yang diaktifkan, permintaan API Kubernetes yang berasal dari dalam Amazon VPC, seperti simpul pekerja untuk mengontrol komunikasi sarana, meninggalkan VPC tetapi tidak meninggalkan jaringan Amazon. Agar simpul tersambung ke sarana kontrol, mereka harus menggunakan alamat IP publik dan rute ke gateway internet, atau rute ke gateway terjemahan alamat jaringan (NAT) tempat mereka dapat menggunakan alamat IP publik gateway NAT.

Titik akhir publik dan privat

Ketika titik akhir publik dan privat diaktifkan, Kubernetes API meminta dari dalam VPC berkomunikasi ke sarana kontrol melalui Antarmuka Jaringan Elastis (ENI) yang dikelola Amazon EKS di VPC. Server API kluster dapat diakses dari internet.

Titik akhir privat saja

Ketika hanya titik akhir privat yang diaktifkan, semua lalu lintas ke server API kluster, seperti kubectl perintah atau helm , harus berasal dari dalam VPC kluster atau jaringan yang terhubung. Akses publik ke server API dari internet dinonaktifkan. Anda dapat menerapkan mode akses ini dengan menggunakan AWS Virtual Private Network (AWS VPN) atau AWS DirectConnect ke VPC. Untuk membatasi akses ke titik akhir tanpa AWS VPN atau DirectConnect, Anda dapat menambahkan pembatasan CIDR ke titik akhir publik untuk membatasi koneksi tanpa menyiapkan lebih banyak jaringan.

Untuk informasi selengkapnya tentang opsi konektivitas, lihat Mengakses Server API Hanya Privat.

Akses jaringan AKS ke server API

Ada dua opsi untuk mengamankan akses jaringan ke API Kubernetes di AKS, kluster AKS privat atau rentang IP resmi.

Kluster AKS privat

Kluster privat AKS memastikan bahwa lalu lintas jaringan antara server API dan kumpulan simpul tetap berada dalam jaringan virtual. Dalam kluster AKS privat, sarana kontrol atau server API memiliki alamat IP internal yang hanya dapat diakses melalui titik akhir privat Azure yang terletak di jaringan virtual yang sama. Setiap komputer virtual (VM) dalam jaringan virtual yang sama dapat berkomunikasi secara privat dengan sarana kontrol melalui titik akhir privat. Sarana kontrol atau server API dihosting di langganan yang dikelola Azure, sementara kluster AKS dan kumpulan simpulnya berada dalam langganan pelanggan.

Diagram berikut mengilustrasikan konfigurasi kluster privat.

Diagram yang memperlihatkan kluster AKS privat.

Unduh file Visio arsitektur ini.

Untuk menyediakan kluster AKS privat, penyedia sumber daya AKS membuat nama domain privat yang sepenuhnya memenuhi syarat (FQDN) untuk grup sumber daya simpul di zona DNS privat. Secara opsional, AKS juga dapat membuat FQDN publik dengan rekaman alamat (A) yang sesuai di zona DNS publik Azure. Simpul agen menggunakan A catatan di zona DNS privat untuk menyelesaikan alamat IP titik akhir privat untuk komunikasi ke server API.

Penyedia sumber daya AKS dapat membuat zona DNS privat di grup sumber daya simpul, atau Anda dapat membuat zona DNS privat dan meneruskan ID sumber dayanya ke sistem provisi. Anda dapat membuat kluster privat saat menggunakan Terraform dengan Azure, Bicep, templat ARM, Azure CLI, modul Azure PowerShell, atau Azure REST API untuk membuat kluster.

Anda dapat mengaktifkan FQDN publik untuk server API selama provisi atau dengan menggunakan perintah az aks update dengan --enable-public-fqdn parameter pada kluster yang ada. Jika Anda mengaktifkan FQDN publik, VM apa pun yang mengakses server, seperti agen yang dihost sendiri azure DevOps atau runner yang dihost sendiri GitHub Actions, harus berada di jaringan virtual yang sama yang menghosting kluster, atau di jaringan yang terhubung melalui peering jaringan virtual atau VPN situs-ke-situs.

Untuk kluster AKS privat, Anda menonaktifkan FQDN publik server API. Untuk berkomunikasi dengan sarana kontrol privat, VM harus berada di jaringan virtual yang sama, atau di jaringan virtual yang di-peering dengan tautan jaringan virtual ke zona DNS privat. Catatan A di zona DNS privat menyelesaikan FQDN server API ke alamat IP titik akhir privat yang berkomunikasi dengan sarana kontrol yang mendasar. Selengkapnya, lihat Membuat kluster Azure Kubernetes Service privat.

Opsi penyebaran kluster privat

Penyedia sumber daya AKS mengekspos parameter berikut untuk menyesuaikan penyebaran kluster AKS privat:

  • authorizedIpRanges (string) menentukan rentang IP yang diizinkan dalam format CIDR.
  • disableRunCommand (boolean) menentukan apakah akan menonaktifkan run perintah untuk kluster atau tidak.
  • enablePrivateCluster (boolean) menentukan apakah akan membuat kluster sebagai privat atau tidak.
  • enablePrivateClusterPublicFQDN (boolean) menentukan apakah akan membuat FQDN publik lain atau tidak untuk kluster privat.
  • privateDnsZone (string) menentukan zona DNS privat dalam grup sumber daya simpul. Jika Anda tidak menentukan nilai, penyedia sumber daya akan membuat zona tersebut. Anda bisa menentukan nilai berikut:
    • System merupakan nilai defaultnya.
    • None default ke DNS publik, sehingga AKS tidak membuat zona DNS privat.
    • <Your own private DNS zone resource ID> menggunakan zona DNS privat yang Anda buat dalam format privatelink.<region>.azmk8s.io atau <subzone>.privatelink.<region>.azmk8s.io.

Tabel berikut ini memperlihatkan opsi konfigurasi DNS untuk menyebarkan kluster AKS privat:

Opsi zona DNS privat enablePrivateClusterPublicFQDN: true enablePrivateClusterPublicFQDN: false
Sistem Simpul agen, dan VM lain di jaringan virtual kluster AKS atau jaringan virtual apa pun yang terhubung ke zona DNS privat, gunakan catatan zona A DNS privat untuk menyelesaikan alamat IP privat titik akhir privat.

VM lain menggunakan FQDN publik dari server API.
Simpul agen, dan VM lain di jaringan virtual kluster AKS atau jaringan virtual apa pun yang terhubung ke zona DNS privat, gunakan catatan zona A DNS privat untuk menyelesaikan alamat IP privat titik akhir privat.

Tidak ada FQDN server API publik yang tersedia.
Tidak ada Semua VM, termasuk simpul agen, menggunakan FQDN publik server API yang A tersedia melalui rekaman di zona DNS publik yang dikelola Azure. Konfigurasi yang salah. Kluster AKS privat memerlukan setidaknya zona DNS publik atau privat untuk resolusi nama server API.
<ID sumber daya zona DNS privat Anda sendiri> Simpul agen, dan VM lain di jaringan virtual kluster AKS atau jaringan virtual apa pun yang terhubung ke zona DNS privat, gunakan catatan zona A DNS privat untuk menyelesaikan alamat IP privat titik akhir privat.

VM lain menggunakan FQDN publik dari server API.
Simpul agen, dan VM lain di jaringan virtual kluster AKS atau jaringan virtual apa pun yang terhubung ke zona DNS privat, gunakan catatan zona A DNS privat untuk menyelesaikan alamat IP privat titik akhir privat.

Tidak ada FQDN server API publik yang tersedia.

Konektivitas dan manajemen kluster privat

Ada beberapa opsi untuk membangun konektivitas jaringan ke kluster privat.

Anda dapat mengelola kluster AKS privat dengan menggunakan alat baris perintah kubectl dari VM manajemen di jaringan virtual yang sama atau jaringan virtual yang di-peering.

Anda dapat menggunakan Azure Bastion di jaringan virtual yang sama atau jaringan virtual yang di-peering untuk menyambungkan ke VM manajemen jumpbox. Azure Bastion adalah platform as a service (PaaS) yang dikelola sepenuhnya yang memungkinkan Anda terhubung ke VM dengan menggunakan browser dan portal Azure. Azure Bastion menyediakan konektivitas protokol desktop jarak jauh (RDP) atau secure shell (SSH) yang aman melalui keamanan lapisan transportasi (TLS) langsung dari portal Azure. Saat VM tersambung melalui Azure Bastion, mereka tidak memerlukan alamat IP publik, agen, atau perangkat lunak klien khusus.

Anda juga dapat menggunakan perintah az aks untuk menjalankan kubectl atau helm perintah pada kluster AKS privat Anda tanpa harus terhubung ke VM jumpbox.

Rentang IP resmi

Opsi kedua untuk meningkatkan keamanan kluster dan meminimalkan serangan ke server API adalah menggunakan rentang IP resmi. IP resmi membatasi akses ke sarana kontrol kluster AKS publik ke daftar alamat IP dan CIDR yang diketahui. Ketika Anda menggunakan opsi ini, server API masih diekspos secara publik, tetapi akses terbatas. Untuk informasi selengkapnya, lihat Mengamankan akses ke server API menggunakan rentang alamat IP resmi di Azure Kubernetes Service (AKS).

Perintah Azure CLI berikut mengotorisasi az aks update rentang IP:

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

Pertimbangan konektivitas AKS

  • Kluster privat AKS memberikan keamanan dan isolasi yang lebih tinggi daripada IP resmi. Namun, Anda tidak dapat mengonversi kluster AKS publik yang ada menjadi kluster privat. Anda dapat mengaktifkan IP resmi untuk kluster AKS yang ada.

  • Anda tidak dapat menerapkan rentang IP resmi ke titik akhir server API privat. IP resmi hanya berlaku untuk server API publik.

  • Kluster privat tidak mendukung agen yang dihosting Azure DevOps. Pertimbangkan untuk menggunakan agen yang dihost sendiri.

  • Untuk mengaktifkan Azure Container Registry bekerja dengan kluster AKS privat, siapkan tautan privat untuk registri kontainer di jaringan virtual kluster. Atau, siapkan peering antara jaringan virtual Container Registry dan jaringan virtual kluster privat.

  • Batasan layanan Azure Private Link berlaku untuk kluster privat.

  • Jika Anda menghapus atau memodifikasi titik akhir privat di subnet pelanggan kluster privat, kluster akan berhenti berfungsi.

Kontributor

Artikel ini dikelola oleh Microsoft. Awalnya ditulis oleh kontributor berikut.

Penulis utama:

Kontributor lainnya:

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah berikutnya

Referensi berikut menyediakan tautan ke dokumentasi dan sampel otomatisasi untuk menyebarkan kluster AKS dengan API yang aman: