Praktik terbaik keamanan web

Praktik terbaik untuk keamanan web

Cloud CDN dan Cloud Load Balancing dapat membantu Anda memenuhi praktik terbaik keamanan web, baik Anda menyajikan konten dari instance Compute Engine, bucket Cloud Storage, atau server asal eksternal yang berada di luar Google Cloud.

Menetapkan header keamanan

Spesifikasi HTTP memiliki sejumlah header yang mengontrol hal-hal berikut:

  • Perilaku klien
  • Cara konten disematkan
  • Cara konten disajikan di berbagai domain
  • Apakah akan selalu menggunakan TLS (HTTPS) atau tidak saat terhubung ke domain tersebut

Kontrol ini biasanya ditampilkan sebagai header respons HTTP, yang dapat Anda tetapkan untuk tiap backend (server asal, dalam istilah CDN) sebagai header respons kustom untuk deployment Cloud CDN dan Load Balancer Aplikasi eksternal Anda.

Jika Anda menggunakan Cloud Storage dan menyajikan 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 domain Anda memiliki sertifikat SSL (TLS) yang valid sebelum Anda menyetel 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, karena prosesnya lebih lambat dan menimbulkan risiko serangan person-in-the-middle.

Menyetel header ini pada dasarnya tidak dapat diurungkan. Setelah di-cache, header ini akan mencegah klien browser modern mencoba koneksi non-HTTPS, dan pengguna tidak dapat mengakses domain apa pun yang menerima header ini, meskipun SSL tidak berfungsi. Perilaku ini mencegah penyerang men-downgrade protokol aman ke HTTP yang tidak terlindungi (dikenal sebagai serangan downgrade).

Saat menyajikan header Strict-Transport-Security, berhati-hatilah saat menambahkan perintah includeSubdomains atau preload. Perintah ini mewajibkan subdomain menggunakan HTTPS, termasuk semua situs internal di domain yang sama. Misalnya, support.example.com saat disajikan dari example.com.

Mewajibkan klien terhubung langsung melalui HTTPS untuk semua koneksi di masa mendatang, dengan menyimpan perintah ini dalam cache hingga dua tahun:

Strict-Transport-Security: max-age=3104000

X-Frame-Options Menunjukkan apakah browser dapat merender halaman atau tidak 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 melakukan iframe (menyematkan) dirinya sendiri: X-Frame-Options: SAMEORIGIN

Content-Security-Policy Untuk mengevaluasi Kebijakan Keamanan Konten situs Anda, Anda dapat menggunakan alat CSP Evaluator Google. Jangan mengizinkan skrip inline, dan hanya muat skrip melalui HTTPS: Content-Security-Policy: default-src https:

Berhati-hatilah saat menerapkan header keamanan baru ke situs yang sudah ada, karena header tersebut dapat merusak skrip pihak ketiga, konten yang disematkan (misalnya, di iframe), atau aspek lain dari situs Anda. Sebelum melakukan perubahan pada traffic produksi, sebaiknya buat instance kedua dari 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.

Pengelolaan TLS dan sertifikat

Sertifikat terkelola memiliki karakteristik berikut:

  • Disediakan tanpa biaya
  • Dapat di-deploy dengan mudah ke load balancer Anda
  • Diperpanjang otomatis
  • Didistribusikan secara global ke semua lokasi edge Google

TLS memberikan keaslian dengan memvalidasi bahwa data tidak dimodifikasi saat berada dalam transit. Sertifikat TLS memberikan kerahasiaan dengan memastikan penyadap tidak dapat menentukan hal yang dipertukarkan antara pengguna dan server. Hal ini penting untuk privasi dan keamanan pengguna.

Dengan sertifikat SSL, Anda dapat memanfaatkan protokol transportasi modern, seperti HTTP/2 dan protokol QUIC Google, yang keduanya memerlukan SSL (TLS). Protokol ini secara langsung meningkatkan performa konten web, pengiriman media (seperti video streaming), 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 meningkatkan versi minimum TLS. Sebaiknya tingkatkan versi ke TLS v1.2, jika Anda tidak perlu mendukung klien lama, seperti perangkat sematan atau klien non-browser 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 Anda perlu mengidentifikasi atau mengaitkan klien tertentu dengan versi TLS yang sudah tidak berlaku, Anda dapat menggunakan variabel {tls_version} di header permintaan. Kemudian, Anda dapat mencatat informasi ini.

Langkah berikutnya

  • Untuk memeriksa apakah Cloud CDN menyajikan respons dari cache atau tidak, baca bagian Melihat log.
  • Untuk mempelajari konten yang dapat di-cache atau tidak dapat di-cache, baca bagian Ringkasan caching.
  • Untuk melihat titik kehadiran Cloud CDN, baca bagian Lokasi cache.