1. Pengantar
Kebijakan firewall jaringan
Firewall adalah elemen penyusun dasar untuk lingkungan cloud yang aman. Sebelumnya, kami memperkenalkan kebijakan firewall di tingkat organisasi dan folder, sekaligus membiarkan firewall VPC tidak berubah. Dalam versi ini, kita akan memperluas struktur kebijakan firewall hingga ke tingkat VPC, dan melakukan beberapa peningkatan pada dukungan kebijakan firewall saat ini untuk memberikan dukungan firewall yang terpadu di seluruh hierarki resource Google Cloud dan pengalaman pengguna yang konsisten dalam mengelola kontrol kebijakan firewall mereka secara aman, fleksibel, dan skalabel.
Kebijakan firewall jaringan berfungsi sebagai penampung untuk aturan firewall. Aturan yang ditentukan dalam kebijakan firewall jaringan tidak diterapkan di mana pun hingga kebijakan dikaitkan dengan jaringan VPC. Setiap jaringan VPC dapat memiliki satu kebijakan firewall jaringan yang terkait dengannya. Kebijakan firewall jaringan mendukung Tag yang diatur IAM (atau hanya Tag) dalam aturan firewall, yang menggantikan tag jaringan saat ini dan dapat digunakan untuk memberikan identitas ke workload.
Berbagi kebijakan firewall jaringan di seluruh jaringan dan integrasi dengan Tag yang diatur IAM sangat menyederhanakan konfigurasi dan pengelolaan firewall.
Dengan diperkenalkannya kebijakan firewall jaringan, kebijakan firewall Google Cloud kini terdiri dari komponen berikut:
- Kebijakan Firewall Hierarkis
- Aturan Firewall VPC
- Kebijakan Firewall Jaringan ( Global dan Regional)
Kebijakan firewall hierarkis didukung di node organisasi dan folder dalam hierarki resource, sedangkan aturan firewall VPC dan kebijakan firewall jaringan diterapkan di tingkat VPC. Perbedaan besar antara aturan firewall VPC dan kebijakan firewall jaringan adalah aturan firewall VPC hanya dapat diterapkan ke satu jaringan VPC, sedangkan kebijakan firewall jaringan dapat dilampirkan ke satu VPC atau grup VPC, di antara manfaat lainnya seperti update batch.
Terakhir, kita juga memiliki aturan firewall tersirat yang disertakan dengan setiap jaringan VPC:
- Aturan egress yang tindakannya adalah izinkan, tujuannya adalah 0.0.0.0/0
- Aturan masuk yang tindakannya adalah tolak, sumbernya adalah 0.0.0.0/0
Secara default, urutan penerapan ditampilkan dalam diagram berikut:

Perhatikan bahwa urutan penerapan antara aturan firewall VPC dan kebijakan firewall jaringan global dapat ditukar. Pelanggan dapat menentukan urutan penerapan kapan saja dengan perintah gcloud.
Tag
Tag yang terintegrasi dalam aturan kebijakan firewall jaringan yang baru adalah resource key-value pair yang ditentukan di tingkat organisasi hierarki resource Google Cloud. Tag tersebut berisi kontrol akses IAM, seperti yang tersirat dalam namanya, yang menentukan siapa yang dapat melakukan tindakan apa pada tag. Misalnya, izin IAM memungkinkan seseorang menentukan akun utama mana yang dapat menetapkan nilai ke tag dan akun utama mana yang dapat melampirkan tag ke resource. Setelah Tag diterapkan ke resource, aturan firewall jaringan dapat menggunakannya untuk mengizinkan dan menolak traffic.
Tag mematuhi model resource pewarisan Google Cloud, yang berarti tag dan nilainya diturunkan di seluruh hierarki dari induknya. Akibatnya, tag dapat dibuat di satu tempat, lalu digunakan oleh folder dan project lain di seluruh hierarki resource. Buka halaman ini untuk mengetahui detail selengkapnya tentang tag dan pembatasan akses.
Tag tidak boleh sama dengan tag jaringan, yang merupakan string yang dapat ditambahkan ke instance Compute Engine; tag ini dikaitkan dengan instance dan akan hilang saat instance dihentikan. Aturan firewall VPC dapat mencakup tag jaringan, tetapi karena tidak dianggap sebagai resource cloud, aturan tersebut tidak tunduk pada kontrol akses IAM.
Perhatikan bahwa Tag dan Tag yang diatur IAM digunakan secara bergantian dalam dokumen ini.
Yang akan Anda bangun
Codelab ini memiliki dua bagian - bagian pertama menunjukkan kebijakan firewall jaringan dan Tag menggunakan satu jaringan VPC, dan bagian kedua akan menunjukkan cara menggunakan Tag di seluruh jaringan VPC yang di-peering seperti pada diagram di bawah. Oleh karena itu, codelab ini memerlukan satu project dan kemampuan untuk membuat beberapa jaringan VPC.

