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 setiap 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 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, karena prosesnya lebih lambat dan menimbulkan risiko serangan person-in-the-middle.

Penetapan header ini pada dasarnya tidak dapat diurungkan. Setelah meng-cache header ini, klien browser modern tidak akan 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 berikutnya, dengan menyimpan perintah ini ke dalam cache hingga dua tahun:

Strict-Transport-Security: max-age=3104000

X-Frame-Options Tunjukkan 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. Tolak semua iframing situs Anda: X-Frame-Options: DENY

Hanya izinkan situs Anda meng-iframe (menyematkan) dirinya sendiri: X-Frame-Options: SAMEORIGIN

Content-Security-Policy Untuk mengevaluasi Kebijakan Keamanan Konten situs Anda, Anda dapat menggunakan alat CSP Evaluator dari Google. Jangan izinkan 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 tersemat (misalnya di iframe), atau aspek lain situs Anda. Sebelum melakukan perubahan pada traffic produksi, sebaiknya buat instance kedua untuk bucket backend atau layanan backend Anda, 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
  • Terdistribusi secara global ke semua lokasi edge Google

TLS memastikan keaslian dengan memvalidasi bahwa data tidak dimodifikasi selama dalam pengiriman. Sertifikat TLS menjamin kerahasiaan dengan memastikan penyadap tidak dapat menentukan informasi 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 mewajibkan SSL (TLS). Protokol ini secara langsung meningkatkan performa konten web, penayangan 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 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, baca bagian Melihat log.
  • Untuk mempelajari konten mana yang dapat atau tidak dapat di-cache, baca bagian Ringkasan caching.
  • Untuk melihat titik kehadiran Cloud CDN, baca bagian Lokasi cache.