Daftar IP Bernama Cloud Armor

1. Pengantar

Daftar alamat IP bernama Google Cloud Armor memungkinkan Anda mereferensikan daftar alamat IP dan rentang IP yang dikelola oleh penyedia pihak ketiga. Anda dapat mengonfigurasi daftar alamat IP bernama dalam kebijakan keamanan. Anda tidak perlu menentukan setiap alamat IP atau rentang IP secara manual satu per satu.

Yang akan Anda pelajari

  • Manfaat daftar alamat IP bernama Cloud Armor
  • Buat kebijakan keamanan Cloud Armor
  • Men-deploy daftar alamat IP bernama Cloud Armor
  • Buat Load Balancer Global
  • Buat grup Instance Terkelola dengan aplikasi pengujian contoh

Yang Anda butuhkan

  • Pengalaman dengan Kebijakan Keamanan dan Load Balancer

2. Mengizinkan traffic hanya dari penyedia pihak ketiga yang diizinkan

Kasus penggunaan umum adalah membuat daftar yang diizinkan yang berisi alamat IP partner pihak ketiga yang diizinkan untuk memastikan bahwa hanya traffic yang berasal dari partner ini yang dapat mengakses load balancer dan backend.

Misalnya, penyedia CDN perlu menarik konten dari server asal secara berkala untuk mendistribusikannya ke cache mereka sendiri. Kemitraan dengan Google memberikan koneksi langsung antara penyedia CDN dan edge jaringan Google. Pengguna CDN di Google Cloud dapat menggunakan koneksi langsung ini selama penarikan origin. Dalam hal ini, pengguna CDN mungkin ingin membuat kebijakan keamanan yang hanya mengizinkan traffic yang berasal dari penyedia CDN tertentu tersebut.

Dalam contoh ini, penyedia CDN memublikasikan daftar alamat IP-nya 23.235.32.0/20, 43.249.72.0/22, ⋯,. Pengguna CDN mengonfigurasi aturan keamanan yang hanya mengizinkan traffic yang berasal dari alamat IP ini. Akibatnya, dua titik akses penyedia CDN diizinkan (23.235.32.10 dan 43.249.72.10) dan traffic-nya diizinkan. Traffic dari titik akses yang tidak sah 198.51.100.1 diblokir.

27243e72ee25ee16.png

Alamat IP bernama Google Cloud Armor

3. Menyederhanakan konfigurasi dan pengelolaan dengan menggunakan aturan yang telah dikonfigurasi sebelumnya

Penyedia CDN sering menggunakan alamat IP yang sudah dikenal dan perlu digunakan oleh banyak pengguna CDN. Daftar ini berubah seiring waktu, karena penyedia menambahkan, menghapus, dan memperbarui alamat IP.

Penggunaan daftar alamat IP bernama dalam aturan kebijakan keamanan menyederhanakan proses konfigurasi dan pengelolaan alamat IP karena Google Cloud Armor secara otomatis menyinkronkan informasi dari penyedia CDN setiap hari. Hal ini menghilangkan proses yang memakan waktu dan rawan kesalahan dalam mengelola daftar alamat IP besar secara manual.

Penyedia daftar alamat IP

Penyedia daftar alamat IP dalam tabel berikut didukung untuk Google Cloud Armor. Berikut adalah penyedia CDN yang telah berpartner dengan Google. Daftar alamat IP mereka dipublikasikan melalui URL publik masing-masing.

Partner ini menyediakan daftar alamat IPv4 dan alamat IPv6 yang terpisah. Google Cloud Armor menggunakan URL yang diberikan untuk mengambil daftar, lalu mengonversi daftar tersebut menjadi daftar alamat IP bernama. Anda merujuk ke daftar berdasarkan nama dalam tabel.

7e9c09a008e04656.png

Atau, gunakan Cloud Shell untuk mendapatkan daftar alamat IP bernama yang telah dikonfigurasi sebelumnya

