Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Siapkan end-to-end enkripsi untuk aplikasi di Amazon EKS menggunakan cert-manager dan Let's Encrypt
Mahendra Revanasiddappa dan Vasanth Jeyaraj, Amazon Web Services
Ringkasan
Menerapkan end-to-end enkripsi dapat menjadi rumit dan Anda perlu mengelola sertifikat untuk setiap aset dalam arsitektur layanan mikro Anda. Meskipun Anda dapat menghentikan koneksi Transport Layer Security (TLS) di tepi jaringan Amazon Web Services (AWS) dengan Network Load Balancer atau Amazon API Gateway, beberapa organisasi memerlukan enkripsi. end-to-end
Pola ini menggunakan NGINX Ingress Controller untuk masuk. Ini karena ketika Anda membuat ingress Kubernetes, resource ingress menggunakan Network Load Balancer. Network Load Balancer tidak mengizinkan pengunggahan sertifikat klien. Oleh karena itu, Anda tidak dapat mencapai TLS timbal balik dengan masuknya Kubernetes.
Pola ini ditujukan untuk organisasi yang membutuhkan otentikasi timbal balik antara semua layanan mikro dalam aplikasi mereka. Mutual TLS mengurangi beban mempertahankan nama pengguna atau kata sandi dan juga dapat menggunakan kerangka keamanan turnkey. Pendekatan pola ini kompatibel jika organisasi Anda memiliki sejumlah besar perangkat yang terhubung atau harus mematuhi pedoman keamanan yang ketat.
Pola ini membantu meningkatkan postur keamanan organisasi Anda dengan menerapkan end-to-end enkripsi untuk aplikasi yang berjalan di Amazon Elastic Kubernetes Service (Amazon EKS). Pola ini menyediakan contoh aplikasi dan kode dalam GitHub End-to-end enkripsi di repositori Amazon EKS
Audiens yang dituju
Pola ini direkomendasikan untuk pengguna yang memiliki pengalaman dengan Kubernetes, TLS, Amazon Route 53, dan Domain Name System (DNS).
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif.
Sebuah klaster Amazon EKS yang sudah ada.
AWS Command Line Interface (AWS CLI) versi 1.7 atau yang lebih baru, diinstal dan dikonfigurasi di macOS, Linux, atau Windows.
Utilitas baris
kubectlperintah, diinstal dan dikonfigurasi untuk mengakses cluster Amazon EKS. Untuk informasi selengkapnya tentang ini, lihat Menginstal kubectl di dokumentasi Amazon EKS.Nama DNS yang ada untuk menguji aplikasi. Untuk informasi selengkapnya tentang hal ini, lihat Mendaftarkan nama domain menggunakan Amazon Route 53 dalam dokumentasi Amazon Route 53.
Versi Helm terbaru, diinstal pada mesin lokal Anda. Untuk informasi selengkapnya tentang ini, lihat Menggunakan Helm dengan Amazon EKS di dokumentasi Amazon EKS dan repositori GitHub Helm
. GitHub End-to-end Enkripsi di repositori Amazon EKS
, dikloning ke mesin lokal Anda. Ganti nilai berikut di
trustpolicy.jsonfilepolicy.jsondan dari GitHub End-to-end enkripsi kloning di repositori Amazon EKS: <account number>— Ganti dengan ID akun AWS untuk akun tempat Anda ingin menerapkan solusinya.<zone id>— Ganti dengan ID zona Route 53 nama domain.<node_group_role>— Ganti dengan nama peran AWS Identity and Access Management (IAM) yang terkait dengan node Amazon EKS.<namespace>— Ganti dengan namespace Kubernetes di mana Anda menggunakan NGINX Ingress Controller dan aplikasi sampel.<application-domain-name>— Ganti dengan nama domain DNS dari Route 53.
Batasan
Pola ini tidak menjelaskan cara memutar sertifikat dan hanya menunjukkan cara menggunakan sertifikat dengan layanan mikro di Amazon EKS.
Arsitektur
Diagram berikut menunjukkan alur kerja dan komponen arsitektur untuk pola ini.

