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 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 eksternal dan Cloud CDN.

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 berfungsi. Perilaku ini mencegah penyerang mendowngrade protokol aman ke HTTP yang tidak dilindungi (dikenal sebagai serangan downgrade).

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

Wajibkan klien untuk terhubung langsung melalui HTTPS untuk semua koneksi mendatang, dengan meng-cache perintah ini hingga dua tahun:

Strict-Transport-Security: max-age=3104000

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: X-Frame-Options: SAMEORIGIN

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 dari 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
  • Diperpanjang otomatis
  • Didistribusikan secara global ke semua lokasi edge Google

TLS memberikan keaslian dengan memvalidasi bahwa data belum 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