Login ke cloudshell dan tetapkan projectid Anda

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

Dari Cloud Shell

gcloud compute security-policies list-preconfigured-expression-sets \
    --filter="id:sourceiplist"

Perintah ini menunjukkan:

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

4. Topologi codelab

68a800f9adbf4570.png

5. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. 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.)

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.

  1. 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 Konsol GCP, klik ikon Cloud Shell di toolbar kanan atas:

bce75f34b2c53987.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

f6ef2b5f13479f3a.png

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.

6. Buat jaringan VPC

Jaringan VPC

Dari Cloud Shell

gcloud compute networks create 

named-list-vpc

 --subnet-mode custom

Buat Subnet

Dari Cloud Shell

gcloud compute networks subnets create named-ip-subnet \
        --network 

named-list-vpc

 --range 10.0.0.0/24 --region us-east1

Buat Aturan Firewall

Dari Cloud Shell

gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 

Membuat load balancer

Buat template instance

Dari Cloud Shell

gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any

Buat Grup Instance Terkelola

Dari Cloud Shell

gcloud compute --project=$projectid  instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b

7. Memverifikasi backend

Verifikasi bahwa instance VM sedang dibuat di kedua region, lalu akses situs HTTP keduanya.

  1. Masih di Compute Engine, klik VM instances di menu kiri
  2. Perhatikan instance yang diawali dengan us-east1-mig. Instance ini adalah bagian dari grup instance terkelola.
  3. Klik IP Eksternal instance us-east1-mig. Anda akan melihat Client IP (alamat IP Anda), Hostname (diawali dengan us-east1-mig)

Mengonfigurasi Load Balancer HTTP

  1. Di Konsol Cloud, klik Navigation menu ( mainmenu.png) > klik Network Services > Load balancing, lalu klik Create load balancer.
  2. Di bagian HTTP(S) Load Balancing, klik Start configuration.

start_config.png

  1. Pilih From Internet to my VMs, lalu klik Continue.
  2. Tetapkan Nama ke http-lb.

Mengonfigurasi backend

Layanan backend mengarahkan traffic masuk ke satu atau beberapa backend yang terpasang. Setiap backend terdiri dari grup instance dan metadata kapasitas penyaluran tambahan.

  1. Klik Konfigurasi backend.
  2. Untuk Backend services & backend buckets, klik Create or select backend services & backend buckets, lalu klik Backend services, dan klik Create a backend service.
  3. Jenis backend adalah Grup Instance
  4. Tetapkan nilai berikut dan biarkan nilai default untuk properti yang lain: 18bf7a852f0759ee.png
  5. Klik Selesai.
  6. Untuk Health Check, pilih Buat health check. health_check.png
    1. Tetapkan nilai berikut dan biarkan nilai default untuk properti yang lain: d2f85af1e988532b.png
  7. Klik Simpan dan Lanjutkan.
  8. Klik Buat untuk membuat layanan backend.

b00c217bf592f0.png

Mengonfigurasi frontend

Aturan host dan jalur menentukan bagaimana traffic akan diarahkan. Misalnya, Anda dapat mengarahkan traffic video ke satu backend dan traffic statis ke backend lain. Namun, Anda tidak mengonfigurasi aturan Host dan jalur di lab ini.

  1. Klik Konfigurasi frontend.
  2. http-front-end
  3. Tentukan nilai berikut dan biarkan nilai default untuk properti yang lain: 51ae16211e72142f.png
  4. Klik Selesai.

8. Meninjau dan membuat Load Balancer HTTP

  1. Klik Tinjau dan selesaikan.

8efe5b462a80071d.png

  1. Tinjau Backend services dan Frontend.

30b06910bf7fae29.png

  1. Klik Buat.
  2. Tunggu beberapa menit hingga load balancer dibuat
  3. Klik nama load balancer (http-lb).
  4. Catat alamat IPv4 load balancer untuk tugas berikutnya, yang disebut sebagai http-lb.