Diagram menunjukkan alur kerja berikut:
Klien mengirimkan permintaan untuk mengakses aplikasi ke nama DNS.
Catatan Route 53 adalah CNAME ke Network Load Balancer.
Network Load Balancer meneruskan permintaan ke NGINX Ingress Controller yang dikonfigurasi dengan pendengar TLS. Komunikasi antara NGINX Ingress Controller dan Network Load Balancer mengikuti protokol HTTPS.
NGINX Ingress Controller melakukan routing berbasis jalur berdasarkan permintaan klien ke layanan aplikasi.
Layanan aplikasi meneruskan permintaan ke pod aplikasi. Aplikasi ini dirancang untuk menggunakan sertifikat yang sama dengan memanggil rahasia.
Pod menjalankan aplikasi sampel menggunakan sertifikat cert-manager. Komunikasi antara NGINX Ingress Controller dan pod menggunakan HTTPS.
Catatan: Cert-manager berjalan di namespace sendiri. Ini menggunakan peran klaster Kubernetes untuk menyediakan sertifikat sebagai rahasia di ruang nama tertentu. Anda dapat melampirkan namespace tersebut ke pod aplikasi dan NGINX Ingress Controller. |
|---|
Alat
Layanan AWS
Amazon Elastic Kubernetes Service (Amazon EKS) adalah layanan terkelola yang dapat Anda gunakan untuk menjalankan Kubernetes di AWS tanpa perlu menginstal, mengoperasikan, dan memelihara control plane atau node Kubernetes Anda sendiri.
Elastic Load Balancing secara otomatis mendistribusikan lalu lintas masuk Anda ke beberapa target, kontainer, dan alamat IP.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
Amazon Route 53 adalah layanan web DNS yang sangat tersedia dan dapat diskalakan.
Alat-alat lainnya
cert-manager
adalah add-on untuk Kubernetes yang meminta sertifikat, mendistribusikannya ke kontainer Kubernetes, dan mengotomatiskan perpanjangan sertifikat. NGINX Ingress Controller
adalah solusi manajemen lalu lintas untuk aplikasi cloud-native di Kubernetes dan lingkungan kontainer.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat zona yang dihosting publik di Route 53. | Masuk ke AWS Management Console, buka konsol Amazon Route 53, pilih Zona yang dihosting, lalu pilih Buat zona yang dihosting. Buat zona yang dihosting publik dan catat ID zona. Untuk informasi selengkapnya tentang hal ini, lihat Membuat zona yang dihosting publik di dokumentasi Amazon Route 53. catatanACME DNS01 menggunakan penyedia DNS untuk memposting tantangan bagi manajer sertifikat untuk mengeluarkan sertifikat. Tantangan ini meminta Anda untuk membuktikan bahwa Anda mengontrol DNS untuk nama domain Anda dengan menempatkan nilai tertentu dalam catatan TXT di bawah nama domain tersebut. Setelah Let's Encrypt memberikan token kepada klien ACME Anda, klien Anda membuat catatan TXT yang berasal dari token itu dan kunci akun Anda, dan itu menempatkan catatan itu di. | AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat kebijakan IAM untuk cert-manager. | Kebijakan IAM diperlukan untuk memberikan izin kepada manajer sertifikat untuk memvalidasi bahwa Anda memiliki domain Route 53. Masukkan perintah berikut di AWS CLI untuk membuat kebijakan IAM.
| AWS DevOps |
Buat peran IAM untuk cert-manager. | Setelah membuat kebijakan IAM, Anda harus membuat peran IAM. Masukkan perintah berikut di AWS CLI untuk membuat peran IAM.
| AWS DevOps |
Lampirkan kebijakan pada peran tersebut. | Masukkan perintah berikut di AWS CLI untuk melampirkan kebijakan IAM ke peran IAM. Ganti
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan NGINX Ingress Controller. | Instal versi terbaru Instal NGINX Ingress Controller dengan menjalankan perintah Helm berikut dari direktori.
| AWS DevOps |
Verifikasi bahwa NGINX Ingress Controller diinstal. | Masukkan | AWS DevOps |
Buat catatan Route 53 A. | Catatan A menunjuk ke Network Load Balancer yang dibuat oleh NGINX Ingress Controller.
| AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan NGINX VirtualServer. | VirtualServer Sumber daya NGINX adalah konfigurasi load balancing yang merupakan alternatif dari sumber daya ingress. Konfigurasi untuk membuat VirtualServer sumber daya NGINX tersedia dalam
pentingPastikan Anda memperbarui nama domain aplikasi, rahasia sertifikat, dan nama layanan aplikasi dalam | AWS DevOps |
Verifikasi bahwa NGINX VirtualServer dibuat. | Masukkan perintah berikut
catatanVerifikasi bahwa | AWS DevOps |
Menyebarkan server web NGINX dengan TLS diaktifkan. | Pola ini menggunakan server web NGINX dengan TLS diaktifkan sebagai aplikasi untuk menguji enkripsi. end-to-end File konfigurasi yang diperlukan untuk menyebarkan aplikasi pengujian tersedia di Masukkan perintah berikut
| AWS DevOps |
Verifikasi bahwa sumber daya aplikasi pengujian dibuat. | Masukkan perintah berikut
| AWS DevOps |
Validasi aplikasi. |
| AWS DevOps |
Sumber daya terkait
Sumber daya AWS
Membuat rekaman dengan menggunakan konsol Amazon Route 53 (dokumentasi Amazon Route 53)
Menggunakan Network Load Balancer dengan pengontrol ingress NGINX di Amazon EKS
(postingan blog AWS)
Sumber daya lainnya
Route 53
(dokumentasi pengelola sertifikat) Mengkonfigurasi Penyedia Tantangan DNS01
(dokumentasi manajer sertifikat) Mari mengenkripsi tantangan DNS
(Let's Encrypt documentation)