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, tanpa mengubah firewall VPC. Pada versi ini, kami akan memperluas struktur kebijakan firewall hingga tingkat VPC, dan melakukan beberapa peningkatan untuk dukungan kebijakan firewall saat ini, guna memberikan dukungan firewall terpadu di seluruh hierarki resource Google Cloud dan pengalaman pengguna yang konsisten dalam mengelola kontrol kebijakan firewall mereka dengan cara yang 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 tersebut 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) pada 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 folder dan organisasi 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 bahwa aturan firewall VPC hanya dapat diterapkan ke satu jaringan VPC, sedangkan kebijakan firewall jaringan dapat dikaitkan ke satu VPC atau grup VPC, di antara manfaat lainnya seperti update batch.
Terakhir, kita juga memiliki aturan firewall implisit yang disertakan dengan setiap jaringan VPC:
- Aturan keluar yang tindakannya diizinkan, tujuannya adalah 0.0.0.0/0
- Aturan masuk yang tindakannya ditolak, sumbernya adalah 0.0.0.0/0
Secara default, urutan penerapan ditampilkan dalam diagram berikut:
Perlu diperhatikan bahwa urutan penerapan antara aturan firewall VPC dan kebijakan firewall jaringan global dapat ditukar. Pelanggan dapat menentukan perintah penerapan kapan saja dengan perintah gcloud.
Tag
Tag baru yang terintegrasi dalam aturan kebijakan firewall jaringan adalah resource pasangan nilai kunci yang ditentukan di level organisasi dalam hierarki resource Google Cloud. Tag tersebut berisi kontrol akses IAM, seperti namanya, yang menentukan siapa yang dapat melakukan apa pada tag. Izin IAM, misalnya, 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 mungkin dibuat di satu tempat, lalu digunakan oleh folder dan project lain di seluruh hierarki resource. Buka halaman ini untuk mengetahui detail lebih lanjut tentang tag dan pembatasan akses.
Tag tidak sama dengan tag jaringan. Tag jaringan adalah string yang dapat ditambahkan ke instance Compute Engine; terhubung dengan instance dan menghilang saat instance dinonaktifkan. 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 menunjukkan cara menggunakan Tag di berbagai jaringan VPC yang di-peering sesuai diagram di bawah. Dengan demikian, 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 pada Peering Jaringan VPC
Yang Anda butuhkan
- Project Google Cloud
- Pengetahuan dalam men-deploy instance dan mengonfigurasi komponen jaringan
- Pengetahuan 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. Membuat subnet dan jaringan VPC
Jaringan VPC
Buat fwpolicy-vpc1:
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
Subnet
Buat subnet yang sesuai 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 ditetapkan 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 server web:
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 ditetapkan (selain aturan izinkan SSH yang harus 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 memastikan bahwa waktu tunggu permintaan akan 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, pastikan tidak ada aturan firewall VPC yang ditetapkan 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 pastikan aturan berhasil added
:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Output yang diharapkan (scroll ke awal output; perlu diperhatikan 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
Pastikan 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 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
Pastikan bahwa konfigurasi 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 (firewall efektif fwpolicy-vpc1):
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 lakukan curl lagi (perhatikan bahwa perintah di bawah mengasumsikan bahwa fwpolicy
digunakan sebagai awalan; sesuaikan perintah curl
jika yang digunakan adalah nama yang berbeda):
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
Dari Cloud Shell, validasikan bahwa kebijakan firewall jaringan diterapkan ke fwpolicy-vpc1:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Output yang diharapkan (scroll ke atas hingga 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 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 yang telah ditetapkan.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
Jalankan perintah di bawah untuk memverifikasi pengguna 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
Validasikan bahwa 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 memastikan 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, lalu 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 memastikan bahwa tag berhasil diterapkan dan dilaporkan sebagai EKTIF:
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 ke tag dan pengguna tertentu. Gunakan halaman referensi izin untuk melihat izin yang disertakan dalam setiap peran yang telah ditetapkan.
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 kembali aturan firewall yang efektif:
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
Kembalilah ke tab sesi SSH fwpolicy-vpc1-client dan coba lakukan curl:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Apakah Anda berhasil terhubung?
Untuk memverifikasi, 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, lalu coba lagi:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Waktu tunggu koneksi akan 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
Pindah kembali ke tab sesi SSH fwpolicy-vpc1-client, lalu coba lagi. Setelah itu, seharusnya berhasil.
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. Tag yang diatur IAM melalui Peering Jaringan VPC
Dari Cloud Shell, buat VPC, subnet, dan klien baru, serta siapkan Peering Jaringan VPC antarjaringan:
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 ditetapkan 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 seluruh organisasi, kunci tag dikaitkan dengan VPC tertentu, sehingga tidak dapat diterapkan ke instance di jaringan yang berbeda. Dengan demikian, Anda harus membuat kunci tag dan nilai 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, jelaskan aturan kebijakan firewall jaringan yang ada untuk memastikan 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 EKTIF:
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 ini:
gcloud compute instances list --filter=vpc1-www
Hubungkan ke fwpolicy-vpc2-client melalui SSH, lalu 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
Hapus instance, Cloud NAT, dan Cloud Router dari Cloud Shell:
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 Tag dan kebijakan firewall jaringan global:
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 telah 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.