1. Введение
Политики сетевого брандмауэра
Межсетевые экраны являются основными элементами безопасной облачной среды. Ранее мы внедряли политики межсетевых экранов на уровне организаций и папок, оставляя межсетевые экраны VPC без изменений. В этой версии мы расширим структуру политик межсетевых экранов до уровня VPC и внесем ряд улучшений в текущую поддержку политик межсетевых экранов, чтобы обеспечить единую поддержку межсетевых экранов во всей иерархии ресурсов Google Cloud и единообразный пользовательский опыт управления политиками межсетевых экранов безопасным, гибким и масштабируемым способом.
Политика сетевого брандмауэра выступает в качестве контейнера для правил брандмауэра. Правила, определенные в политике сетевого брандмауэра, не применяются нигде, пока политика не будет связана с сетью VPC. Каждая сеть VPC может иметь одну связанную с ней политику сетевого брандмауэра. Политики сетевого брандмауэра поддерживают управляемые IAM теги (или просто теги) в правилах брандмауэра, которые заменяют текущие сетевые теги и могут использоваться для обеспечения идентификации рабочей нагрузки.
Совместное использование политики сетевого брандмауэра в разных сетях и интеграция с тегами, управляемыми IAM, значительно упрощают настройку и управление брандмауэрами.
С внедрением политик сетевого брандмауэра, политики брандмауэра Google Cloud теперь состоят из следующих компонентов:
- Иерархическая политика брандмауэра
- Правила брандмауэра VPC
- Политика сетевого брандмауэра ( глобальная и региональная )
Иерархические политики межсетевого экрана поддерживаются на уровне организации и узлов папок в иерархии ресурсов, тогда как правила межсетевого экрана VPC и политики сетевого межсетевого экрана применяются на уровне VPC. Существенное различие между правилами межсетевого экрана VPC и политиками сетевого межсетевого экрана заключается в том, что правила межсетевого экрана VPC могут применяться только к одной сети VPC, тогда как политики сетевого межсетевого экрана могут быть привязаны к одной VPC или группе VPC, а также обладают другими преимуществами, такими как пакетное обновление.
Наконец, у нас также есть подразумеваемые правила брандмауэра , которые присутствуют в каждой сети VPC:
- Правило исходящего трафика, действие которого — разрешить, пункт назначения — 0.0.0.0/0
- Правило входящего трафика, действие которого — запрет, источник — 0.0.0.0/0
По умолчанию последовательность применения мер безопасности показана на следующей диаграмме:

Обратите внимание, что порядок применения правил межсетевого экрана VPC и глобальной политики сетевого межсетевого экрана может быть изменен. Клиенты могут в любое время указать порядок применения с помощью команды gcloud .
Теги
Новые теги, интегрированные в правила политики сетевого брандмауэра, представляют собой ресурсы типа «ключ-значение», определенные на уровне организации в иерархии ресурсов Google Cloud. Такой тег, как следует из названия, содержит управление доступом IAM, определяющее, кто и что может делать с этим тегом. Например, разрешения IAM позволяют указать, какие субъекты могут назначать значения тегам и какие субъекты могут прикреплять теги к ресурсам. После применения тега к ресурсу правила сетевого брандмауэра могут использовать его для разрешения и запрета трафика.
Теги соответствуют модели наследования ресурсов Google Cloud, что означает, что теги и их значения передаются по иерархии от родительских элементов. В результате теги могут быть созданы в одном месте, а затем использованы другими папками и проектами по всей иерархии ресурсов. Для получения дополнительной информации о тегах и ограничениях доступа посетите эту страницу .
Не следует путать теги с сетевыми тегами ; последние представляют собой строки, которые можно добавить к экземплярам Compute Engine; они связаны с экземпляром и исчезают при выводе экземпляра из эксплуатации. Правила брандмауэра VPC могут включать сетевые теги, но поскольку они не рассматриваются как облачные ресурсы, на них не распространяется контроль доступа IAM.
Обратите внимание, что в данном документе термины «теги» и «теги, управляемые IAM» используются взаимозаменяемо.
Что вы построите
Данный практический пример состоит из двух частей: первая демонстрирует политики сетевого брандмауэра и теги в рамках одной сети VPC, а вторая покажет, как использовать теги в пиринговых сетях VPC, как показано на схеме ниже. Таким образом, для выполнения этого практического примера требуется один проект и умение создавать несколько сетей VPC.

