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. Dalam versi ini, kami akan memperluas struktur kebijakan firewall hingga ke tingkat VPC, dan membuat beberapa peningkatan pada dukungan kebijakan firewall saat ini untuk 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 dikaitkan dengan jaringan VPC. Setiap jaringan VPC dapat memiliki satu kebijakan firewall jaringan yang terkait. 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 pembaruan batch.
Terakhir, kita juga memiliki aturan firewall tersirat yang disertakan dengan setiap jaringan VPC:
- Aturan keluar 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 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 diteruskan ke 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 batasan 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 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 akan menunjukkan cara menggunakan Tag di seluruh jaringan VPC yang di-peering sesuai 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 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 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 dan server web fwpolicy-vpc1:
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 seperti di 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 habis waktu tunggunya, 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 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 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
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 (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 curl lagi (perhatikan bahwa perintah di bawah mengasumsikan bahwa fwpolicy
digunakan sebagai awalan; sesuaikan perintah curl
jika nama yang digunakan 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, 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 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
Validasi 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 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 di 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 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 ke 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
Verifikasi bahwa 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
Beralih 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
Beralih kembali ke tab sesi SSH fwpolicy-vpc1-client dan coba lagi:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Kali ini koneksi akan habis waktu tunggunya, 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 diatur IAM melalui Peering Jaringan VPC
Dari Cloud Shell, buat VPC, subnet, dan klien baru, lalu siapkan Peering Jaringan VPC di 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 seluruh organisasi, kunci tag dikaitkan dengan VPC tertentu sehingga tidak dapat diterapkan ke instance di jaringan yang berbeda. Oleh karena itu, Anda harus 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, jelaskan 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 seharusnya 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.