Andi Ashari

Tech Voyager & Digital Visionary

Pengamanan Distribusi CloudFront Kamu dengan Otentikasi Dasar

Pengamanan Distribusi CloudFront Kamu dengan Otentikasi Dasar

Ketika menyebarkan situs web statis pada AWS CloudFront, persyaratan umumnya adalah membatasi akses dengan mekanisme otentikasi sederhana. Otentikasi Dasar menawarkan pendekatan langsung untuk melindungi konten kamu dengan mewajibkan pengguna memberikan nama pengguna dan kata kunci sebelum mereka bisa mengakses situs web kamu. Artikel ini menjelaskan cara menerapkan Otentikasi Dasar pada CloudFront menggunakan fungsi tanpa peladen.

Memahami Otentikasi Dasar

Otentikasi Dasar adalah skema otentikasi sederhana yang dibangun di dalam protokol HTTP. Skema ini mengirim nama pengguna dan kata kunci yang dibutuhkan untuk mengakses suatu sumber melalui header HTTP, dikodekan dengan Base64. Meskipun bukan metode yang paling aman untuk otentikasi pengguna (karena kredensial dikirim dalam bentuk teks biasa, kendati dikodekan dengan Base64), metode ini cukup aman untuk skenario di mana kesederhanaan dan kemudahan implementasi adalah yang terpenting.

Menerapkan Otentikasi Dasar di CloudFront

AWS CloudFront tidak mendukung Otentikasi Dasar secara asli. Akan tetapi, kamu bisa menggunakan AWS Lambda@Edge atau Fungsi Cloudfront untuk mencapai fungsionalitas ini, yang memungkinkan kamu untuk menjalankan logika khusus melintasi fase berbeda dari siklus permintaan-tanggapan di CloudFront.

Memilih Fase yang Tepat untuk Otentikasi

Kamu bisa menyisipkan logika khusus pada berbagai titik di siklus permintaan-tanggapan pada CloudFront, termasuk:

  • Permintaan Penonton: Ketika CloudFront menerima permintaan dari klien.
  • Permintaan Asal: Sebelum CloudFront meneruskan permintaan ke asal.
  • Tanggapan Asal: Ketika CloudFront menerima tanggapan dari asal.
  • Tanggapan Penonton: Sebelum CloudFront mengirim tanggapan kembali ke klien.

Untuk Otentikasi Dasar, fase ideal adalah Permintaan Penonton. Fase ini memungkinkan kamu untuk mencegat permintaan lebih awal dan mengotentikasi pengguna sebelum pemrosesan selanjutnya terjadi.

Menerapkan Fungsi

Untuk menerapkan Otentikasi Dasar, buat fungsi (Lambda@Edge atau Fungsi CloudFront) yang memeriksa header Authorization dalam permintaan masuk. Fungsi tersebut harus membandingkan kredensial yang dikodekan dari permintaan dengan kredensial yang dikodekan yang sudah kamu tetapkan sebagai valid. Berikut adalah versi sederhana dari fungsi tersebut:

function handler(event) {
    // Extract the authorization header from the incoming request
    const { authorization } = event.request.headers;

    // Your preferred encoded credentials (username:password in Base64)
    const validCredentials = "Basic YWRtaW46bXkhMjM0UGFzc3dvcmRA";

    // Check if the provided credentials match the valid credentials
    if (authorization && authorization.value === validCredentials) {
        // If credentials match, proceed with the request
        return event.request;
    } else {
        // If not, return a 401 Unauthorized response
        return {
            statusCode: 401,
            statusDescription: "Unauthorized",
            headers: { "www-authenticate": { value: 'Basic realm="Restricted Area"' } },
        };
    }
}

Fungsi ini membandingkan Authorization header dari permintaan masuk dengan validCredentials. Jika cocok, permintaan berlanjut ke asal. Jika tidak cocok, fungsi ini mengembalikan status 401 Tidak Sah, yang meminta pengguna memasukkan kredensial mereka.

Menyebarkan Fungsi Kamu

Setelah menguji fungsi kamu, sebarkan ke fase Permintaan Penonton dari distribusi CloudFront kamu. Pengaturan ini memastikan bahwa setiap permintaan yang masuk diautentikasi sebelum diproses.


Dengan menggunakan AWS Lambda@Edge atau Fungsi CloudFront untuk Otentikasi Dasar, kamu dapat mengamankan konten statis kamu di CloudFront dengan sedikit usaha. Meskipun metode ini menyediakan keamanan tingkat dasar, pertimbangkan untuk menggunakan metode otentikasi yang lebih aman untuk konten sensitif atau berkeamanan tinggi.

Bagi yang tertarik dalam mengotomatiskan penyebaran konfigurasi tersebut, silakan cek modul Terraform saya untuk situs web statis AWS. Modul ini menyederhanakan pengaturan situs statis kamu di AWS, termasuk integrasi Otentikasi Dasar dengan CloudFront.

Pengamanan situs web kamu tidak harus rumit, dan dengan AWS CloudFront dan fungsi tanpa peladen, kamu mempunyai perangkat yang andal sekaligus sederhana yang kamu inginkan.

Selamat mengamankan, Andi Ashari