Что вы узнаете
- Как создать политику сетевого брандмауэра
- Как создавать и использовать теги с политикой сетевого брандмауэра
- Как использовать теги в сети VPC при пиринге
Что вам понадобится
- Проект Google Cloud
- Знание развертывания экземпляров и настройки сетевых компонентов.
- Знание конфигурации межсетевого экрана VPC
2. Прежде чем начать
Создание/обновление переменных
В этом практическом задании используются переменные `$variables` для упрощения настройки gcloud в Cloud Shell.
Внутри Cloud Shell выполните следующие действия:
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.
Сеть VPC
Создать fwpolicy-vpc1:
gcloud compute networks create $prefix-vpc1 --subnet-mode=custom
Подсети
Создайте соответствующие подсети в выбранном регионе:
gcloud compute networks subnets create $prefix-vpc1-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc1 --region=$region
Облачный NAT
Создайте облачные маршрутизаторы и шлюзы Cloud NAT для 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. Создание экземпляров
Создайте правило брандмауэра, разрешающее входящий SSH-трафик из диапазонов IAP, если оно еще не определено в настройках 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
Создайте экземпляры клиента и веб-сервера 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
Поскольку правила брандмауэра VPC не определены (кроме правила разрешения SSH, которое должно было быть создано при настройке IAP, как указано в начале этого раздела), и по умолчанию весь входящий трафик запрещен, клиентские экземпляры не смогут получить доступ к соответствующим веб-серверам. Чтобы убедиться, что запрос истечет по таймауту, откройте новое окно и инициируйте SSH-сессию с экземпляром fwpolicy-vpc1-client и попробуйте выполнить команду curl к веб-серверу:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Ожидаемый результат:
curl: (28) Connection timed out after 2001 milliseconds
При желании, через Cloud Shell убедитесь, что для fwpolicy-vpc1 не определены правила брандмауэра VPC:
gcloud compute firewall-rules list --filter="network:$prefix-vpc1"
5. Глобальная политика сетевого брандмауэра
Создайте глобальную политику сетевого брандмауэра:
gcloud compute network-firewall-policies create \ $prefix-example --description \ "firewall-policy-description" --global
Добавьте правило, разрешающее веб-трафик:
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
Опишите политику сетевого брандмауэра и убедитесь, что правило было успешно added :
gcloud compute network-firewall-policies describe \
$prefix-example --global
Ожидаемый результат (прокрутите вверх до начала вывода; обратите внимание, что неявные правила также отображаются):
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
...
Свяжите политику сетевого брандмауэра с fwpolicy-vpc1 :
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-example \
--network $prefix-vpc1 \
--name $prefix-vpc1-association \
--global-firewall-policy
Убедитесь, что политика политики (fwpolicy) была успешно применена к сети fwpolicy-vpc1 :
gcloud compute networks get-effective-firewalls $prefix-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
Убедитесь, что политика политики была успешно применена и к веб-серверу fwpolicy-vpc1 :
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Ожидаемый результат аналогичен результату предыдущей команды ( fwpolicy-vpc1 effective firewalls):
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
Вернитесь к SSH-сессии vpc1-client и попробуйте снова выполнить команду curl (обратите внимание, что приведенная ниже команда предполагает использование префикса fwpolicy ; если вместо него использовалось другое имя, скорректируйте команду curl соответствующим образом):
user@vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2 Page on vpc1-www in network vpc1 zone us-central1-a
В Cloud Shell убедитесь, что политика сетевого брандмауэра применена к fwpolicy-vpc1 :
gcloud compute network-firewall-policies describe \ $prefix-example --global
Ожидаемый результат (прокрутите вверх до начала вывода):
--- associations: - attachmentTarget: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/fwpolicy-vpc1 name: fwpolicy-vpc1-association ...
6. Теги, управляемые IAM
Тег — это пара «ключ-значение», которую можно прикрепить к организации, папке или проекту. Дополнительные сведения см. в разделе «Создание и управление тегами и необходимые разрешения» .
Роль tagAdmin позволяет создавать новые теги, обновлять и удалять существующие. Администратор организации может предоставить эту роль. В Cloud Shell обновите политику IAM, чтобы добавить роль tagAdmin вашему пользователю . Используйте страницу справочника разрешений, чтобы узнать, какие разрешения включены в каждую предопределенную роль.
gcloud organizations add-iam-policy-binding $org_id \ --member user:[user@example.com] --role roles/resourcemanager.tagAdmin
Выполните указанную ниже команду, чтобы проверить, какие пользователи имеют роль resourcemanager.tagAdmin:
gcloud organizations get-iam-policy $org_id --flatten=bindings \ --filter=bindings.role:roles/resourcemanager.tagAdmin
Создайте новый ключ тега:
gcloud resource-manager tags keys create tags-vpc1 \ --parent organizations/$org_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc1
Ожидаемый результат:
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'
Создайте новые значения тегов:
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
Убедитесь, что значения тегов были успешно созданы:
gcloud resource-manager tags values list \ --parent=$org_id/tags-vpc1
Ожидаемый результат:
NAME SHORT_NAME DESCRIPTION tagValues/349564376683 web-servers tagValues/780363571446 web-clients
В оболочке Cloud Shell опишите существующее правило политики сетевого брандмауэра, чтобы подтвердить, что теги не используются:
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: 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 обновите правило, разрешив трафик только с теговым ключом vpc1-tags/web-clients , и установите правило на экземплярах с теговым ключом 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
В оболочке Cloud Shell опишите существующее правило политики сетевого брандмауэра, чтобы подтвердить, что теги были успешно применены и отображаются как «ДЕЙСТВИТЕЛЬНЫЕ» :
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'
srcIpRanges:
- 10.0.0.0/16
srcSecureTags:
- name: tagValues/479619031616
state: EFFECTIVE
priority: 500
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
Давайте проверим в Cloud Shell, что правило было применено к vpc1 :
gcloud compute networks get-effective-firewalls $prefix-vpc1
Ожидаемый результат:
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
Убедитесь, что, несмотря на то, что политика сетевого брандмауэра по-прежнему связана с сетью VPC, правило, разрешающее веб-трафик, больше не применяется к веб-серверу, поскольку тег не был добавлен к экземплярам:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Ожидаемый результат (обратите внимание, что правило брандмауэра с приоритетом 500 не отображается):
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
Предоставьте роль «Пользователь тега» конкретному тегу и пользователю . Используйте страницу справочника разрешений , чтобы узнать, какие разрешения включены в каждую предопределенную роль.
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
Убедитесь, что роль была успешно добавлена:
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
Ожидаемый результат:
bindings: - members: - user:[user] role: roles/resourcemanager.tagUser ...
Примените тег к экземпляру 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
Ожидаемый результат:
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
Проверьте привязки:
gcloud resource-manager tags bindings list --location $zone --effective --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-vpc1-www
Ожидаемый результат:
namespacedTagKey: ORGANIZATION_ID/tags-vpc1 namespacedTagValue: ORGANIZATION_ID/tags-vpc1/web-servers tagKey: tagKeys/622132302133 tagValue: tagValues/349564376683
Ещё раз проверьте действующие правила брандмауэра:
gcloud compute instances network-interfaces \ get-effective-firewalls $prefix-vpc1-www --zone $zone
Ожидаемый результат:
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
Вернитесь на вкладку SSH-сессии fwpolicy-vpc1-client и попробуйте выполнить команду curl:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
Вам удалось подключиться?
Для проверки обновите правило, удалив критерий CIDR источника, через 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
Вернитесь на вкладку SSH-сессии fwpolicy-vpc1-client и попробуйте снова:
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
В этот раз соединение должно прерваться по таймауту, поскольку тег не был добавлен к fwpolicy-vpc1-client . Добавьте его в Cloud Shell и попробуйте еще раз.
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
Вернитесь на вкладку SSH-сессии fwpolicy-vpc1-client и попробуйте снова; теперь это должно пройти успешно.
user@fwpolicy-vpc1-client$ curl fwpolicy-vpc1-www --connect-timeout 2
7. Управление тегами с помощью IAM через пиринг сети VPC
В Cloud Shell создайте новую VPC, подсеть и клиент, а также настройте пиринг сети VPC между сетями:
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
Создайте правило брандмауэра, разрешающее входящий SSH-трафик из диапазонов IAP, если оно еще не определено в настройках 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
Несмотря на то, что теги являются объектами, действующими в масштабах всей организации, ключи тегов связаны с конкретной VPC и, следовательно, не могут применяться к экземплярам в разных сетях. Таким образом, необходимо создать новый ключ и значение тега, применимые к 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
Примените новый тег к экземпляру 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
При желании можно вывести список привязок 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
Ожидаемый результат:
namespacedTagKey: ORGANIZATION_ID/tags-vpc2 namespacedTagValue: ORGANIZATION_ID/tags-vpc2/web-clients tagKey: tagKeys/916316350251 tagValue: tagValues/633150043992
В оболочке Cloud Shell опишите существующее правило политики сетевого брандмауэра, чтобы подтвердить, что новые теги не используются:
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: 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
Обновите существующее правило брандмауэра, чтобы разрешить использование тегов из пиринговой сети VPC:
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
Опишите правило брандмауэра, чтобы убедиться в его успешном применении и наличии отметки «ДЕЙСТВИТЕЛЬНО» :
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
- name: tagValues/633150043992
state: EFFECTIVE
priority: 500
ruleTupleCount: 7
targetSecureTags:
- name: tagValues/230424970229
state: EFFECTIVE
Узнайте IP-адрес fwpolicy-vpc1-www с помощью приведенной ниже команды gcloud:
gcloud compute instances list --filter=vpc1-www
Подключитесь к fwpolicy-vpc2-client через SSH и попробуйте выполнить команду curl для IP-адреса fwpolicy-vpc1 :
user@fwpolicy-vpc2-client$ curl [fwpolicy-vpc1-www_IP] --connect-timeout 2
Вы должны иметь возможность подключиться к серверу fwpolicy-vpc1-www . Перейдите к следующему разделу, где описаны шаги по очистке.
8. Этапы очистки
В Cloud Shell удалите экземпляры, Cloud NAT и 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
Удалите глобальную политику сетевого брандмауэра и теги:
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 и tagUsers были изменены:
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
Наконец, удалите пиринги сети VPC, подсети и сети 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. Поздравляем!
Поздравляем, вы успешно настроили и проверили глобальную политику сетевого брандмауэра с конфигурацией тегов.