Membatasi akses ke Application Load Balancers - Amazon CloudFront

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

Membatasi akses ke Application Load Balancers

Untuk aplikasi web atau konten lain yang disajikan oleh Application Load Balancer yang menghadap ke internet di Elastic Load Balancing CloudFront , dapat menyimpan objek dan menyajikannya langsung ke pengguna (pemirsa), mengurangi beban pada Application Load Balancer Anda. Penyeimbang beban yang menghadap ke internet memiliki nama DNS yang dapat diselesaikan secara publik dan mengarahkan permintaan dari klien ke target melalui internet.

CloudFrontjuga dapat membantu mengurangi latensi dan bahkan menyerap beberapa serangan penolakan layanan terdistribusi (DDoS).

Namun, jika pengguna dapat mem-bypass CloudFront dan mengakses Application Load Balancer Anda secara langsung, Anda tidak mendapatkan manfaat ini. Tetapi Anda dapat mengonfigurasi Amazon CloudFront dan Application Load Balancer Anda untuk mencegah pengguna mengakses Application Load Balancer secara langsung. Hal ini memungkinkan pengguna untuk mengakses Application Load Balancer hanya melalui CloudFront, memastikan bahwa Anda mendapatkan manfaat menggunakan. CloudFront

Untuk mencegah pengguna mengakses Application Load Balancer secara langsung dan mengizinkan akses hanya CloudFront melalui, selesaikan langkah-langkah tingkat tinggi ini:

  1. Konfigurasikan CloudFront untuk menambahkan header HTTP kustom ke permintaan yang dikirim ke Application Load Balancer.

  2. Mengonfigurasi Application Load Balancer untuk hanya meneruskan permintaan yang berisi header HTTP kustom.

  3. (Opsional) Mengharuskan HTTPS untuk meningkatkan keamanan solusi ini.

Untuk informasi selengkapnya, lihat topik berikut. Setelah Anda menyelesaikan langkah-langkah ini, pengguna hanya dapat mengakses Application Load Balancer Anda melalui. CloudFront

Konfigurasikan CloudFront untuk menambahkan header HTTP kustom ke permintaan

Anda dapat mengonfigurasi CloudFront untuk menambahkan header HTTP kustom ke permintaan yang dikirim ke asal Anda (dalam hal ini, Application Load Balancer).

penting

Kasus penggunaan ini bergantung pada menjaga nama header kustom dan rahasia nilai. Jika nama header dan nilai tidak rahasia, klien HTTP lain berpotensi memasukkannya dalam permintaan yang mereka kirim langsung ke Application Load Balancer. Hal ini dapat menyebabkan Application Load Balancer berperilaku seolah-olah permintaan berasal dari CloudFront saat tidak. Untuk mencegah hal ini, rahasiakan nama header kustom dan nilai.

Anda dapat mengonfigurasi CloudFront untuk menambahkan header HTTP kustom ke permintaan asal dengan CloudFront konsol AWS CloudFormation, atau CloudFront API.

Untuk menambahkan header HTTP kustom (CloudFront konsol)

Di CloudFront konsol, gunakan pengaturan Header Kustom Asal di Pengaturan Asal. Masukkan Nama Header dan Nilai, seperti yang ditunjukkan dalam contoh berikut.

catatan

Nama header dan nilai dalam contoh ini hanya untuk demonstrasi. Dalam produksi, gunakan nilai yang dihasilkan secara acak. Perlakukan nama header dan nilai sebagai kredensial aman, seperti nama pengguna dan kata sandi.

Bidang Origin Custom Header di CloudFront konsol.

Anda dapat mengedit setelan Header Kustom Asal saat membuat atau mengedit asal untuk CloudFront distribusi yang ada, dan saat Anda membuat distribusi baru. Untuk informasi lebih lanjut, lihat Perbarui distribusi dan Buat distribusi.

Untuk menambah header HTTP kustom (AWS CloudFormation)

Dalam AWS CloudFormation template, gunakan OriginCustomHeaders properti, seperti yang ditunjukkan pada contoh berikut.

catatan

Nama header dan nilai dalam contoh ini hanya untuk demonstrasi. Dalam produksi, gunakan nilai yang dihasilkan secara acak. Perlakukan nama header dan nilai sebagai kredensial aman, seperti nama pengguna dan kata sandi.