9. Memvalidasi keberhasilan akses tidak sah

Sebelum menerapkan kebijakan Alamat IP Bernama, validasi keberhasilan akses tidak sah ke load balancer lab dan aplikasi web berikutnya. Perhatikan bahwa setelah kebijakan alamat IP bernama diterapkan, akses ke aplikasi web dibatasi untuk set ekspresi yang disediakan.

  1. Identifikasi alamat IP load balancer yang dibuat di langkah sebelumnya (http-lb) dan tempelkan ke browser web Anda. Output akan serupa dengan screenshot di bawah.

CATATAN: Langkah ini akan memerlukan waktu beberapa menit. Setelah halaman web dibuat, IP klien berasal dari Google Front End, bukan IP workstation Anda.

f93410e9568f1f32.png

Dari workstation Anda, lakukan validasi serupa seperti yang ditunjukkan di bawah

bash-3.2$ curl <load-balancer-IP>

10. Contoh output

bash-3.2$ curl <load-balancer-ip>
<h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b

11. Mengonfigurasi Daftar IP Bernama

Membuat Kebijakan Cloud Armor baru untuk Daftar IP Bernama

Dari Cloud Shell

gcloud compute --project=$projectid security-policies create ca-policy

Dari Cloud Shell

gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*

Identifikasi alamat Daftar IP Bernama CDN yang tersedia.

Dari Cloud Shell

gcloud compute security-policies list-preconfigured-expression-sets \
    --filter="id:sourceiplist"

Perintah ini menunjukkan:

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

Dari Cloud Shell, konfigurasi daftar alamat IP bernama berdasarkan set ekspresi yang tersedia di CDN Anda

gcloud beta compute security-policies rules create 600 \
    --security-policy ca-policy \
    --expression "evaluatePreconfiguredExpr('expression_set')" \
    --action "allow"

Contoh menggunakan cloudflare

gcloud beta compute security-policies rules create 600 \
    --security-policy ca-policy \
    --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
    --action "allow"

12. Menerapkan kebijakan keamanan CA

Terapkan kebijakan keamanan CA dan tunggu beberapa menit hingga kebijakan global diterapkan

gcloud compute backend-services update http-backend --security-policy ca-policy --global

13. Validasi Alamat IP Bernama

  1. Karena kebijakan keamanan diterapkan, akses ke load balancer dari workstation Anda tidak sah.
  2. Untuk memvalidasi, buka jendela terminal dari workstation Anda dan lakukan curl ke alamat IP load balancer. Output dari curl akan menghasilkan error '403' Forbidden karena workstation Anda kini tidak sah.

Dari workstation Anda

bash-3.2$ curl <load-balancer-IP>
<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden

Langkah-Langkah Pembersihan

gcloud -q compute backend-services update http-backend --security-policy "" --global

gcloud -q compute --project=$projectid security-policies delete ca-policy

gcloud -q compute forwarding-rules delete http-front-end --global

gcloud -q compute target-http-proxies delete http-lb-target-proxy

gcloud -q compute url-maps delete http-lb

gcloud -q compute backend-services delete http-backend --global

gcloud -q compute health-checks delete http-health-check

gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b

gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template

gcloud -q compute --project=$projectid firewall-rules delete default-allow-http

gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check

gcloud -q compute networks subnets delete named-ip-subnet --region us-east1

gcloud -q compute networks delete named-list-vpc

14. Selamat!

Selamat, Anda telah menyelesaikan codelab.

Yang telah kita bahas

  • Manfaat daftar alamat IP bernama Cloud Armor
  • Buat Load Balancer Global
  • Buat grup Instance Terkelola dengan aplikasi pengujian contoh
  • Buat kebijakan keamanan Cloud Armor
  • Men-deploy daftar alamat IP bernama Cloud Armor
  • Memvalidasi Kebijakan Cloud Armor IP Bernama