View a markdown version of this page

Mengaitkan Fungsi CloudFront Koneksi - Amazon CloudFront

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengaitkan Fungsi CloudFront Koneksi

CloudFront Fungsi Koneksi memungkinkan Anda menerapkan logika validasi sertifikat kustom selama jabat tangan TLS, memberikan ekstensi ke kemampuan otentikasi MTL 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 terperinci tentang Fungsi Koneksi, lihatSesuaikan di tepi dengan CloudFront Fungsi.

Bagaimana Fungsi Koneksi bekerja dengan MTL

Saat klien mencoba membuat koneksi mTLS ke CloudFront distribusi Anda, urutan berikut terjadi:

  1. Klien memulai jabat tangan TLS dengan CloudFront lokasi tepi.

  2. CloudFront meminta dan menerima sertifikat klien.

  3. CloudFront melakukan validasi sertifikat standar terhadap trust store.

  4. Jika sertifikat melewati validasi standar, akan memang CloudFront gil Fungsi Koneksi Anda. Jika IgnoreCertificateExpiry diaktifkan di dalam sertifikat Anda ViewerMtlsConfig, maka sertifikat Anda yang kedaluwarsa—tetapi sebaliknya valid—juga diteruskan ke Fungsi Koneksi. Jika sertifikat klien tidak valid, Fungsi Koneksi tidak akan dipanggil.

  5. Fungsi Koneksi Anda menerima informasi sertifikat yang diurai dan detail koneksi.

  6. Fungsi Anda membuat allow/deny keputusan berdasarkan logika khusus.

  7. CloudFront menyelesaikan atau mengakhiri koneksi TLS berdasarkan keputusan Anda.

Fungsi koneksi dipanggil untuk mode verifikasi dan mode opsional (ketika klien menyajikan sertifikat).

Buat Fungsi Koneksi

Anda dapat membuat Fungsi Koneksi menggunakan CloudFront konsol atau AWS CLI.

Untuk membuat Fungsi Koneksi (Konsol)

  1. Masuk ke Konsol Manajemen AWS dan buka CloudFront konsol dihttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Di panel navigasi, pilih Fungsi.

  3. Pilih tab Connec tion Functions dan pilih Create Connection Function.

  4. Masukkan nama fungsi yang unik dalam AWS akun Anda.

  5. Pilih Lanjutkan.

  6. Di editor fungsi, tulis JavaScript kode Anda untuk validasi sertifikat. Handler fungsi harus memanggil allow atau deny.

  7. Opsional: KeyValue toko dapat dikaitkan dengan Fungsi Koneksi untuk menerapkan kontrol pencabutan.

  8. 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 connection.allow() satu 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": { "serialNumber": "4a:3f:5c:92:d1:e8:7b:6c", // Unique serial number assigned by the issuing CA (hexadecimal) "issuer": "CN=Example Corp Intermediate CA,O=Example Corp,C=US", // Distinguished Name (DN) of the certificate authority that issued this certificate. "subject": "CN=client.example.com,O=Example Corp,C=US", // Distinguished Name (DN) of the certificate holder. "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) "ocspEndpoint": "http://ocsp.example.com", // OCSP responder URL from the certificate's AIA extension. "san": "DNS:client.example.com,DNS:api.example.com", // Subject Alternative Names. "spki": "30820122300d06092a864886f70d01010105000382010f003082010a0282010100...", // Subject Public Key Info (DER-encoded, hex). "sanHex": "3032820f636c69656e742e6578616d706c652e636f6d820f6170692e6578616d706c652e636f6d..." // Subject Alternative Names (DER-encoded, hex). }, "intermediates": [ { "serialNumber": "00:d4:04:a5:fd:cb:20:37:54", // Serial number of the intermediate certificate. "issuer": "CN=Example Corp Root CA,O=Example Corp,C=US", // Issuer of the intermediate certificate. "subject": "CN=Example Corp Intermediate CA,O=Example Corp,C=US", // Subject of the intermediate certificate. "validity": { "notBefore": "2020-01-01T00:00:00Z", "notAfter": "2030-01-01T23:59:59Z" }, "sha256Fingerprint": "b2c3d4e5f6a1...def456abc123", "ocspEndpoint": "http://ocsp.example.com/intermediate", "san": "DNS:ca.example.com", "spki": "30820122300d06092a864886f70d01010105000382010f003082010a0282010100b389dd513b...", "sanHex": "3015820d63612e6578616d706c652e636f6d..." } ] } } }

Mengaitkan Fungsi Koneksi

Setelah membuat Fungsi Koneksi, Anda harus mempublikasikannya ke tahap LIVE dan mengaitkannya dengan distribusi Anda.

Untuk menerbitkan dan mengaitkan Fungsi Koneksi (Konsol)

  1. Masuk ke Konsol Manajemen AWS dan buka CloudFront konsol dihttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Di panel navigasi, pilih Fungsi

  3. Pilih tab Fungsi Kon eksi dan pilih Fungsi Koneksi Anda.

  4. Pilih Publikasikan untuk memindahkannya ke panggung LIVE.

  5. Pilih Tambahkan asosiasi di tabel distribusi terkait di bawah bagian penerbitan.

  6. Pilih distribusi dengan Viewer MTL diaktifkan yang ingin Anda kaitkan.

Atau Fungsi Koneksi yang diterbitkan juga dapat dikaitkan dari halaman detail distribusi.

  1. Arahkan ke halaman beranda konsol tempat semua distribusi Anda terdaftar.

  2. Pilih distribusi yang ingin Anda kaitkan.

  3. Pilih tab Umum.

  4. Di bagian Pengaturan, pilih Edit.

  5. Di bagian Konek tivitas, temukan Viewer Mutual Authentication (MTL).

  6. Untuk Fungsi Kon eksi, pilih fungsi Anda.

  7. Pilih Simpan perubahan.

Untuk mengaitkan Fungsi Koneksi (AWS CLI)

Contoh berikut menunjukkan cara 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 yang digunakan KeyValueStore untuk menyimpan nomor seri sertifikat yang dicabut.

  • IP-based kebijakan sertifikat - Menerapkan kebijakan sertifikat yang berbeda berdasarkan alamat IP klien atau batasan geografis.

  • Multi-tenant validasi - 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 memodifikasi HTTP requests/responses.

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 MTL Anda. Untuk petunjuk terperinci tentang mengonfigurasi pengaturan tambahan seperti mode validasi sertifikat klien opsional, lihatMengkonfigurasi pengaturan tambahan.