AWSTemplateFormatVersion: '2010-09-09' Resources: TestDistribution: Type: 'AWS::CloudFront::Distribution' Properties: DistributionConfig: Origins: - DomainName: app-load-balancer.example.com Id: Example-ALB CustomOriginConfig: OriginProtocolPolicy: https-only OriginSSLProtocols: - TLSv1.2 OriginCustomHeaders: - HeaderName: X-Custom-Header HeaderValue: random-value-1234567890 Enabled: 'true' DefaultCacheBehavior: TargetOriginId: Example-ALB ViewerProtocolPolicy: allow-all CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6 PriceClass: PriceClass_All ViewerCertificate: CloudFrontDefaultCertificate: 'true'

Untuk informasi selengkapnya, lihat Asal dan OriginCustomHeaderproperti di Panduan AWS CloudFormation Pengguna.

Untuk menambahkan header HTTP kustom (CloudFront API)

Di CloudFront API, gunakan CustomHeaders objek di dalamnyaOrigin. Untuk informasi selengkapnya, lihat CreateDistributiondan UpdateDistributiondi Referensi Amazon CloudFront API, dan dokumentasi untuk SDK Anda atau klien API lainnya.

Ada beberapa nama header yang Anda tidak dapat tentukan sebagai header kustom asal. Untuk informasi selengkapnya, lihat Header khusus yang tidak CloudFront dapat ditambahkan ke permintaan asal.

Konfigurasikan Application Load Balancer untuk hanya meneruskan permintaan yang berisi header tertentu

Setelah Anda mengonfigurasi CloudFront untuk menambahkan header HTTP kustom ke permintaan yang dikirimkan ke Application Load Balancer Anda (lihat bagian sebelumnya), Anda dapat mengonfigurasi penyeimbang beban untuk hanya meneruskan permintaan yang berisi header kustom ini. Anda melakukan ini dengan menambah aturan baru dan memodifikasi aturan default dalam listener penyeimbang beban Anda.

Prasyarat

Untuk menggunakan prosedur berikut, Anda memerlukan Application Load Balancer dengan setidaknya satu listener. Jika Anda belum membuatnya, lihat Membuat Application Load Balancer di Panduan Pengguna untuk Application Load Balancers.

Prosedur berikut ini memodifikasi listener HTTPS. Anda dapat menggunakan proses yang sama untuk memodifikasi listener HTTP.

Untuk memperbarui aturan dalam listener Application Load Balancer
  1. Tambahkan aturan baru. Gunakan instruksi dari Tambahkan aturan, dengan modifikasi berikut:

    • Tambahkan aturan ke penyeimbang beban yang merupakan asal CloudFront distribusi Anda.

    • Untuk kondisi Tambah, pilih header Http. Tentukan nama header HTTP dan nilai yang Anda tambahkan sebagai header kustom asal CloudFront.

    • Untuk menambahkan tindakan, pilih Teruskan ke. Pilih grup target tempat Anda ingin meneruskan permintaan.

  2. Edit aturan default di pendengar penyeimbang beban Anda. Gunakan instruksi dari Edit aturan, dengan modifikasi berikut:

    • Edit aturan default penyeimbang beban yang merupakan asal CloudFront distribusi Anda.

    • Hapus tindakan default, lalu untuk Add action, pilih Return fixed response.

    • Untuk Kode respons, masukkan 403.

    • Untuk Isi respons, masukkan Access denied.

Setelah Anda menyelesaikan langkah-langkah ini, pendengar penyeimbang beban Anda memiliki dua aturan. Satu aturan meneruskan permintaan yang berisi header HTTP (permintaan yang berasal dari CloudFront). Aturan lain mengirimkan respons tetap ke semua permintaan lainnya (permintaan yang tidak berasal CloudFront).

Anda dapat memverifikasi bahwa solusi berfungsi dengan mengirimkan permintaan ke CloudFront distribusi Anda dan satu ke Application Load Balancer Anda. Permintaan untuk CloudFront mengembalikan aplikasi web atau konten Anda, dan yang dikirim langsung ke Application Load Balancer Anda mengembalikan 403 respons dengan pesan teks biasa. Access denied

(Opsional) tingkatkan keamanan solusi ini.

Untuk meningkatkan keamanan solusi ini, Anda dapat mengonfigurasi CloudFront distribusi Anda agar selalu menggunakan HTTPS saat mengirim permintaan ke Application Load Balancer Anda. Ingat, solusi ini hanya berfungsi jika Anda menyimpan nama header kustom dan rahasia nilai. Menggunakan HTTPS dapat membantu mencegah penyadap menemukan nama dan nilai header. Kami juga merekomendasikan merotasi nama header dan nilai secara berkala.

Menggunakan HTTPS untuk permintaan asal

