Список именованных IP-адресов Cloud Armor

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 блокируется.

27243e72ee25ee16.png

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-адресов. Вы обращаетесь к спискам по именам в таблице.

7e9c09a008e04656.png

Альтернативно используйте облачную оболочку для получения списка предварительно настроенных списков именованных 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

68a800f9adbf4570.png

5. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. (Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .)

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не подойдет вам, извините!). Позже в этой лаборатории он будет называться PROJECT_ID .

  1. Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.

Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Обязательно следуйте всем инструкциям в разделе «Очистка», в которых рассказывается, как отключить ресурсы, чтобы вам не приходилось нести расходы, выходящие за рамки этого руководства. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.

В консоли GCP щелкните значок Cloud Shell на верхней правой панели инструментов:

bce75f34b2c53987.png

Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:

f6ef2b5f13479f3a.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 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-сайтам.

  1. Продолжая работать в Compute Engine, нажмите «Экземпляры виртуальных машин» в меню слева.
  2. Обратите внимание на экземпляры, имена которых начинаются с us-east1-mig. Эти экземпляры входят в группы управляемых экземпляров.
  3. Нажмите на внешний IP-адрес экземпляра us-east1-mig. Вы должны увидеть IP-адрес клиента (ваш IP-адрес), имя хоста (начинается с us-east1-mig).

Настройка балансировщика нагрузки HTTP

  1. В облачной консоли щелкните меню навигации ( Главное меню.png ) > щелкните Сетевые службы > Балансировка нагрузки, а затем щелкните Создать балансировщик нагрузки.
  2. В разделе «Балансировка нагрузки HTTP(S)» нажмите «Начать настройку».

start_config.png

  1. Выберите «Из Интернета на мои виртуальные машины» и нажмите «Продолжить».
  2. Установите имя http-lb.

Настройка серверной части

Серверные службы направляют входящий трафик на один или несколько подключенных серверов. Каждый серверный компонент состоит из группы экземпляров и дополнительных метаданных мощности обслуживания.

  1. Нажмите «Конфигурация серверной части».
  2. В разделе «Верхние службы и серверные сегменты» нажмите «Создать или выбрать серверные службы и серверные сегменты», затем нажмите «Верхние службы», а затем нажмите «Создать серверную службу».
  3. Тип серверной части — группа экземпляров.
  4. Установите следующие значения, оставьте все остальные значения по умолчанию: 18bf7a852f0759ee.png
  5. Нажмите Готово.
  6. Для проверки работоспособности выберите Создать проверку работоспособности. health_check.png
    1. Установите следующие значения, оставьте все остальные значения по умолчанию: d2f85af1e988532b.png
  7. Нажмите «Сохранить и продолжить».
  8. Нажмите «Создать», чтобы создать серверную службу.

b00c217bf592f0.png

Настройка интерфейса

Правила хоста и пути определяют, как будет направляться ваш трафик. Например, вы можете направить видеотрафик на один сервер, а статический трафик — на другой сервер. Однако в этой лабораторной работе вы не настраиваете правила хоста и пути.

  1. Нажмите «Конфигурация внешнего интерфейса».
  2. http-интерфейс
  3. Укажите следующее, оставив все остальные значения по умолчанию. 51ae16211e72142f.png
  4. Нажмите Готово.

8. Просмотрите и создайте балансировщик нагрузки HTTP.

  1. Нажмите «Просмотреть» и завершите.

8efe5b462a80071d.png

  1. Просмотрите серверные службы и интерфейс.

30b06910bf7fae29.png

  1. Нажмите «Создать».
  2. Подождите несколько минут, пока балансировщик нагрузки будет создан.
  3. Нажмите на имя балансировщика нагрузки (http-lb).
  4. Обратите внимание на IPv4-адрес балансировщика нагрузки для следующей задачи, который называется http-lb.

9. Подтвердить успешный несанкционированный доступ

Прежде чем внедрять политику именованных IP-адресов, проверьте успешный несанкционированный доступ к лабораторному балансировщику и последующему веб-приложению. Обратите внимание: после реализации политики именованных IP-адресов доступ к веб-приложению ограничивается предоставленным набором выражений.

  1. Определите IP-адрес вашего балансировщика нагрузки, созданный на предыдущем шаге (http-lb), и вставьте его в свой веб-браузер. Вывод будет таким же, как на скриншоте ниже.

ПРИМЕЧАНИЕ. Этот шаг займет несколько минут. После создания веб-страницы IP-адрес клиента будет получен из Google Front End, а не из IP-адреса вашей рабочей станции.

f93410e9568f1f32.png

На вашей рабочей станции выполните аналогичную проверку, как указано ниже.

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-адреса

  1. Поскольку политика безопасности реализована, доступ к балансировщику нагрузки с вашей рабочей станции несанкционирован.
  2. Для проверки откройте окно терминала на своей рабочей станции и выполните завиток 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