Praktik terbaik untuk keamanan web
Cloud CDN dan Cloud Load Balancing dapat membantu Anda memenuhi praktik terbaik keamanan web, baik Anda menayangkan konten dari instance Compute Engine, bucket Cloud Storage, maupun origin eksternal yang berada di luar Google Cloud.
Menetapkan header keamanan
Spesifikasi HTTP memiliki sejumlah header yang mengontrol hal berikut:
- Perilaku klien
- Cara konten disematkan
- Cara konten ditayangkan di seluruh domain
- Apakah akan selalu menggunakan TLS (HTTPS) saat terhubung ke domain tersebut
Kontrol ini biasanya direpresentasikan sebagai header respons HTTP, yang dapat Anda tetapkan untuk setiap backend (origin, dalam istilah CDN) sebagai header respons kustom untuk deployment Application Load Balancer dan Cloud CDN eksternal.
Jika menggunakan Cloud Storage dan menayangkan konten web dari bucket, Anda dapat menggunakan Cloud CDN di depan bucket penyimpanan untuk menetapkan header keamanan web dan menyimpan konten populer ke dalam cache.
Header keamanan web yang paling berguna ditentukan dalam tabel berikut.
Nama header | Deskripsi | Contoh penggunaan |
---|---|---|
Strict-Transport-Security (HSTS) |
Memastikan bahwa domain Anda memiliki sertifikat SSL (TLS)
yang valid sebelum Anda menetapkan header ini. Memberi tahu klien bahwa mereka harus terhubung ke domain Anda secara langsung melalui HTTPS (SSL/TLS), sehingga tidak perlu mengalihkan dari HTTP ke HTTPS, yang lebih lambat dan menimbulkan risiko serangan man-in-the-middle. Menyetel header ini secara efektif tidak dapat diurungkan. Setelah meng-cache header ini, klien browser modern tidak akan mencoba koneksi non-HTTPS, dan pengguna tidak dapat mengakses domain mana pun yang menerima header ini, meskipun SSL tidak aktif. Perilaku ini mencegah penyerang mendowngrade protokol aman ke HTTP yang tidak dilindungi (dikenal sebagai serangan downgrade).
Saat menayangkan header |
Wajibkan klien untuk terhubung langsung melalui HTTPS untuk semua koneksi
mendatang, dengan meng-cache perintah ini hingga dua tahun:
|
X-Frame-Options |
Menunjukkan apakah browser dapat merender halaman dalam <frame>, <iframe>, <embed>, atau <object>. Hal ini membantu mencegah serangan click-jacking, dengan tidak mengizinkan konten Anda disematkan ke situs lain. |
Menolak semua iframing situs Anda: X-Frame-Options: DENY
Hanya izinkan situs Anda untuk membuat iframe (menyematan) sendiri: |
Content-Security-Policy
|
Untuk mengevaluasi Kebijakan Keamanan Konten situs, Anda dapat menggunakan alat CSP Evaluator Google. | Jangan izinkan skrip inline, dan hanya muat skrip melalui HTTPS:
Content-Security-Policy: default-src https:
|
Berhati-hatilah saat memperkenalkan header keamanan baru ke situs yang sudah ada, karena header tersebut dapat merusak skrip pihak ketiga, konten tersemat (misalnya, dalam iframe), atau aspek lain situs Anda. Sebelum membuat perubahan pada traffic produksi, sebaiknya buat instance kedua bucket backend atau layanan backend dan lakukan pengujian.
Anda dapat membaca lebih lanjut header keamanan web dan praktik terbaik di web.dev serta di situs infosec Mozilla.
TLS dan pengelolaan sertifikat
Sertifikat terkelola memiliki karakteristik berikut:
- Disediakan tanpa biaya
- Dapat di-deploy dengan mudah ke load balancer Anda
- Perpanjangan otomatis
- Didistribusikan secara global ke semua lokasi edge Google
TLS memberikan keaslian dengan memvalidasi bahwa data tidak diubah dalam transmisi. Sertifikat TLS memberikan kerahasiaan dengan memastikan bahwa penyelundup tidak dapat menentukan apa yang dipertukarkan antara pengguna dan server. Hal ini penting untuk privasi dan keamanan pengguna.
Dengan sertifikat SSL, Anda dapat memanfaatkan protokol transpor modern, seperti HTTP/2 dan protokol QUIC Google, yang keduanya memerlukan SSL (TLS). Protokol ini secara langsung meningkatkan performa konten web, penayangan media (seperti streaming video), dan keandalan di jaringan yang padat.
Google Cloud mendukung protokol TLS modern (seperti TLS 1.3) di seluruh layanan Cloud Load Balancing dan Cloud CDN.
Anda dapat menggunakan kebijakan SSL untuk menaikkan
versi minimum TLS. Sebaiknya tingkatkan versi ke TLS v1.2, jika Anda
tidak perlu mendukung klien lama, seperti perangkat tersemat
atau klien non-browser yang lebih lama (lebih dari 10 tahun). Secara global, TLS v1.0 dan TLS v1.1 mewakili kurang dari 0,5% koneksi di seluruh Google Cloud.
Jika perlu mengidentifikasi atau mengaitkan klien tertentu dengan versi TLS yang sudah tidak berlaku, Anda dapat menggunakan variabel {tls_version}
dalam header permintaan. Kemudian, Anda dapat
mencatat informasi ini ke dalam log.
Langkah selanjutnya
- Untuk memeriksa apakah Cloud CDN menayangkan respons dari cache, lihat Melihat log.
- Untuk mempelajari konten yang dapat di-cache atau tidak dapat di-cache, lihat Ringkasan penyimpanan dalam cache.
- Untuk melihat titik kehadiran Cloud CDN, lihat Lokasi cache.