1. Giriş
Ağ güvenlik duvarı politikaları
Güvenlik duvarları, güvenli bir bulut ortamının temel yapı taşlarıdır. Daha önce, VPC güvenlik duvarlarını değiştirmeden kuruluş ve klasör düzeyinde güvenlik duvarı politikalarını kullanıma sunduk. Bu sürümde, güvenlik duvarı politikası yapısını VPC seviyesine kadar genişleteceğiz ve Google Cloud'un kaynak hiyerarşisi genelinde birleşik bir güvenlik duvarı desteği sağlamak ve güvenlik duvarı politikası kontrolünü güvenli, esnek ve ölçeklenebilir bir şekilde yönetme konusunda tutarlı bir kullanıcı deneyimi sunmak için mevcut güvenlik duvarı politikası desteğinde çeşitli iyileştirmeler yapacağız.
Ağ güvenlik duvarı politikası, güvenlik duvarı kuralları için kapsayıcı görevi görür. Bir ağ güvenlik duvarı politikasında tanımlanan kurallar, politika bir VPC ağı ile ilişkilendirilene kadar hiçbir yerde zorunlu kılınmaz. Her VPC ağının ilişkili bir ağ güvenlik duvarı politikası olabilir. Ağ güvenlik duvarı politikaları, güvenlik duvarı kurallarında IAM tarafından yönetilen etiketleri (veya yalnızca etiketleri) destekler. Bu etiketler, mevcut ağ etiketlerinin yerini alır ve iş yüküne kimlik sağlamak için kullanılabilir.
Ağ güvenlik duvarı politikasının ağlar arasında paylaşılması ve IAM tarafından yönetilen etiketlerle entegrasyon, güvenlik duvarlarının yapılandırılmasını ve yönetimini büyük ölçüde kolaylaştırır.
Ağ güvenlik duvarı politikasının kullanıma sunulmasıyla birlikte Google Cloud'un güvenlik duvarı politikaları artık aşağıdaki bileşenlerden oluşmaktadır:
- Hiyerarşik Güvenlik Duvarı Politikası
- VPC Güvenlik Duvarı Kuralları
- Ağ Güvenlik Duvarı Politikası ( Küresel ve Bölgesel)
Hiyerarşik güvenlik duvarı politikaları, kaynak hiyerarşisindeki kuruluş ve klasör düğümlerinde desteklenir. VPC güvenlik duvarı kuralları ve ağ güvenlik duvarı politikaları ise VPC düzeyinde uygulanır. VPC güvenlik duvarı kuralları ile ağ güvenlik duvarı politikaları arasındaki en büyük fark, VPC güvenlik duvarı kurallarının yalnızca tek bir VPC ağına uygulanabilmesi, ağ güvenlik duvarı politikalarının ise tek bir VPC'ye veya VPC grubuna eklenebilir olması ve toplu güncelleme gibi diğer avantajlara sahip olmasıdır.
Son olarak, her VPC ağında bulunan örtülü güvenlik duvarı kuralları da vardır:
- İşlemi izin ver ve hedefi 0.0.0.0/0 olan bir çıkış kuralı
- İşlemi reddet ve kaynağı 0.0.0.0/0 olan bir giriş kuralı
Yaptırım sırası varsayılan olarak aşağıdaki şemada gösterilir:
VPC güvenlik duvarı kuralları ile genel ağ güvenlik duvarı politikası arasındaki yaptırım sırasının değiştirilebileceğini lütfen unutmayın. Müşteriler, gcloud komutu ile istedikleri zaman yaptırım emrini belirtebilir.
Etiketler
Yeni ağ güvenlik duvarı politikası kurallarına entegre etiketler, Google Cloud kaynak hiyerarşisinin kuruluş düzeyinde tanımlanan anahtar/değer çifti kaynaklarıdır. Bu tür bir etiket, adından da anlaşılacağı gibi, etikette kimin ne yapabileceğini belirten bir IAM erişim denetimi içerir. Örneğin, IAM izinleri, hangi kimliklerin etiketlere değer atayabileceğini ve hangi kimliklerin kaynaklara etiket ekleyebildiğini belirtmenize olanak tanır. Bir etiket bir kaynağa uygulandıktan sonra ağ güvenlik duvarı kuralları, trafiğe izin vermek ve trafiği reddetmek için bu etiketi kullanabilir.
Etiketler, Google Cloud'un kaynak devralma modeline uyar. Yani etiketler ve değerleri, üst öğelerinden hiyerarşi boyunca aktarılır. Sonuç olarak, etiketler tek bir yerde oluşturulabilir ve ardından kaynak hiyerarşisindeki diğer klasörler ve projeler tarafından kullanılabilir. Etiketler ve erişim kısıtlaması hakkında daha fazla bilgi için bu sayfayı ziyaret edin.
Etiketler, Compute Engine örneklerine eklenebilen ağ etiketleriyle karıştırılmamalıdır. Ağ etiketleri, örnekle ilişkilendirilir ve örnek kullanımdan kaldırıldığında kaybolur. VPC güvenlik duvarı kuralları ağ etiketleri içerebilir ancak bulut kaynağı olarak kabul edilmediklerinden IAM erişim denetimine tabi değildir.
Bu belgede etiketler ve IAM tarafından yönetilen etiketlerin birbirinin yerine kullanıldığını unutmayın.
Oluşturacağınız uygulama
Bu kod laboratuvarının iki bölümü vardır. İlk bölümde, tek bir VPC ağı kullanılarak ağ güvenlik duvarı politikaları ve Etiketler gösterilmektedir. İkinci bölümde ise aşağıdaki şemaya göre eşlenen VPC ağlarında Etiketlerin nasıl kullanılacağı gösterilmektedir. Bu nedenle, bu kod laboratuvarının çalışması için tek bir proje ve birden fazla VPC ağı oluşturma olanağı gerekir.
Neler öğreneceksiniz?
- Ağ güvenlik duvarı politikası oluşturma
- Ağ güvenlik duvarı politikasıyla etiket oluşturma ve kullanma
- VPC Ağ Eşleme üzerinden etiketleri kullanma
Gerekenler
- Google Cloud projesi
- Örnekleri dağıtma ve ağ bileşenlerini yapılandırma hakkında bilgi
- VPC güvenlik duvarı yapılandırma bilgisi
2. Başlamadan önce
Değişken oluşturma/güncelleme
Bu kod laboratuvarında, Cloud Shell'de gcloud yapılandırmasının uygulanmasına yardımcı olmak için $variables değişkenleri kullanılır.
Cloud Shell'de aşağıdakileri yapın:
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. VPC ağı ve alt ağ oluşturma
VPC Ağı
fwpolicy-vpc1 öğesini oluşturun:
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
Alt ağlar
Seçilen bölgede ilgili alt ağları oluşturun:
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
Cloud NAT
fwpolicy-pc1 için Cloud Router'ları ve Cloud NAT ağ geçitlerini oluşturun:
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. Örnek oluşturma
IAP kurulumunun bir parçası olarak henüz tanımlanmamışsa IAP aralıklarından gelen SSH giriş trafiğine izin veren bir güvenlik duvarı kuralı oluşturun:
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
fwpolicy-vpc1 istemci ve web sunucusu örneklerini oluşturun:
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
Tanımlanmış VPC güvenlik duvarı kuralı olmadığından (IAP'nin bu bölümün başına göre yapılandırıldığı sırada oluşturulması gereken SSH izin kuralının dışında) ve varsayılan olarak tüm giriş trafiği reddedildiğinden istemci örnekleri ilgili web sunucularına erişemez. İsteğin zaman aşımına uğrayacağını doğrulamak için yeni bir pencere açın ve fwpolicy-vpc1-client örneğine SSH oturumu başlatın ve web sunucusunu curl ile çağırmayı deneyin:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Beklenen çıkış:
curl: (28) Connection timed out after 2001 milliseconds
İsteğe bağlı olarak, Cloud Shell üzerinden fwpolicy-vpc1 için tanımlanmış VPC güvenlik duvarı kuralı olmadığını doğrulayın:
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
5. Genel ağ güvenlik duvarı politikası
Global ağ güvenlik duvarı politikası oluşturun:
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
Web trafiğine izin veren bir kural ekleyin:
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
Ağ güvenlik duvarı politikasını açıklayın ve kuralın başarıyla added
olduğunu doğrulayın:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Beklenen çıkış (çıkışın başına gidin; gizli kuralların da gösterildiğini unutmayın):
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 ...
Ağ güvenlik duvarı politikasını fwpolicy-vpc1 ile ilişkilendirin:
gcloud compute network-firewall-policies associations create \ --firewall-policy $prefix-example \ --network $prefix-vpc1 \ --name $prefix-vpc1-association \ --global-firewall-policy
Politikanın fwpolicy-vpc1 ağına başarıyla uygulandığını doğrulayın:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Beklenen çıkış (öncelikli hiyerarşik güvenlik duvarı politikaları varsa ilgili kuralların en üstte gösterileceğini unutmayın):
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
Politikanın fwpolicy-vpc1 web sunucusuna da başarıyla uygulandığını doğrulayın:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Beklenen çıkış, önceki komuta (fwpolicy-vpc1 etkili güvenlik duvarları) benzerdir:
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
vpc1-client SSH oturumuna geri dönün ve curl'i tekrar deneyin (aşağıdaki komutta ön ek olarak fwpolicy
kullanıldığı varsayılır. Bunun yerine farklı bir ad kullanıldıysa lütfen curl
komutunu buna göre ayarlayın):
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
Cloud Shell'den, ağ güvenlik duvarı politikasının fwpolicy-vpc1'e uygulandığını doğrulayın:
gcloud compute network-firewall-policies describe \ $prefix-example --global
Beklenen çıkış (çıktının başına gidin):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
6. IAM tarafından yönetilen etiketler
Etiket, bir kuruluşa, klasöre veya projeye eklenebilen bir anahtar/değer çiftidir. Daha fazla bilgi için Etiket oluşturma ve yönetme başlıklı makaleyi ve gerekli izinleri inceleyin.
tagAdmin rolü, yeni etiketler oluşturmanıza, mevcut etiketleri güncellemenize ve silmenize olanak tanır. Bu rolü bir kuruluş yöneticisi verebilir. Cloud Shell'de IAM politikasını güncelleyerek kullanıcınıza tagAdmin rolünü ekleyin. Her önceden tanımlanmış role hangi izinlerin dahil edildiğini görmek için izinler referansı sayfasını kullanın.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
Hangi kullanıcıların resourcemanager.tagAdmin rolüne sahip olduğunu doğrulamak için aşağıdaki komutu çalıştırın:
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
Yeni bir etiket anahtarı oluşturun:
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
Beklenen çıkış:
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'
Yeni etiket değerleri oluşturun:
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
Etiket değerlerinin başarıyla oluşturulduğunu doğrulayın:
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
Beklenen çıkış:
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
Cloud Shell'de, etiketlerin kullanılmadığını doğrulamak için mevcut ağ güvenlik duvarı politikası kuralını açıklayın:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Beklenen çıkış:
--- 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
Cloud Shell'de, kuralı yalnızca vpc1-tags/web-clients etiket anahtarından gelen trafiğe izin verecek şekilde güncelleyin ve kuralı vpc1-tags/web-servers etiket anahtarına sahip örneklere yükleyin.
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
Cloud Shell'de, etiketlerin başarıyla uygulandığını ve ETKİLİ olarak raporlandığını doğrulamak için mevcut ağ güvenlik duvarı politikası kuralını açıklayın:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Beklenen çıkış:
--- 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
Cloud Shell'de, kuralın vpc1'e uygulandığını doğrulayalım:
gcloud compute networks get-effective-firewalls $prefix-vpc1
Beklenen çıkış:
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
Ağ güvenlik duvarı politikası VPC ağı ile ilişkili olmaya devam etse de etiket örneklere eklenmediği için web trafiğine izin veren kuralın artık web sunucusuna uygulanmadığını doğrulayın:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Beklenen çıkış (önceliği 500 olan güvenlik duvarı kuralının gösterilmediğini unutmayın):
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
Belirli etikete ve kullanıcıya Etiket Kullanıcı rolü verin. Her bir önceden tanımlanmış role hangi izinlerin dahil edildiğini görmek için izinler referansı sayfasını kullanın.
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
Rolün başarıyla eklendiğini doğrulayın:
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
Beklenen çıkış:
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
Etiketi fwpolicy-vpc1-www örneğine uygulayın:
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
Beklenen çıkış:
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
Bağlantıları doğrulayın:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
Beklenen çıkış:
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
Etkili güvenlik duvarı kurallarını tekrar doğrulayın:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Beklenen çıkış:
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
fwpolicy-vpc1-client SSH oturumu sekmesine geri dönün ve curl'i kullanmayı deneyin:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Bağlanabildiniz mi?
Bunu doğrulamak için Cloud Shell üzerinden kaynağın CIDR ölçütlerini kaldıracak şekilde kuralı güncelleyin.
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
fwpolicy-vpc1-client SSH oturumu sekmesine geri dönüp tekrar deneyin:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Etiket fwpolicy-vpc1-client'a eklenmediğinden bu sefer bağlantı zaman aşımına uğrayacaktır. Cloud Shell'den ekleyip tekrar deneyin.
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
fwpolicy-vpc1-client SSH oturumu sekmesine geri dönüp tekrar deneyin. Bu sefer başarılı olacaktır.
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. VPC Ağ Eşleme üzerinden IAM tarafından yönetilen etiketler
Cloud Shell'de yeni bir VPC, alt ağ ve istemci oluşturun ve ağlar arasında VPC Ağ Eşlemesi ayarlayın:
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
IAP kurulumunun bir parçası olarak henüz tanımlanmamışsa IAP aralıklarından gelen SSH giriş trafiğine izin veren bir güvenlik duvarı kuralı oluşturun:
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
Etiketler kuruluş genelindeki nesneler olsa da etiket anahtarları belirli bir VPC ile ilişkilendirilir ve bu nedenle farklı ağlardaki örneklere uygulanamaz. Bu nedenle, vpc2 için geçerli yeni bir etiket anahtarı ve değeri oluşturmanız gerekir:
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
Yeni etiketi fwpolicy-vpc2-client örneğine uygulayın:
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
İsteğe bağlı olarak fwpolicy-vpc2-client'ın bağlamalarını listeleyin:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc2-client
Beklenen çıkış:
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
Cloud Shell'de, yeni etiketlerin kullanılmadığını onaylamak için mevcut ağ güvenlik duvarı politikası kuralını açıklayın:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Beklenen çıkış:
--- 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
Mevcut güvenlik duvarı kuralını, eşlenen VPC ağındaki etiketlere izin verecek şekilde güncelleyin:
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
Güvenlik duvarı kuralının başarıyla uygulandığından ve ETKİLİ olarak raporlandığından emin olmak için kuralı açıklayın:
gcloud compute network-firewall-policies rules describe 500 \ --firewall-policy $prefix-example \ --global-firewall-policy
Beklenen çıkış:
--- 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
Aşağıdaki gcloud komutunu kullanarak fwpolicy-vpc1-www örneğinin IP'sini öğrenin:
gcloud compute instances list --filter=vpc1-www
SSH üzerinden fwpolicy-vpc2-client'a bağlanın ve fwpolicy-vpc1'in IP'sini curl ile çağırmayı deneyin:
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
fwpolicy-vpc1-www sunucusuna bağlanabilirsiniz. Temizleme adımları için bir sonraki bölüme geçin.
8. Temizleme adımları
Cloud Shell'den örnekleri, Cloud NAT'ı ve Cloud Router'ı kaldırın:
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
Global ağ güvenlik duvarı politikasını ve etiketlerini kaldırın:
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
tagAdmin ve tagUsers rolleri değiştirildiyse aşağıdaki adımları uygulayın:
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
Son olarak, VPC ağ eşlemelerini, alt ağları ve VPC ağlarını kaldırın:
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. Tebrikler!
Tebrikler, etiket yapılandırması ile global ağ güvenlik duvarı politikasını başarıyla yapılandırıp doğruladınız.