Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Aktifkan mTL di AWS App Mesh menggunakan AWS Private CA di Amazon EKS
Omar Kahil, Emmanuel Saliu, Muhammad Shahzad, dan Andy Wong, Amazon Web Services
Ringkasan
Pola ini menunjukkan cara menerapkan Mutual Transport Layer Security (mTLS) di Amazon Web Services (AWS) menggunakan sertifikat dari AWS Private Certificate Authority (AWS Private CA) di AWS App Mesh. Ini menggunakan API Envoy Secret Discovery Service (SDS) melalui Secure Production Identity Framework for Everyone (SPIFFE). SPIFFE adalah proyek open-source Cloud Native Computing Foundation (CNCF) dengan dukungan komunitas luas yang menyediakan manajemen identitas beban kerja yang halus dan dinamis. Untuk menerapkan standar SPIFFE, gunakan lingkungan runtime SPIRE SPIFFE.
Menggunakan mTLS di App Mesh menawarkan otentikasi rekan dua arah, karena menambahkan lapisan keamanan melalui TLS dan memungkinkan layanan di mesh untuk memverifikasi klien yang membuat koneksi. Klien dalam hubungan client-server juga menyediakan sertifikat X.509 selama proses negosiasi sesi. Server menggunakan sertifikat ini untuk mengidentifikasi dan mengotentikasi klien. Ini membantu memverifikasi apakah sertifikat dikeluarkan oleh otoritas sertifikat tepercaya (CA) dan apakah sertifikat tersebut valid.
Prasyarat dan batasan
Prasyarat
Cluster Amazon Elastic Kubernetes Service (Amazon EKS) dengan grup node yang dikelola sendiri atau dikelola
Pengontrol App Mesh digunakan di cluster dengan SDS diaktifkan
Sertifikat pribadi dari AWS Certificate Manager (ACM) yang dikeluarkan oleh AWS Private CA
Batasan
SPIRE tidak dapat diinstal pada AWS Fargate karena Agen SPIRE harus dijalankan sebagai Kubernetes. DaemonSet
Versi produk
Bagan AWS App Mesh Controller 1.3.0 atau yang lebih baru
Arsitektur
Diagram berikut menunjukkan cluster EKS dengan App Mesh di VPC. Server SPIRE dalam satu node pekerja berkomunikasi dengan Agen SPIRE di node pekerja lain, dan dengan AWS Private CA. Utusan digunakan untuk komunikasi mTLS antara node pekerja SPIRE Agent.

Diagram ini menggambarkan langkah-langkah berikut:
Sertifikat dikeluarkan.
Minta penandatanganan sertifikat dan sertifikat.
Alat
Layanan AWS
AWS Private CA — AWS Private Certificate Authority (AWS Private CA) memungkinkan pembuatan hierarki otoritas sertifikat pribadi (CA) CAs, termasuk root dan bawahan, tanpa biaya investasi dan pemeliharaan pengoperasian CA lokal.
AWS App Mesh — AWS App Mesh adalah mesh layanan yang memudahkan pemantauan dan kontrol layanan. App Mesh menstandarisasi cara layanan Anda berkomunikasi, memberi Anda visibilitas yang konsisten dan kontrol lalu lintas jaringan untuk setiap layanan dalam suatu aplikasi.
Amazon EKS — 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.
Alat lainnya
Helm
- Helm adalah manajer paket untuk Kubernetes yang membantu Anda menginstal dan mengelola aplikasi di klaster Kubernetes Anda. Pola ini menggunakan Helm untuk menerapkan AWS App Mesh Controller. Bagan Pengontrol AWS App Mesh — Bagan
Pengontrol AWS App Mesh digunakan oleh pola ini untuk mengaktifkan AWS App Mesh di Amazon EKS.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan App Mesh dengan Amazon EKS. | Ikuti langkah-langkah penyebaran dasar yang disediakan di repositori | DevOps insinyur |
Instal SPIRE. | Instal SPIRE pada cluster EKS dengan menggunakan spire_setup.yaml | DevOps insinyur |
Instal sertifikat AWS Private CA. | Buat dan instal sertifikat untuk CA root pribadi Anda dengan mengikuti petunjuk dalam dokumentasi AWS. | DevOps insinyur |
Berikan izin ke peran instance node cluster. | Untuk melampirkan kebijakan ke peran instance node cluster, gunakan kode yang ada di bagian Informasi tambahan. | DevOps insinyur |
Tambahkan plugin SPIRE untuk AWS Private CA. | Untuk menambahkan plugin ke konfigurasi server SPIRE, gunakan kode yang ada di bagian Informasi tambahan. Ganti Nama Sumber Daya Untuk informasi selengkapnya tentang plugin, lihat Plugin server: UpstreamAuthority “aws_pca | DevOps insinyur |
Perbarui bundle.cert. | Setelah Anda membuat server SPIRE, | DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Daftarkan entri node dan beban kerja dengan SPIRE. | Untuk mendaftarkan node dan beban kerja (layanan) dengan SPIRE Server, gunakan kode di repositori. | DevOps insinyur |
Buat mesh di App Mesh dengan mTL diaktifkan. | Buat mesh baru di App Mesh dengan semua komponen untuk aplikasi microservices Anda (misalnya, layanan virtual, router virtual, dan node virtual). | DevOps insinyur |
Periksa entri yang terdaftar. | Anda dapat memeriksa entri terdaftar untuk node dan beban kerja Anda dengan menjalankan perintah berikut.
Ini akan menampilkan entri untuk Agen SPIRE. | DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Verifikasi lalu lintas mTLS. |
| DevOps insinyur |
Verifikasi bahwa sertifikat diterbitkan dari AWS Private CA. | Anda dapat memeriksa apakah plugin telah dikonfigurasi dengan benar dan sertifikat dikeluarkan dari CA pribadi hulu Anda dengan melihat log di server SPIRE Anda. Jalankan perintah berikut.
Kemudian lihat log yang diproduksi. Kode ini mengasumsikan bahwa server Anda diberi nama | DevOps insinyur |
Sumber daya terkait
Informasi tambahan
Lampirkan izin ke peran instance node cluster
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ACMPCASigning", "Effect": "Allow", "Action": [ "acm-pca:DescribeCertificateAuthority", "acm-pca:IssueCertificate", "acm-pca:GetCertificate", "acm:ExportCertificate" ], "Resource": "*" } ] } AWS Managed Policy: "AWSAppMeshEnvoyAccess"
Tambahkan plugin SPIRE untuk ACM
Add the SPIRE plugin for ACM Change certificate_authority_arn to your PCA ARN. The signing algorithm used must be the same as the signing algorithm on the PCA. Change your_region to the appropriate AWS Region. UpstreamAuthority "aws_pca" { plugin_data { region = "your_region" certificate_authority_arn = "arn:aws:acm-pca:...." signing_algorithm = "your_signing_algorithm" } }