1. Введение
Списки именованных IP-адресов Google Cloud Armor позволяют ссылаться на списки IP-адресов и диапазонов IP, которые поддерживаются сторонними поставщиками. Списки именованных IP-адресов можно настроить в политике безопасности. Вам не нужно вручную указывать каждый IP-адрес или диапазон IP-адресов по отдельности.
Что вы узнаете
- Преимущества списка именованных IP-адресов Cloud Armor
- Создать политику безопасности Cloud Armor
- Развертывание списка именованных IP-адресов Cloud Armor
- Создать глобальный балансировщик нагрузки
- Создайте группу управляемых экземпляров с примером тестового приложения.
Что вам понадобится
- Опыт работы с политиками безопасности и балансировщиками нагрузки.
2. Разрешение трафика только от разрешенных сторонних провайдеров
Типичный вариант использования — создание белого списка, содержащего IP-адреса разрешенного стороннего партнера, чтобы гарантировать, что только трафик, исходящий от этого партнера, может получить доступ к балансировщику нагрузки и серверным модулям.
Например, поставщикам CDN необходимо регулярно извлекать контент с исходных серверов, чтобы распределять его в свои собственные кэши. Партнерство с Google обеспечивает прямую связь между провайдерами CDN и периферией сети Google. Пользователи CDN в Google Cloud могут использовать это прямое соединение во время получения исходных данных. В этом случае пользователь CDN может захотеть создать политику безопасности, которая разрешает трафик, поступающий только от этого конкретного поставщика CDN.
В этом примере провайдер CDN публикует список своих IP-адресов 23.235.32.0/20, 43.249.72.0/22, ⋯,. Пользователь CDN настраивает правило безопасности, которое разрешает трафик, исходящий только с этих IP-адресов. В результате разрешены две точки доступа провайдера CDN (23.235.32.10 и 43.249.72.10), и поэтому их трафик разрешен. Трафик от неавторизованной точки доступа 198.51.100.1 блокируется.
Google Cloud Armor назвал IP-адрес
3. Упрощение настройки и управления за счет использования предварительно настроенных правил.
Поставщики CDN часто используют IP-адреса, которые хорошо известны и которые необходимо использовать многим пользователям CDN. Эти списки со временем меняются, поскольку провайдеры добавляют, удаляют и обновляют IP-адреса.
Использование списка именованных IP-адресов в правиле политики безопасности упрощает процесс настройки и управления IP-адресами, поскольку Google Cloud Armor ежедневно автоматически синхронизирует информацию от поставщиков CDN. Это исключает трудоемкий и чреватый ошибками процесс ведения большого списка IP-адресов вручную.
Поставщики списков IP-адресов
Поставщики списка IP-адресов, указанные в следующей таблице, поддерживаются для Google Cloud Armor. Это провайдеры CDN, сотрудничающие с Google. Их списки IP-адресов публикуются через отдельные общедоступные URL-адреса.
Эти партнеры предоставляют отдельные списки адресов IPv4 и адресов IPv6. Google Cloud Armor использует предоставленные URL-адреса для получения списков, а затем преобразует их в списки именованных IP-адресов. Вы обращаетесь к спискам по именам в таблице.
Альтернативно используйте облачную оболочку для получения списка предварительно настроенных списков именованных IP-адресов.
Войдите в CloudShell и установите свой ProjectID.
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
Из облачной оболочки
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
Это возвращает:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. Топология Codelab
5. Настройка и требования
Самостоятельная настройка среды
- Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. (Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .)
Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не подойдет вам, извините!). Позже в этой лаборатории он будет называться PROJECT_ID
.
- Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.
Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Обязательно следуйте всем инструкциям в разделе «Очистка», в которых рассказывается, как отключить ресурсы, чтобы вам не приходилось нести расходы, выходящие за рамки этого руководства. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.
В консоли GCP щелкните значок Cloud Shell на верхней правой панели инструментов:
Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лабораторной работе можно выполнять с помощью простого браузера.
6. Создайте сеть VPC.
Сеть VPC
Из Cloud Shell
gcloud compute networks create
именованный список-vpc
--subnet-mode custom
Создать подсеть
Из Cloud Shell
gcloud compute networks subnets create named-ip-subnet \ --network
именованный список-vpc
--range 10.0.0.0/24 --region us-east1
Создать правила брандмауэра
Из Cloud Shell
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
Создайте балансировщик нагрузки
Создайте шаблон экземпляра
Из Cloud Shell
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
Создайте группу управляемых экземпляров
Из Cloud Shell
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. Проверьте серверные части
Убедитесь, что экземпляры виртуальных машин создаются в обоих регионах, и получите доступ к их HTTP-сайтам.
- Продолжая работать в Compute Engine, нажмите «Экземпляры виртуальных машин» в меню слева.
- Обратите внимание на экземпляры, имена которых начинаются с us-east1-mig. Эти экземпляры входят в группы управляемых экземпляров.
- Нажмите на внешний IP-адрес экземпляра us-east1-mig. Вы должны увидеть IP-адрес клиента (ваш IP-адрес), имя хоста (начинается с us-east1-mig).
Настройка балансировщика нагрузки HTTP
- В облачной консоли щелкните меню навигации ( ) > щелкните Сетевые службы > Балансировка нагрузки, а затем щелкните Создать балансировщик нагрузки.
- В разделе «Балансировка нагрузки HTTP(S)» нажмите «Начать настройку».
- Выберите «Из Интернета на мои виртуальные машины» и нажмите «Продолжить».
- Установите имя http-lb.
Настройка серверной части
Серверные службы направляют входящий трафик на один или несколько подключенных серверов. Каждый серверный компонент состоит из группы экземпляров и дополнительных метаданных мощности обслуживания.
- Нажмите «Конфигурация серверной части».
- В разделе «Верхние службы и серверные сегменты» нажмите «Создать или выбрать серверные службы и серверные сегменты», затем нажмите «Верхние службы», а затем нажмите «Создать серверную службу».
- Тип серверной части — группа экземпляров.
- Установите следующие значения, оставьте все остальные значения по умолчанию:
- Нажмите Готово.
- Для проверки работоспособности выберите Создать проверку работоспособности.
- Установите следующие значения, оставьте все остальные значения по умолчанию:
- Нажмите «Сохранить и продолжить».
- Нажмите «Создать», чтобы создать серверную службу.
Настройка интерфейса
Правила хоста и пути определяют, как будет направляться ваш трафик. Например, вы можете направить видеотрафик на один сервер, а статический трафик — на другой сервер. Однако в этой лабораторной работе вы не настраиваете правила хоста и пути.
- Нажмите «Конфигурация внешнего интерфейса».
- http-интерфейс
- Укажите следующее, оставив все остальные значения по умолчанию.
- Нажмите Готово.
8. Просмотрите и создайте балансировщик нагрузки HTTP.
- Нажмите «Просмотреть» и завершите.
- Просмотрите серверные службы и интерфейс.
- Нажмите «Создать».
- Подождите несколько минут, пока балансировщик нагрузки будет создан.
- Нажмите на имя балансировщика нагрузки (http-lb).
- Обратите внимание на IPv4-адрес балансировщика нагрузки для следующей задачи, который называется http-lb.
9. Подтвердить успешный несанкционированный доступ
Прежде чем внедрять политику именованных IP-адресов, проверьте успешный несанкционированный доступ к лабораторному балансировщику и последующему веб-приложению. Обратите внимание: после реализации политики именованных IP-адресов доступ к веб-приложению ограничивается предоставленным набором выражений.
- Определите IP-адрес вашего балансировщика нагрузки, созданный на предыдущем шаге (http-lb), и вставьте его в свой веб-браузер. Вывод будет таким же, как на скриншоте ниже.
ПРИМЕЧАНИЕ. Этот шаг займет несколько минут. После создания веб-страницы IP-адрес клиента будет получен из Google Front End, а не из IP-адреса вашей рабочей станции.
На вашей рабочей станции выполните аналогичную проверку, как указано ниже.
bash-3.2$ curl <load-balancer-IP>
10. Пример вывода
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. Настройка списка именованных IP-адресов
Создайте новую политику Cloud Amour для списка именованных IP-адресов.
Из Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
Из Cloud Shell
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
Определите доступные адреса именованных IP-адресов CDN.
Из Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
Это возвращает:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
В Cloud Shell настройте список именованных IP-адресов на основе доступного набора выражений CDN.
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('expression_set')" \ --action "allow"
Пример использования CloudFlare
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \ --action "allow"
12. Примените политику безопасности CA.
Примените политику безопасности CA и подождите несколько минут для распространения глобальной политики.
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Проверка именованного IP-адреса
- Поскольку политика безопасности реализована, доступ к балансировщику нагрузки с вашей рабочей станции несанкционирован.
- Для проверки откройте окно терминала на своей рабочей станции и выполните завиток IP-адреса балансировщика нагрузки. Вывод команды Curl приведет к ошибке «403» «Запрещено», поскольку ваша рабочая станция теперь не авторизована.
С вашей рабочей станции
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
Шаги по очистке
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. Поздравляем!
Поздравляем с завершением работы над кодом.
Что мы рассмотрели
- Преимущества списка именованных IP-адресов Cloud Armor
- Создать глобальный балансировщик нагрузки
- Создайте группу управляемых экземпляров с примером тестового приложения.
- Создать политику безопасности Cloud Armor
- Развертывание списка именованных IP-адресов Cloud Armor
- Проверка политики именованного IP Cloud Armor