Aktifkan mTL di AWS App Mesh menggunakan AWS Private CA di Amazon EKS - AWS Prescriptive Guidance

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.

Node pekerja kluster EKS dengan Agen dan Server SPIRE, App Mesh, dan Utusan untuk mTL.

Diagram ini menggambarkan langkah-langkah berikut:

  1. Sertifikat dikeluarkan.

  2. 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

TugasDeskripsiKeterampilan 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 certificate_authority_arn Amazon (ARN) ke CA ARN pribadi Anda. Algoritma penandatanganan yang digunakan harus sama dengan algoritma penandatanganan pada CA pribadi. Ganti your_region dengan Wilayah AWS Anda.

Untuk informasi selengkapnya tentang plugin, lihat Plugin server: UpstreamAuthority “aws_pca”.

DevOps insinyur

Perbarui bundle.cert.

Setelah Anda membuat server SPIRE, spire-bundle.yaml file akan dibuat. Ubah bundle.crt nilai dalam spire-bundle.yaml file dari CA pribadi ke sertifikat publik.

DevOps insinyur
TugasDeskripsiKeterampilan 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.

kubectl exec -n spire spire-server-0 -- /opt/spire/bin/spire-server entry show

Ini akan menampilkan entri untuk Agen SPIRE.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Verifikasi lalu lintas mTLS.

  1. Dari layanan frontend, kirim header HTTP ke layanan backend, dan verifikasi respons yang berhasil dengan layanan yang terdaftar di SPIRE.

  2. Untuk otentikasi TLS timbal balik, Anda dapat memeriksa ssl.handshake statistik dengan menjalankan perintah berikut.

    kubectl exec -it $POD -n $NAMESPACE -c envoy -- curl http://localhost:9901/stats | grep ssl.handshake

    Setelah menjalankan perintah sebelumnya, Anda akan melihat ssl.handshake jumlah pendengar, yang akan terlihat mirip dengan contoh berikut:

    listener.0.0.0.0_15000.ssl.handshake: 2
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.

kubectl logs spire-server-0 -n spire

Kemudian lihat log yang diproduksi. Kode ini mengasumsikan bahwa server Anda diberi nama spire-server-0 dan di-host di spire namespace Anda. Anda akan melihat pemuatan plugin yang berhasil dan koneksi dibuat ke CA pribadi hulu Anda.

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" } }