Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengkonfigurasi sumber acara Apache Kafka yang dikelola sendiri untuk Lambda
Sebelum Anda membuat pemetaan sumber peristiwa untuk cluster Apache Kafka yang dikelola sendiri, Anda perlu memastikan bahwa klaster Anda dan tempat VPC tinggalnya dikonfigurasi dengan benar. Anda juga perlu memastikan bahwa peran eksekusi fungsi Lambda Anda memiliki izin yang diperlukanIAM.
Ikuti petunjuk di bagian berikut untuk mengonfigurasi cluster Apache Kafka dan fungsi Lambda yang dikelola sendiri. Untuk mempelajari cara membuat pemetaan sumber peristiwa, lihatMenambahkan klaster Kafka sebagai sumber peristiwa.
Otentikasi cluster Kafka
Lambda mendukung beberapa metode untuk mengautentikasi dengan klaster Apache Kafka yang dikelola sendiri. Pastikan Anda mengonfigurasi cluster Kafka untuk menggunakan salah satu metode otentikasi yang didukung ini. Untuk informasi lebih lanjut tentang keamanan Kafka, lihat bagian Keamanan
VPCakses
Jika hanya pengguna Kafka yang VPC mengakses broker Kafka Anda, Anda harus mengonfigurasi sumber acara Kafka untuk akses Amazon Virtual Private Cloud (AmazonVPC).
SASL/SCRAMotentikasi
Lambda mendukung otentikasi Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) otentikasi dengan enkripsi Transport Layer Security () (). TLS SASL_SSL
Lambda mengirimkan kredensial terenkripsi untuk mengautentikasi dengan klaster. Lambda tidak mendukungSASL/SCRAMdengan plaintext (). SASL_PLAINTEXT
Untuk informasi selengkapnya tentangSASL/SCRAMotentikasi, lihat RFC5802
Lambda juga mendukungSASL/PLAINotentikasi. Karena mekanisme ini menggunakan kredensil teks yang jelas, koneksi ke server harus menggunakan TLS enkripsi untuk memastikan bahwa kredensialnya dilindungi.
Untuk SASL autentikasi, Anda menyimpan kredensi masuk sebagai rahasia. AWS Secrets Manager Untuk informasi selengkapnya tentang menggunakan Secrets Manager, lihat Tutorial: Membuat dan mengambil rahasia di Panduan AWS Secrets Manager Pengguna.
penting
Untuk menggunakan Secrets Manager untuk otentikasi, rahasia harus disimpan di AWS wilayah yang sama dengan fungsi Lambda Anda.
TLSOtentikasi timbal balik
Mutual TLS (mTLS) menyediakan otentikasi dua arah antara klien dan server. Klien mengirimkan sertifikat ke server untuk server untuk memverifikasi klien, dan server mengirimkan sertifikat ke klien untuk klien untuk memverifikasi server.
Dalam Apache Kafka yang dikelola sendiri, Lambda bertindak sebagai klien. Anda mengonfigurasi sertifikat klien (sebagai rahasia di Secrets Manager) untuk mengautentikasi Lambda dengan broker Kafka Anda. Sertifikat klien harus ditandatangani oleh CA di toko kepercayaan server.
Cluster Kafka mengirimkan sertifikat server ke Lambda untuk mengautentikasi broker Kafka dengan Lambda. Sertifikat server dapat berupa sertifikat CA publik atau sertifikat CA/Self-signed private. Sertifikat CA publik harus ditandatangani oleh otoritas sertifikat (CA) yang ada di toko kepercayaan Lambda. Untuk sertifikat CA/Self-signed privat, Anda mengonfigurasi sertifikat CA root server (sebagai rahasia di Secrets Manager). Lambda menggunakan sertifikat root untuk memverifikasi broker Kafka.
Untuk informasi selengkapnya tentang mTLS, lihat Memperkenalkan TLS autentikasi timbal balik untuk Amazon MSK sebagai sumber peristiwa
Mengkonfigurasi rahasia sertifikat klien
AUTHRahasia CLIENT CERTIFICATE TLS _ _ memerlukan bidang sertifikat dan bidang kunci pribadi. Untuk kunci pribadi terenkripsi, rahasianya memerlukan kata sandi kunci pribadi. Baik sertifikat dan kunci pribadi harus dalam PEM format.
catatan
Lambda mendukung PBES1
Bidang sertifikat harus berisi daftar sertifikat, dimulai dengan sertifikat klien, diikuti oleh sertifikat perantara, dan diakhiri dengan sertifikat root. Setiap sertifikat harus dimulai pada baris baru dengan struktur berikut:
-----BEGIN CERTIFICATE----- <certificate contents> -----END CERTIFICATE-----
Secrets Manager mendukung rahasia hingga 65.536 byte, yang merupakan ruang yang cukup untuk rantai sertifikat yang panjang.
Kunci pribadi harus dalam format PKCS#8
-----BEGIN PRIVATE KEY----- <private key contents> -----END PRIVATE KEY-----
Untuk kunci pribadi terenkripsi, gunakan struktur berikut:
-----BEGIN ENCRYPTED PRIVATE KEY----- <private key contents> -----END ENCRYPTED PRIVATE KEY-----
Contoh berikut menunjukkan isi rahasia untuk m TLS otentikasi menggunakan kunci pribadi terenkripsi. Untuk kunci pribadi terenkripsi, sertakan kata sandi kunci pribadi dalam rahasia.
{"privateKeyPassword":"testpassword", "certificate":"-----BEGIN CERTIFICATE----- MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw ... j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk cmUuiAii9R0= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb ... rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg== -----END CERTIFICATE-----", "privateKey":"-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp ... QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA== -----END ENCRYPTED PRIVATE KEY-----" }
Mengkonfigurasi rahasia sertifikat CA root server
Anda membuat rahasia ini jika broker Kafka Anda menggunakan TLS enkripsi dengan sertifikat yang ditandatangani oleh CA pribadi. Anda dapat menggunakan TLS enkripsi untukVPC,SASL/SCRAM,SASL/PLAIN, atau m TLS otentikasi.
Rahasia sertifikat CA root server memerlukan bidang yang berisi sertifikat root CA broker Kafka dalam PEM format. Contoh berikut menunjukkan struktur rahasia.
{"certificate":"-----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dG... -----END CERTIFICATE-----" }
Konfigurasi jaringan
Agar Lambda dapat menggunakan cluster Kafka Anda sebagai sumber peristiwa, Lambda memerlukan akses ke Amazon tempat klaster VPC Anda berada. Kami menyarankan Anda menerapkan AWS PrivateLink VPCtitik akhir untuk Lambda untuk mengakses Anda. VPC Terapkan titik akhir untuk Lambda dan (). AWS Security Token Service AWS STS Jika broker menggunakan otentikasi, gunakan juga VPC endpoint untuk Secrets Manager. Jika Anda mengonfigurasi tujuan saat kegagalan, gunakan juga VPC titik akhir untuk layanan tujuan.
Atau, pastikan bahwa yang VPC terkait dengan cluster Kafka Anda mencakup satu NAT gateway per subnet publik. Untuk informasi selengkapnya, lihat Aktifkan akses internet untuk fungsi VPC Lambda yang terhubung.
Jika Anda menggunakan VPC titik akhir, Anda juga harus mengonfigurasinya untuk mengaktifkan DNS nama pribadi.
Saat Anda membuat pemetaan sumber peristiwa untuk cluster Apache Kafka yang dikelola sendiri, Lambda memeriksa apakah Elastic Network Interfaces (ENIs) sudah ada untuk subnet dan grup keamanan klaster Anda. VPC Jika Lambda menemukan yang adaENIs, ia mencoba untuk menggunakannya kembali. Jika tidak, Lambda membuat yang baru ENIs untuk terhubung ke sumber acara dan memanggil fungsi Anda.
catatan
Fungsi Lambda selalu berjalan di dalam yang VPCs dimiliki oleh layanan Lambda. Ini VPCs dikelola secara otomatis oleh layanan dan tidak terlihat oleh pelanggan. Anda juga dapat menghubungkan fungsi Anda ke AmazonVPC. Dalam kedua kasus tersebut, VPC konfigurasi fungsi Anda tidak memengaruhi pemetaan sumber peristiwa. Hanya konfigurasi sumber acara yang VPC menentukan bagaimana Lambda terhubung ke sumber acara Anda.
Untuk informasi selengkapnya tentang mengonfigurasi jaringan, lihat Menyiapkan AWS Lambda dengan cluster Apache Kafka VPC di dalam Blog Komputasi
VPCaturan kelompok keamanan
Konfigurasikan grup keamanan untuk Amazon VPC yang berisi klaster Anda dengan aturan berikut (minimal):
-
Aturan masuk - Izinkan semua lalu lintas di port broker Kafka untuk grup keamanan yang ditentukan untuk sumber acara Anda. Kafka menggunakan port 9092 secara default.
-
Aturan keluar - Izinkan semua lalu lintas di port 443 untuk semua tujuan. Izinkan semua lalu lintas di port broker Kafka untuk grup keamanan yang ditentukan untuk sumber acara Anda. Kafka menggunakan port 9092 secara default.
-
Jika Anda menggunakan VPC titik akhir alih-alih NAT gateway, grup keamanan yang terkait dengan VPC titik akhir harus mengizinkan semua lalu lintas masuk pada port 443 dari grup keamanan sumber acara.
Bekerja dengan titik VPC akhir
Saat Anda menggunakan VPC titik akhir, API panggilan untuk memanggil fungsi Anda dirutekan melalui titik akhir ini menggunakan. ENIs Kepala layanan Lambda perlu memanggil sts:AssumeRole
dan lambda:InvokeFunction
pada peran dan fungsi apa pun yang menggunakannya. ENIs
Secara default, VPC titik akhir memiliki IAM kebijakan yang terbuka. Praktik terbaik adalah membatasi kebijakan ini untuk memungkinkan hanya prinsipal tertentu untuk melakukan tindakan yang diperlukan menggunakan titik akhir itu. Untuk memastikan bahwa pemetaan sumber peristiwa Anda dapat menjalankan fungsi Lambda Anda, kebijakan VPC titik akhir harus mengizinkan prinsip layanan Lambda untuk memanggil dan. sts:AssumeRole
lambda:InvokeFunction
Membatasi kebijakan VPC titik akhir Anda untuk mengizinkan hanya API panggilan yang berasal dari organisasi Anda mencegah pemetaan sumber peristiwa berfungsi dengan baik.
Contoh kebijakan VPC endpoint berikut menunjukkan cara memberikan akses yang diperlukan ke prinsipal layanan Lambda untuk titik akhir AWS STS dan Lambda.
contoh VPCkebijakan titik akhir - AWS STS titik akhir
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
contoh VPCkebijakan titik akhir - Titik akhir Lambda
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
Jika broker Kafka Anda menggunakan otentikasi, Anda juga dapat membatasi kebijakan VPC titik akhir untuk titik akhir Secrets Manager. Untuk memanggil Secrets ManagerAPI, Lambda menggunakan peran fungsi Anda, bukan kepala layanan Lambda. Contoh berikut menunjukkan kebijakan titik akhir Secrets Manager.
contoh VPCkebijakan endpoint - titik akhir Secrets Manager
{ "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Principal": { "AWS": [ "
customer_function_execution_role_arn
" ] }, "Resource": "customer_secret_arn
" } ] }
Jika Anda memiliki tujuan pada kegagalan yang dikonfigurasi, Lambda juga menggunakan peran fungsi Anda untuk memanggil s3:PutObject
salah satusns:Publish
,, sqs:sendMessage
atau menggunakan Lambda-managed. ENIs
APIakses dan izin fungsi Lambda
Selain mengakses cluster Kafka yang dikelola sendiri, fungsi Lambda Anda memerlukan izin untuk melakukan berbagai tindakan. API Anda menambahkan izin ini ke peran eksekusi fungsi. Jika pengguna Anda memerlukan akses ke API tindakan apa pun, tambahkan izin yang diperlukan ke kebijakan identitas untuk AWS Identity and Access Management (IAM) pengguna atau peran.
Izin fungsi Lambda diperlukan
Untuk membuat dan menyimpan log dalam grup log di Amazon CloudWatch Logs, fungsi Lambda Anda harus memiliki izin berikut dalam peran pelaksanaannya:
Izin fungsi Lambda opsional
Fungsi Lambda Anda mungkin juga memerlukan izin untuk:
-
Jelaskan rahasia Secrets Manager Anda.
-
Akses AWS Key Management Service (AWS KMS) kunci terkelola pelanggan Anda.
-
Akses Amazon AndaVPC.
-
Kirim catatan pemanggilan yang gagal ke tujuan.
Secrets Manager dan AWS KMS izin
Bergantung pada jenis kontrol akses yang Anda konfigurasikan untuk broker Kafka Anda, fungsi Lambda Anda mungkin memerlukan izin untuk mengakses rahasia Secrets Manager Anda atau untuk mendekripsi kunci yang dikelola pelanggan Anda. AWS KMS Untuk mengakses sumber daya ini, peran eksekusi fungsi Anda harus memiliki izin berikut:
VPCizin
Jika hanya pengguna dalam a yang VPC dapat mengakses cluster Apache Kafka yang dikelola sendiri, fungsi Lambda Anda harus memiliki izin untuk mengakses sumber daya Amazon Anda. VPC Sumber daya ini termasuk AndaVPC, subnet, grup keamanan, dan antarmuka jaringan. Untuk mengakses sumber daya ini, peran eksekusi fungsi Anda harus memiliki izin berikut:
Menambahkan izin ke peran eksekusi
Secara default, Lambda tidak diizinkan untuk melakukan tindakan yang diperlukan atau opsional untuk klaster Apache Kafka yang dikelola sendiri. Anda harus membuat dan mendefinisikan tindakan ini dalam kebijakan IAM kepercayaan untuk peran eksekusi Anda. Contoh ini menunjukkan cara Anda membuat kebijakan yang memungkinkan Lambda mengakses sumber daya Amazon VPC Anda.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource":"*" } ] }
Memberikan akses kepada pengguna dengan kebijakan IAM
Secara default, pengguna dan peran tidak memiliki izin untuk melakukan APIoperasi sumber peristiwa. Untuk memberikan akses ke pengguna di organisasi atau akun Anda, Anda membuat atau memperbarui kebijakan berbasis identitas. Untuk informasi selengkapnya, lihat Mengontrol akses ke AWS sumber daya menggunakan kebijakan di Panduan IAM Pengguna.