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 yang diberi nama dalam kebijakan keamanan. Anda tidak perlu menentukan secara manual setiap alamat IP atau rentang IP satu per satu.

Yang akan Anda pelajari

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

Yang Anda butuhkan

  • Pengalaman dengan Kebijakan Keamanan dan Load Balancer

2. Mengizinkan traffic hanya dari penyedia pihak ketiga yang diizinkan

Kasus penggunaan yang 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 harus mengambil konten dari server asal secara berkala untuk mendistribusikannya ke cache mereka sendiri. Kemitraan dengan Google akan menghubungkan langsung penyedia CDN dan edge jaringan Google. Pengguna CDN di Google Cloud dapat menggunakan koneksi langsung ini selama pull origin. Dalam hal ini, pengguna CDN mungkin ingin membuat kebijakan keamanan yang hanya mengizinkan traffic yang berasal dari penyedia CDN tertentu.

Dalam contoh ini, penyedia CDN menerbitkan daftar alamat IP-nya 23.235.32.0/20, 43.249.72.0/22, ⋯,. Seorang 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 mereka diizinkan. Lalu lintas dari titik akses 198.51.100.1 yang tidak sah diblokir.

27243e72ee25ee16.pngS

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 terkenal dan perlu digunakan oleh banyak pengguna CDN. Daftar ini berubah dari waktu ke waktu, saat penyedia menambahkan, menghapus, dan memperbarui alamat IP.

Menggunakan daftar alamat IP bernama dalam aturan kebijakan keamanan menyederhanakan proses konfigurasi dan pengelolaan alamat IP karena Google Cloud Armor otomatis menyinkronkan informasi dari penyedia CDN setiap hari. Hal ini menghilangkan proses yang memakan waktu dan rawan kesalahan dalam mengelola daftar alamat IP yang 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-nya dipublikasikan melalui URL publik individual.

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

7e9c09a008e04656.pngS

Atau, gunakan Cloud Shell untuk mendapatkan daftar 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"

Ini akan menampilkan:

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

4. Topologi Codelab

68a800f9adbf4570.pngS

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 GCP Console, 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

Membuat 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

Membuat 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

Pastikan instance VM dibuat di kedua region dan akses situs HTTP-nya.

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

Mengonfigurasi Load Balancer HTTP

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

start_config.png

  1. Pilih From Internet to my VMs, lalu klik Continue.
  2. Tetapkan Name 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 pada Backend configuration.
  2. Untuk layanan Backend & bucket backend, klik Buat atau pilih layanan backend & bucket backend, lalu klik Backend services, lalu klik Create a backend service.
  3. Jenis backend adalah Grup Instance
  4. Tetapkan nilai berikut dan biarkan semua nilai lainnya dalam setelan default: 18bf7a852f0759ee.pngS
  5. Klik Selesai.
  6. Untuk Health Check, pilih Buat health check. health_check.png
    1. Tetapkan nilai berikut dan biarkan semua nilai lainnya dalam setelan default: d2f85af1e988532b.png
  7. Klik Simpan dan Lanjutkan.
  8. Klik Create 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 melakukan backend lain. Namun, Anda tidak mengonfigurasi aturan Host dan jalur di lab ini.

  1. Klik pada Frontend configuration.
  2. http-front-end
  3. Tentukan nilai berikut, biarkan semua nilai lainnya menggunakan 51ae16211e72142f.pngS default-nya
  4. Klik Selesai.

8. Meninjau dan membuat Load Balancer HTTP

  1. Klik Tinjau dan selesaikan.

8efe5b462a80071d.pngS

  1. Meninjau layanan Backend dan Frontend.

30b06910bf7fae29.pngS

  1. Klik Create.
  2. Tunggu beberapa menit sampai load balancer dibuat
  3. Klik nama load balancer (http-lb).
  4. Perhatikan alamat IPv4 load balancer untuk tugas berikutnya, yang disebut http-lb.

9. Memvalidasi keberhasilan akses tidak sah

Sebelum menerapkan kebijakan Alamat IP Bernama, validasi akses tidak sah yang berhasil ke load balancer lab dan aplikasi web berikutnya. Catatan, setelah kebijakan alamat IP bernama diterapkan, akses ke aplikasi web dibatasi pada kumpulan ekspresi yang disediakan.

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

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

f93410e9568f1f32.png

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

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

Buat Kebijakan Cloud Amour 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=\*

Mengidentifikasi alamat Daftar IP Bernama CDN yang tersedia.

Dari Cloud Shell

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

Ini akan menampilkan:

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

Dari Cloud Shell, konfigurasi daftar alamat IP bernama berdasarkan kumpulan ekspresi CDN yang tersedia

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

Contoh penggunaan 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 penerapan kebijakan global

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 '403' Error terlarang karena workstation Anda sekarang 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
  • Membuat Load balancer Global
  • Membuat grup Instance Terkelola dengan contoh aplikasi pengujian
  • Membuat kebijakan keamanan Cloud Armor
  • Men-deploy daftar alamat IP bernama Cloud Armor
  • Validasi Kebijakan Cloud Armor IP Bernama