1. Pengantar
Load balancing Google Cloud di-deploy di edge jaringan Google pada titik kehadiran (POP) Google di seluruh dunia. Traffic pengguna yang diarahkan ke load balancer Proxy TCP masuk ke POP terdekat dari pengguna dan selanjutnya mengalami load balancing melalui jaringan global Google ke backend terdekat yang memiliki kapasitas memadai.
Cloud Armor adalah sistem deteksi firewall aplikasi web (WAF) dan denial of service terdistribusi dari Google. Cloud Armor dikaitkan secara erat dengan Load Balancer Proxy TCP Google Cloud dan memungkinkan Anda menginterogasi traffic masuk untuk permintaan yang tidak diinginkan. Dengan fitur pembatasan kapasitas di layanan ini, Anda dapat membatasi traffic ke resource backend berdasarkan volume permintaan dan mencegah traffic yang tidak diinginkan menggunakan resource di jaringan Virtual Private Cloud (VPC) Anda.
Load balancer proxy TCP/SSL Google Cloud memungkinkan Anda melakukan proxy traffic jenis TCP/ SSL di antara layanan backend.
Dalam codelab ini, Anda akan membuat load balancer proxy TCP/SSL dengan layanan backend dan menggunakan Cloud Armor untuk membatasi akses ke load balancer hanya kepada sekumpulan klien pengguna tertentu.
Yang akan Anda pelajari
- Cara membuat load balancer proxy TCP/SSL
- Cara membuat kebijakan keamanan Cloud Armor
- Cara membuat aturan daftar tolak IP untuk load balancer proxy TCP/SSL di Cloud Armor
- Cara membuat aturan pembatasan kapasitas untuk load balancer proxy TCP di Cloud Armor
- Cara menambahkan kebijakan keamanan ke layanan backend load balancing TCP/SSL
Yang Anda butuhkan
- Pengetahuan dasar tentang Google Compute Engine ( codelab)
- Pengetahuan dasar mengenai networking dan TCP/IP
- Pengetahuan dasar mengenai command line Unix/Linux
- Sangat membantu jika Anda telah menyelesaikan tur jaringan di GCP dengan Jaringan di Google Cloud
2. Persyaratan
Penyiapan lingkungan mandiri
- Login ke Cloud Console lalu buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
Catatan: Anda dapat mengakses Cloud Console dengan mudah dengan mengingat URL-nya, yaitu console.cloud.google.com.
Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project_ID selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.
Catatan: Jika menggunakan akun Gmail, Anda dapat menetapkan lokasi default ke Tidak ada organisasi. Jika Anda menggunakan akun Google Workspace, pilih lokasi yang sesuai untuk organisasi Anda.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.
Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai$300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.
Sebelum memulai
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
Mengaktifkan API
Aktifkan semua layanan yang diperlukan
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. Membuat layanan backend
Buat 2 instance sebagai berikut - Buat instance1-b1 di zona us-central1-b
gcloud compute instances create vm-1-b1 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>This is VM1-b1 in central1-b</h1></body></html>' | tee /var/www/html/index.html EOF"
Membuat instance 1-b2 di zona us-central1-b
gcloud compute instances create vm-1-b2 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>This is VM1-b2 in central1-b</h1></body></html>' | tee /var/www/html/index.html EOF"
Membuat grup instance vm-ig1
gcloud compute instance-groups unmanaged create vm-ig1 --zone us-central1-b
Buat port bernama untuk grup instance. Untuk lab ini, kita akan menggunakan port 110
gcloud compute instance-groups set-named-ports vm-ig1 \ --named-ports tcp 110:110 --zone us-central1-b
Menambahkan instance ke grup instance
gcloud compute instance-groups unmanaged add-instances vm-ig1 \ --instances vm-1-b1,vm-1-b2 --zone us-central1-b
4. Mengonfigurasi load balancer
Selanjutnya, kita akan membuat health check.
gcloud compute health-checks create tcp my-tcp-health-check --port 110
Buat layanan backend
gcloud compute backend-services create my-tcp-lb --global-health-checks --global \ --protocol TCP --health-checks my-tcp-health-check --timeout 5m --port-name tcp110
Menambahkan grup instance ke layanan backend
gcloud compute backend-services add-backend my-tcp-lb --global --instance-group \ vm-ig1 --instance-group-zone us-central1-b --balancing-mode UTILIZATION \ --max-utilization 0.8
Mengonfigurasi proxy TCP target
gcloud compute target-tcp-proxies create my-tcp-lb-target-proxy --backend-service \ my-tcp-lb --proxy-header NONE
Mencadangkan alamat IPv4 statis global
Anda akan menggunakan alamat IP ini untuk menjangkau layanan load balanced.
gcloud compute addresses create tcp-lb-static-ipv4 --ip-version=IPV4 --global
Konfigurasi aturan penerusan global untuk alamat IP LB.
gcloud compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \ --global --target-tcp-proxy my-tcp-lb-target-proxy --address LB_STATIC_IPV4 \ --ports 110
5. Membuat aturan firewall untuk load balancer proxy TCP
gcloud compute firewall-rules create allow-tcplb-and-health \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-tags tcp-lb \ --allow tcp:110
Setelah load balancer dibuat, ujilah dengan perintah berikut
Curl LB_IP:110
Selanjutnya buat VM untuk Validasi akses penolakan ke LB
Anda harus membuat 2 instance, masing-masing dengan alamat IP publik dan bernama test-server1 dan test-server2
6. Membuat Kebijakan Keamanan di Cloud Armor
Di bagian ini, Anda akan membuat kebijakan keamanan backend dan 2 aturan dalam kebijakan di Cloud Armor.
Aturan pertama akan menolak kumpulan IP terbatas agar tidak mengakses Load Balancer TCP dengan menetapkan kebijakan keamanan untuk menolak IP tertentu dan aturan kedua akan melakukan pembatasan kapasitas.
- Di Cloud Shell(lihat "Memulai Cloud Shell" di bagian "Penyiapan dan Persyaratan" untuk mengetahui petunjuk cara menggunakan Cloud Shell), buat kebijakan keamanan layanan backend yang disebut rate-limit-and-deny-tcp sebagai berikut
gcloud compute security-policies create rate-limit-and-deny-tcp \ --description "policy for tcp proxy rate limiting and IP deny"
Menambahkan Aturan ke Kebijakan Keamanan
Selanjutnya, tambahkan aturan daftar tolak ke kebijakan Cloud Armor "rate-limit-and-deny-tcp".
gcloud compute security-policies rules create 1000 --action deny --security-policy \ rate-limit-and-deny-tcp --description "deny test-server1" --src-ip-ranges \ "enter-test-server-1ip-here"
Menambahkan aturan pembatasan kapasitas ke kebijakan keamanan Cloud Armor "rate-limit-and-deny-tcp"
gcloud compute security-policies rules create 3000 \ --security-policy=rate-limit-and-deny-tcp \ --expression="true" --action=rate-based-ban --rate-limit-threshold-count=5 \ --rate-limit-threshold-interval-sec=60 --ban-duration-sec=300 \ --conform-action=allow --exceed-action=deny-404 --enforce-on-key=IP
Lampirkan kebijakan ke layanan backend Proxy TCP:
Jalankan perintah berikut untuk memastikan bahwa kebijakan keamanan terpasang ke layanan backend Proxy TCP.
gcloud compute backend-services update my-tcp-lb --security-policy \ rate-limit-and-deny-tcp
Mengaktifkan logging di Load Balancer Proxy TCP
gcloud beta compute backend-services update my-tcp-lb \ --enable-logging --logging-sample-rate=1
7. Validasi aturan daftar tolak
Validasi aturan daftar tolak dengan login ke server pengujian yang IP-nya ditentukan dalam aturan daftar tolak dan jalankan perintah berikut
Curl LB_IP:110
Permintaan langsung dapat memberikan respons dari LB, tetapi tunggu hingga permintaan curl ditolak atau dihapus, lalu lihat log di Cloud Logging untuk memverifikasi entri log terkait aturan penolakan IP yang dipicu.
Buka Cloud Logging, lalu di bagian resource, pilih jenis resource sebagai "tcp_ssl_proxy_rule" dan tetapkan target backend sebagai "my-tcp-lb".
Dengan resource yang ditentukan untuk pemfilteran, kita dapat memvalidasi bahwa aturan penolakan IP berlaku dari nilai PRIORITY 1000 dalam entri log dan tindakan yang dikonfigurasi "DENY" berlaku karena keduanya diinstruksikan dari aturan penolakan dan IP ditolak seperti yang ditunjukkan di bawah
8. Memvalidasi aturan pembatasan kapasitas
Validasikan bahwa aturan batas kapasitas diterapkan dengan mengirim banyak permintaan dalam jangka waktu singkat yang melebihi batas yang ditentukan (5 permintaan per menit).
Setelah selesai, klik lihat log di layanan Cloud Armor. Tindakan ini akan mengarahkan Anda ke logging cloud tempat Anda dapat memfilter log berdasarkan load balancer untuk melihat log Cloud Armor saat masuk.
Entri pembatasan kapasitas akan terlihat seperti screenshot di bawah. Kita dapat memvalidasi aturan batas kapasitas dari nilai PRIORITY sebesar 3000 dalam entri log dan dari tindakan yang dikonfigurasi, tindakan "RATE BASED BAN" berlaku sesuai petunjuk dari aturan pembatasan kapasitas.
9. Pembersihan Lingkungan
Pastikan untuk membersihkan infrastruktur yang dibuat untuk menghindari biaya operasional infrastruktur yang tidak digunakan.
Cara tercepat adalah menghapus seluruh Project di GCP untuk memastikan tidak ada resource nonaktif yang terlewatkan.Namun, hapus resource satu per satu dengan perintah berikut
Load balancer Proxy TCP
gcloud compute target-tcp-proxies delete my-tcp-lb
Grup instance
gcloud compute instance-groups unmanaged delete vm-ig1
Kedua instance VM pengujian yang dibuat
gcloud compute instances delete Instance_name --zone=instance_zone
Layanan backend
gcloud compute backend-services delete BACKEND_SERVICE_NAME
Aturan Cloud Armor dalam kebijakan
gcloud compute security-policies rules delete 1000 \ --security-policy=rate-limit-and-deny-tcp && gcloud compute security-policies rules delete 3000 \ --security-policy=rate-limit-and-deny-tcp
Kebijakan keamanan Cloud Armor
gcloud compute security-policies delete rate-limit-and-deny-tcp