Yang akan Anda pelajari
- Cara membuat kebijakan firewall jaringan
- Cara membuat dan menggunakan Tag dengan kebijakan firewall jaringan
- Cara menggunakan Tag melalui Peering Jaringan VPC
Yang Anda butuhkan
- Project Google Cloud
- Pengetahuan tentang men-deploy instance dan mengonfigurasi komponen jaringan
- Pengetahuan tentang konfigurasi firewall VPC
2. Sebelum memulai
Membuat/memperbarui variabel
Codelab ini menggunakan $variables untuk membantu penerapan konfigurasi gcloud di Cloud Shell.
Di dalam Cloud Shell, lakukan hal berikut:
gcloud config set project [project-id] export project_id=`gcloud config list --format="value(core.project)"` export org_id=[org] export region=us-central1 export zone=us-central1-a export prefix=fwpolicy
3. Buat jaringan dan subnet VPC
Jaringan VPC
Buat fwpolicy-vpc1:
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
Subnet
Buat subnet masing-masing di region yang dipilih:
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
Cloud NAT
Buat Cloud Router dan gateway Cloud NAT untuk fwpolicy-pc1:
gcloud compute routers create $prefix-vpc1-cr \ --region=$region --network=$prefix-vpc1 gcloud compute routers nats create $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
4. Membuat instance
Buat aturan firewall yang mengizinkan traffic SSH masuk dari rentang IAP jika belum ditentukan sebagai bagian dari penyiapan IAP:
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc1 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc1 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Buat instance klien fwpolicy-vpc1 dan web-server:
gcloud compute instances create $prefix-vpc1-www \
--subnet=$prefix-vpc1-subnet --no-address --zone $zone \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
# Read VM network configuration:
md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
filter="{print \$NF}"
vm_network="$(curl $md_vm/network-interfaces/0/network \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
vm_zone="$(curl $md_vm/zone \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
# Apache configuration:
echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
gcloud compute instances create $prefix-vpc1-client \
--subnet=$prefix-vpc1-subnet --no-address --zone $zone
Karena tidak ada aturan firewall VPC yang ditentukan (selain aturan izinkan SSH yang seharusnya dibuat saat mengonfigurasi IAP sesuai dengan awal bagian ini), dan secara default semua traffic masuk ditolak, instance klien tidak akan dapat mengakses server web masing-masing. Untuk memverifikasi bahwa permintaan akan mengalami waktu tunggu habis, buka jendela baru dan mulai sesi SSH ke instance fwpolicy-vpc1-client, lalu coba curl server web:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Output yang diharapkan:
curl: (28) Connection timed out after 2001 milliseconds
Secara opsional, verifikasi bahwa tidak ada aturan firewall VPC yang ditentukan untuk fwpolicy-vpc1 melalui Cloud Shell:
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
5. Kebijakan firewall jaringan global
Buat kebijakan firewall jaringan global:
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
Tambahkan aturan yang mengizinkan traffic web:
gcloud compute network-firewall-policies rules create 500 \
--action allow \
--description "allow-web" \
--layer4-configs tcp:80,tcp:443 \
--firewall-policy $prefix-example \
--src-ip-ranges 10.0.0.0/16 \
--global-firewall-policy --enable-logging
Jelaskan kebijakan firewall jaringan dan verifikasi bahwa aturan berhasil added:
gcloud compute network-firewall-policies describe \
$prefix-example --global
Output yang diharapkan (scroll ke atas ke awal output; perhatikan bahwa aturan implisit juga ditampilkan):
creationTimestamp: '2022-09-23T12:46:53.677-07:00'
description: "firewall-policy-description"
fingerprint: Np1Rup09Amc=
id: '7021772628738421698'
kind: compute#firewallPolicy
name: fwpolicy-example
ruleTupleCount: 13
rules:
- action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- 10.0.0.0/16
priority: 500
ruleTupleCount: 5
...
Kaitkan kebijakan firewall jaringan ke fwpolicy-vpc1:
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-example \
--network $prefix-vpc1 \
--name $prefix-vpc1-association \
--global-firewall-policy
Validasi bahwa kebijakan tersebut berhasil diterapkan ke jaringan fwpolicy-vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Output yang diharapkan (perhatikan bahwa jika ada kebijakan firewall hierarkis yang lebih diprioritaskan, aturan yang relevan akan ditampilkan di bagian atas):
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Validasi bahwa kebijakan tersebut juga berhasil diterapkan ke server web fwpolicy-vpc1:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Output yang diharapkan mirip dengan perintah sebelumnya (fwpolicy-vpc1 firewall efektif):
TYPE FIREWALL_POLICY_NAME PRIORITY ACTION DIRECTION IP_RANGES network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Beralih kembali ke sesi SSH vpc1-client dan coba curl lagi (perhatikan bahwa perintah di bawah mengasumsikan bahwa fwpolicy digunakan sebagai awalan; sesuaikan perintah curl dengan tepat jika nama lain digunakan):
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
Dari Cloud Shell, validasi bahwa kebijakan firewall jaringan diterapkan ke fwpolicy-vpc1:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Output yang diharapkan (scroll ke atas ke awal output):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
6. Tag yang diatur IAM
Tag adalah pasangan nilai kunci yang dapat dilampirkan ke organisasi, folder, atau project. Lihat Membuat dan mengelola tag serta izin yang diperlukan untuk mengetahui detail selengkapnya.
Peran tagAdmin memungkinkan Anda membuat tag baru, memperbarui, dan menghapus tag yang ada. Administrator organisasi dapat memberikan peran ini. Dari Cloud Shell, perbarui Kebijakan IAM untuk menambahkan peran tagAdmin ke pengguna Anda. Gunakan halaman referensi izin untuk melihat izin yang disertakan dalam setiap peran bawaan.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
Jalankan perintah di bawah untuk memverifikasi pengguna mana yang memiliki peran resourcemanager.tagAdmin:
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
Buat Kunci Tag baru:
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
Output yang diharapkan:
Waiting for TagKey [tags-vpc1] to be created...done. createTime: '2022-09-23T20:49:01.162228Z' etag: PwvmFuHO4wK1y6c5Ut2n5w== name: tagKeys/622132302133 namespacedName: ORGANIZATION_ID/tags-vpc1 parent: organizations/ORGANIZATION_ID purpose: GCE_FIREWALL purposeData: network: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/6749205358365096383 shortName: tags-vpc1 updateTime: '2022-09-23T20:49:03.873776Z'
Buat nilai tag baru:
gcloud resource-manager tags values create web-servers \ --parent=$org_id/tags-vpc1 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc1
Pastikan nilai tag berhasil dibuat:
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
Output yang diharapkan:
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
Dari Cloud Shell, jelaskan aturan kebijakan firewall jaringan yang ada untuk mengonfirmasi bahwa tag tidak digunakan:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Output yang diharapkan:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- 10.0.0.0/16
priority: 500
ruleTupleCount: 5
Dari Cloud Shell, perbarui aturan agar hanya mengizinkan traffic dari kunci tag vpc1-tags/web-clients, dan instal aturan pada instance dengan kunci tag vpc1-tags/web-servers.
gcloud compute network-firewall-policies rules update 500 \
--firewall-policy $prefix-example \
--src-secure-tags $org_id/tags-vpc1/web-clients \
--target-secure-tags $org_id/tags-vpc1/web-servers \
--global-firewall-policy
Dari Cloud Shell, jelaskan aturan kebijakan firewall jaringan yang ada untuk mengonfirmasi bahwa tag telah berhasil diterapkan dan dilaporkan sebagai EFEKTIF:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Output yang diharapkan:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- 10.0.0.0/16
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 500
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
Dari Cloud Shell, mari kita verifikasi bahwa aturan telah diterapkan ke vpc1:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Output yang diharapkan:
network-firewall-policy fwpolicy-example 500 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Pastikan bahwa meskipun kebijakan firewall jaringan masih dikaitkan dengan jaringan VPC, aturan yang mengizinkan traffic web tidak lagi diterapkan ke server web, karena Tag tidak ditambahkan ke instance:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Output yang diharapkan (perhatikan bahwa aturan firewall dengan prioritas 500 tidak ditampilkan):
network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Berikan peran Pengguna Tag kepada tag dan pengguna tertentu. Gunakan halaman referensi izin untuk melihat izin yang disertakan dalam setiap peran bawaan.
gcloud resource-manager tags keys add-iam-policy-binding \ $org_id/tags-vpc1 \ --member user:[email] --role roles/resourcemanager.tagUser gcloud projects add-iam-policy-binding $project_id \ --member user:[email] --role roles/resourcemanager.tagUser
Pastikan peran berhasil ditambahkan:
gcloud resource-manager tags keys get-iam-policy $org_id/tags-vpc1 gcloud projects get-iam-policy $project_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagUser
Output yang diharapkan:
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
Terapkan tag ke instance fwpolicy-vpc1-www:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-servers \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
Output yang diharapkan:
Waiting for TagBinding for parent [//compute.googleapis.com/projects/PROJECT_ID/zones/us-central1-a/instances/38369703403698502] and tag value [tagValues/34 9564376683] to be created with [operations/rctb.us-central1-a.6144808968019372877]...done. done: true metadata: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.CreateTagBindingMetadata name: operations/rctb.us-central1-a.6144808968019372877 response: '@type': type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding name: tagBindings/%2F%2Fcompute.googleapis.com%2Fprojects%2FPROJECT_NUMBER%2Fzones%2Fus-central1-a%2Finstances%2F38369703403698502/tagValues/349564376683 parent: //compute.googleapis.com/projects/PROJECT_NUMBER/zones/us-central1-a/instances/38369703403698502 tagValue: tagValues/349564376683
Verifikasi binding:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
Output yang diharapkan:
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
Verifikasi aturan firewall yang berlaku lagi:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Output yang diharapkan:
network-firewall-policy fwpolicy-example 490 ALLOW INGRESS 10.0.0.0/16 network-firewall-policy fwpolicy-example 2147483645 GOTO_NEXT INGRESS ::/0 network-firewall-policy fwpolicy-example 2147483647 GOTO_NEXT INGRESS 0.0.0.0/0 network-firewall-policy fwpolicy-example 2147483644 GOTO_NEXT EGRESS ::/0 network-firewall-policy fwpolicy-example 2147483646 GOTO_NEXT EGRESS 0.0.0.0/0
Pindah kembali ke tab sesi SSH fwpolicy-vpc1-client dan coba curl:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Apakah Anda dapat terhubung?
Untuk memverifikasinya, perbarui aturan untuk menghapus kriteria CIDR sumber melalui Cloud Shell.
gcloud compute network-firewall-policies rules update 500 \
--firewall-policy $prefix-example \
--src-ip-ranges "" \
--global-firewall-policy
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 490
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
Pindah kembali ke tab sesi SSH fwpolicy-vpc1-client dan coba lagi:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Koneksi akan mengalami waktu tunggu habis kali ini, karena tag tidak ditambahkan ke fwpolicy-vpc1-client. Dari Cloud Shell, tambahkan dan coba lagi.
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc1/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-client
Beralih kembali ke tab sesi SSH fwpolicy-vpc1-client dan coba lagi, yang sekarang akan berhasil.
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. Tag yang dikelola IAM melalui Peering Jaringan VPC
Dari Cloud Shell, buat VPC, subnet, dan klien baru, lalu siapkan Peering Jaringan VPC antara jaringan:
gcloud compute networks create $prefix-vpc2 --subnet-mode=custom
gcloud compute networks subnets create $prefix-vpc2-subnet \
--range=10.0.1.0/24 --network=$prefix-vpc2 --region=$region
gcloud compute instances create $prefix-vpc2-client \
--subnet=$prefix-vpc2-subnet --no-address --zone $zone
gcloud compute networks peerings create vpc1-to-vpc2 \
--network=$prefix-vpc1 \
--peer-project $project_id \
--peer-network $prefix-vpc2
gcloud compute networks peerings create vpc2-to-vpc1 \
--network=$prefix-vpc2 \
--peer-project $project_id \
--peer-network $prefix-vpc1
Buat aturan firewall yang mengizinkan traffic SSH masuk dari rentang IAP jika belum ditentukan sebagai bagian dari penyiapan IAP:
gcloud compute firewall-rules create allow-ssh-ingress-from-iap-vpc2 \ --direction=INGRESS \ --action=allow \ --network=$prefix-vpc2 \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Meskipun Tag adalah objek di seluruh organisasi, kunci tag dikaitkan dengan VPC tertentu dan oleh karena itu tidak dapat diterapkan ke instance di jaringan yang berbeda. Oleh karena itu, Anda perlu membuat kunci dan nilai tag baru yang berlaku untuk vpc2:
gcloud resource-manager tags keys create tags-vpc2 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc2 gcloud resource-manager tags values create web-clients \ --parent=$org_id/tags-vpc2
Terapkan tag baru ke instance fwpolicy-vpc2-client:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $org_id/tags-vpc2/web-clients \ --parent \ //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
Secara opsional, cantumkan binding fwpolicy-vpc2-client:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
Output yang diharapkan:
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
Dari Cloud Shell, deskripsikan aturan kebijakan firewall jaringan yang ada untuk mengonfirmasi bahwa tag baru tidak digunakan:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Output yang diharapkan:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 500
ruleTupleCount: 6
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
Perbarui aturan firewall yang ada untuk mengizinkan tag dari jaringan VPC yang di-peering:
gcloud compute network-firewall-policies rules update 500 \
--firewall-policy $prefix-example \
--src-secure-tags $org_id/tags-vpc1/web-clients,$org_id/tags-vpc2/web-clients \
--global-firewall-policy
Jelaskan aturan firewall untuk memastikan aturan tersebut berhasil diterapkan dan dilaporkan sebagai EFEKTIF:
gcloud compute network-firewall-policies rules describe 500 \
--firewall-policy $prefix-example \
--global-firewall-policy
Output yang diharapkan:
---
action: allow
description: allow-web
direction: INGRESS
disabled: false
enableLogging: false
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
- name: tagValues/633150043992
state: EFFECTIVE
priority: 500
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
Cari tahu IP fwpolicy-vpc1-www melalui perintah gcloud di bawah:
gcloud compute instances list --filter=vpc1-www
Hubungkan ke fwpolicy-vpc2-client melalui SSH dan coba curl IP fwpolicy-vpc1:
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
Anda akan dapat terhubung ke server fwpolicy-vpc1-www. Lanjutkan ke bagian berikutnya untuk mengetahui langkah-langkah pembersihan.
8. Langkah-langkah pembersihan
Dari Cloud Shell, hapus instance, Cloud NAT, dan Cloud Router:
gcloud -q compute instances delete $prefix-vpc2-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-client --zone=$zone gcloud -q compute instances delete $prefix-vpc1-www --zone=$zone gcloud -q compute routers nats delete $prefix-vpc1-cloudnat \ --router=$prefix-vpc1-cr --router-region=$region gcloud -q compute routers delete $prefix-vpc1-cr --region=$region
Hapus kebijakan firewall jaringan global dan Tag:
gcloud -q resource-manager tags values delete \
$org_id/tags-vpc2/web-clients
gcloud -q resource-manager tags keys delete $org_id/tags-vpc2
gcloud -q resource-manager tags values delete \
$org_id/tags-vpc1/web-servers
gcloud -q resource-manager tags values delete \
$org_id/tags-vpc1/web-clients
gcloud -q resource-manager tags keys delete $org_id/tags-vpc1
gcloud -q compute network-firewall-policies associations delete \
--firewall-policy $prefix-example \
--name $prefix-vpc1-association \
--global-firewall-policy
gcloud -q compute network-firewall-policies delete \
$prefix-example --global
gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc1
gcloud -q compute firewall-rules delete allow-ssh-ingress-from-iap-vpc2
Lakukan langkah-langkah di bawah jika peran tagAdmin dan tagUsers diubah:
gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:[email] --role roles/resourcemanager.tagUser
Terakhir, hapus Peering Jaringan VPC, subnet, dan jaringan VPC:
gcloud -q compute networks peerings delete vpc1-to-vpc2 \
--network $prefix-vpc1
gcloud -q compute networks peerings delete vpc2-to-vpc1 \
--network $prefix-vpc2
gcloud -q compute networks subnets delete $prefix-vpc1-subnet \
--region $region
gcloud -q compute networks subnets delete $prefix-vpc2-subnet \
--region $region
gcloud -q compute networks delete $prefix-vpc1
gcloud -q compute networks delete $prefix-vpc2
9. Selamat!
Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi kebijakan firewall jaringan global dengan konfigurasi Tag.