CloudFront Untuk mengonfigurasi penggunaan HTTPS untuk permintaan asal, setel pengaturan Kebijakan Protokol Asal ke HTTPS Saja. Pengaturan ini tersedia di CloudFront konsol, AWS CloudFormation, dan CloudFront API. Untuk informasi selengkapnya, lihat Protokol (hanya asal kustom).

Berikut ini juga berlaku saat Anda mengonfigurasi CloudFront untuk menggunakan HTTPS untuk permintaan asal:

  • Anda harus mengonfigurasi CloudFront untuk meneruskan Host header ke asal dengan kebijakan permintaan asal. Anda dapat menggunakan kebijakan permintaan asal AllViewer terkelola.

  • Pastikan Application Load Balancer Anda memiliki listener HTTPS (seperti yang ditunjukkan pada bagian sebelumnya). Untuk informasi lebih lanjut, lihat Buat listener HTTPS di Panduan pengguna untuk Application Load Balancers. Menggunakan pendengar HTTPS mengharuskan Anda memiliki sertifikat SSL/TLS yang cocok dengan nama domain yang dirutekan ke Application Load Balancer Anda.

  • Sertifikat SSL/TLS untuk hanya CloudFront dapat diminta (atau diimpor) di in (ACM). us-east-1 Wilayah AWS AWS Certificate Manager Karena CloudFront merupakan layanan global, secara otomatis mendistribusikan sertifikat dari us-east-1 Wilayah ke semua Wilayah yang terkait dengan CloudFront distribusi Anda.

    • Misalnya, jika Anda memiliki Application Load Balancer (ALB) di ap-southeast-2 Wilayah, Anda harus mengonfigurasi sertifikat SSL/TLS di Wilayah (untuk menggunakan HTTPS antara dan asal ALB) CloudFront dan ap-southeast-2 Wilayah (untuk menggunakan HTTPS antara pemirsa us-east-1 dan). CloudFront Kedua sertifikat harus sesuai dengan nama domain yang dirutekan ke Application Load Balancer Anda. Untuk informasi selengkapnya, lihat Wilayah AWS untuk AWS Certificate Manager.

  • Jika pengguna akhir (juga dikenal sebagai pemirsa, atau klien) aplikasi web Anda dapat menggunakan HTTPS, Anda juga dapat mengonfigurasi CloudFront untuk memilih (atau bahkan memerlukan) koneksi HTTPS dari pengguna akhir. Untuk melakukannya, gunakan pengaturan Kebijakan Protokol Penampil. Anda dapat mengaturnya untuk mengarahkan pengguna akhir dari HTTP ke HTTPS, atau untuk menolak permintaan yang menggunakan HTTP. Pengaturan ini tersedia di CloudFront konsol, AWS CloudFormation, dan CloudFront API. Untuk informasi selengkapnya, lihat Kebijakan protokol penampil.

Memutar nama header dan nilai

Selain menggunakan HTTPS, kami juga merekomendasikan merotasi nama header dan nilai secara berkala. Langkah-langkah tingkat tinggi untuk melakukan ini adalah sebagai berikut:

  1. Konfigurasikan CloudFront untuk menambahkan header HTTP kustom tambahan ke permintaan yang dikirim ke Application Load Balancer.

  2. Perbarui aturan listener Application Load Balancer untuk meneruskan permintaan yang berisi header HTTP kustom tambahan ini.

  3. Konfigurasikan CloudFront untuk berhenti menambahkan header HTTP kustom asli ke permintaan yang dikirim ke Application Load Balancer.

  4. Perbarui aturan listener Application Load Balancer untuk menghentikan penerusan permintaan yang berisi header HTTP kustom tambahan ini.

Untuk informasi lebih lanjut tentang pencapaian langkah-langkah ini, lihat bagian sebelumnya.

(Opsional) Batasi akses ke asal dengan menggunakan daftar awalan AWS-managed untuk CloudFront

Untuk lebih membatasi akses ke Application Load Balancer, Anda dapat mengonfigurasi grup keamanan yang terkait dengan Application Load Balancer sehingga hanya menerima CloudFront lalu lintas dari saat layanan AWS menggunakan daftar awalan -managed. Ini mencegah lalu lintas yang tidak berasal CloudFront dari mencapai Application Load Balancer Anda di lapisan jaringan (layer 3) atau lapisan transport (layer 4).

Untuk informasi selengkapnya, lihat Batasi akses ke asal Anda menggunakan daftar awalan AWS-managed untuk CloudFront posting blog Amazon.