Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kaitkan Fungsi CloudFront Koneksi
CloudFront Fungsi Koneksi memungkinkan Anda menerapkan logika validasi sertifikat kustom selama jabat tangan TLS, menyediakan ekstensi ke kemampuan otentikasi mTLS bawaan.
Apa itu Fungsi Koneksi?
Fungsi Koneksi adalah JavaScript fungsi yang berjalan selama jabat tangan TLS setelah sertifikat klien divalidasi. Sertifikat klien yang divalidasi diteruskan ke Fungsi Koneksi di mana Fungsi Koneksi dapat membuat penentuan tambahan apakah akan memberikan akses atau tidak. Untuk informasi rinci tentang Fungsi Koneksi, lihatSesuaikan di tepi dengan CloudFront Fungsi.
Bagaimana Fungsi Koneksi bekerja dengan mTL
Ketika klien mencoba membuat koneksi mTLS ke CloudFront distribusi Anda, urutan berikut terjadi:
-
Klien memulai jabat tangan TLS dengan CloudFront lokasi tepi.
-
CloudFront meminta dan menerima sertifikat klien.
-
CloudFront melakukan validasi sertifikat standar terhadap trust store.
-
Jika sertifikat melewati validasi standar, CloudFront memanggil Fungsi Koneksi Anda. Jika IgnoreCertificateExpirydiaktifkan di dalam Anda ViewerMtlsConfig, maka sertifikat Anda yang kedaluwarsa—tetapi valid—juga diteruskan ke Fungsi Sambungan. Jika sertifikat klien tidak valid, Fungsi Koneksi tidak akan dipanggil.
-
Fungsi Koneksi Anda menerima informasi sertifikat dan detail koneksi yang diuraikan.
-
Fungsi Anda membuat allow/deny keputusan berdasarkan logika kustom.
-
CloudFront menyelesaikan atau mengakhiri koneksi TLS berdasarkan keputusan Anda.
Fungsi Koneksi dipanggil untuk mode verifikasi dan mode opsional (saat klien menyajikan sertifikat).
Meminta peningkatan kuota Fungsi Koneksi
Minta peningkatan kuota Fungsi Koneksi untuk Anda Akun AWS.
Untuk meminta peningkatan kuota Fungsi Koneksi
Masuk ke Konsol Manajemen AWS dan buka CloudFront konsol dihttps://console.aws.amazon.com/cloudfront/v4/home
. -
Di panel navigasi, pilih Fungsi.
-
Pilih tab Fungsi Koneksi
-
Untuk Permintaan, pilih tautan untuk menghubungi teknik CloudFront dukungan.
-
CloudFront dukungan teknik meninjau permintaan Anda. Proses peninjauan bisa memakan waktu hingga dua hari.
Setelah permintaan Anda disetujui, Anda dapat membuat Fungsi Koneksi di akun Anda dan mengaitkannya dengan satu atau beberapa distribusi saat menggunakan TLS bersama.
Buat Fungsi Koneksi
Anda dapat membuat Fungsi Koneksi menggunakan CloudFront konsol atau AWS CLI.
Untuk membuat Fungsi Koneksi (Konsol)
Masuk ke Konsol Manajemen AWS dan buka CloudFront konsol dihttps://console.aws.amazon.com/cloudfront/v4/home
. -
Di panel navigasi, pilih Fungsi.
-
Pilih tab Fungsi Koneksi dan pilih Buat Fungsi Koneksi.
-
Masukkan nama fungsi yang unik di dalam AWS akun Anda.
-
Pilih Lanjutkan.
-
Di editor fungsi, tulis JavaScript kode Anda untuk validasi sertifikat. Penangan fungsi harus memanggil allow atau deny.
-
Opsional: KeyValue toko dapat dikaitkan dengan Fungsi Koneksi untuk menerapkan kontrol pencabutan.
-
Pilih Simpan perubahan.
Untuk membuat Fungsi Koneksi (AWS CLI)
Contoh berikut menunjukkan cara membuat Fungsi Koneksi:
Tulis kode fungsi Anda dalam file terpisah, misalnya code.js:
function connectionHandler(connection) { connection.allow(); }
aws cloudfront create-connection-function \ --name "certificate-validator" \ --connection-function-config '{ "Comment": "Client certificate validation function", "Runtime": "cloudfront-js-2.0" }' \ --connection-function-code fileb://code.js
Struktur kode Fungsi Koneksi
Fungsi Koneksi mengimplementasikan fungsi ConnectionHandler yang menerima objek koneksi yang berisi sertifikat dan informasi koneksi. Fungsi Anda harus menggunakan salah satu connection.allow() atau connection.deny() untuk membuat keputusan tentang koneksi.
Contoh Fungsi Koneksi Dasar
Contoh berikut menunjukkan Fungsi Koneksi sederhana yang memverifikasi bidang subjek sertifikat klien:
function connectionHandler(connection) { // Only process if a certificate was presented if (!connection.clientCertificate) { console.log("No certificate presented"); connection.deny(); } // Check the subject field for specific organization const subject = connection.clientCertificate.certificates.leaf.subject; if (!subject.includes("O=ExampleCorp")) { console.log("Certificate not from authorized organization"); connection.deny(); } else { // All checks passed console.log("Certificate validation passed"); connection.allow(); } }
Spesifikasi lengkap properti sertifikat klien yang tersedia pada objek koneksi tersedia di sini:
{ "connectionId": "Fdb-Eb7L9gVn2cFakz7wWyBJIDAD4-oNO6g8r3vXDV132BtnIVtqDA==", // Unique identifier for this TLS connection "clientIp": "203.0.113.42", // IP address of the connecting client (IPv4 or IPv6) "clientCertificate": { "certificates": { "leaf": { "subject": "CN=client.example.com,O=Example Corp,C=US", // Distinguished Name (DN) of the certificate holder "issuer": "CN=Example Corp Intermediate CA,O=Example Corp,C=US", // Distinguished Name (DN) of the certificate authority that issued this certificate "serialNumber": "4a:3f:5c:92:d1:e8:7b:6c", // Unique serial number assigned by the issuing CA (hexadecimal) "validity": { "notBefore": "2024-01-15T00:00:00Z", // Certificate validity start date (ISO 8601 format) "notAfter": "2025-01-14T23:59:59Z" // Certificate expiration date (ISO 8601 format) }, "sha256Fingerprint": "a1b2c3d4e5f6...abc123def456", // SHA-256 hash of the certificate (64 hex characters) }, }, }, }
Kaitkan Fungsi Koneksi
Setelah membuat Fungsi Koneksi Anda, Anda harus mempublikasikannya ke tahap LIVE dan mengaitkannya dengan distribusi Anda.
Untuk memublikasikan dan mengaitkan Fungsi Koneksi (Konsol)
Masuk ke Konsol Manajemen AWS dan buka CloudFront konsol dihttps://console.aws.amazon.com/cloudfront/v4/home
. -
Di panel navigasi, pilih Fungsi
-
Pilih tab Fungsi Koneksi dan pilih Fungsi Koneksi Anda.
-
Pilih Publikasikan untuk memindahkannya ke panggung LIVE.
-
Pilih Tambahkan asosiasi dalam tabel distribusi terkait di bawah bagian penerbitan.
-
Pilih distribusi dengan mTL Penampil yang diaktifkan yang ingin Anda kaitkan.
Fungsi Koneksi yang dipublikasikan secara alternatif juga dapat dikaitkan dari halaman detail distribusi.
-
Arahkan ke halaman beranda konsol tempat semua distribusi Anda terdaftar.
-
Pilih distribusi yang ingin Anda kaitkan.
-
Pilih tab Umum.
-
Di bagian Pengaturan, pilih Edit.
-
Di bagian Konektivitas, temukan otentikasi bersama Viewer (mTLS).
-
Untuk Fungsi Koneksi, pilih fungsi Anda.
-
Pilih Simpan perubahan.
Untuk mengaitkan Fungsi Koneksi (AWS CLI)
Contoh berikut menunjukkan bagaimana mengaitkan Fungsi Koneksi dengan distribusi:
// DistributionConfig: { ...other settings, "ConnectionFunctionAssociation": { "Id": "cf_30c2CV2elHwCoInb3LtcaUJkZeD" } }
Kasus penggunaan untuk Fungsi Koneksi
Fungsi Koneksi memungkinkan beberapa kasus penggunaan mTL tingkat lanjut:
-
Validasi atribut sertifikat - Verifikasi bidang tertentu dalam sertifikat klien seperti persyaratan unit organisasi atau pola nama alternatif subjek.
-
Pemeriksaan pencabutan sertifikat - Menerapkan pemeriksaan pencabutan sertifikat khusus menggunakan KeyValueStore untuk menyimpan nomor seri sertifikat yang dicabut.
-
Kebijakan sertifikat berbasis IP - Menerapkan kebijakan sertifikat yang berbeda berdasarkan alamat IP klien atau batasan geografis.
-
Validasi multi-penyewa - Menerapkan aturan validasi khusus penyewa di mana persyaratan sertifikat yang berbeda berlaku berdasarkan nama host atau atribut sertifikat.
catatan
Fungsi Koneksi berjalan sekali per koneksi klien selama jabat tangan TLS.
Fungsi Koneksi hanya dapat mengizinkan atau menolak koneksi, tidak mengubah permintaan/tanggapan HTTP.
Hanya fungsi panggung LIVE (diterbitkan) yang dapat dikaitkan dengan distribusi.
Setiap distribusi dapat memiliki paling banyak satu Fungsi Koneksi.
Langkah selanjutnya
Setelah mengaitkan Fungsi Koneksi dengan CloudFront distribusi Anda, Anda dapat mengonfigurasi pengaturan opsional untuk menyesuaikan perilaku implementasi mTLS Anda. Untuk petunjuk terperinci tentang mengonfigurasi pengaturan tambahan seperti mode validasi sertifikat klien opsional, lihat. Mengkonfigurasi pengaturan tambahan