Использование Private Service Connect для публикации и использования сервисов с помощью GKE

1. Введение

Private Service Connect позволяет производителю услуг предлагать услуги потребителю услуг в частном порядке. Private Service Connect предлагает следующие преимущества:

  • Сеть VPC производителя услуг может поддерживать более одного потребителя услуг.
  • Каждый потребитель подключается к внутреннему IP-адресу, который он определяет. Private Service Connect выполняет преобразование сетевых адресов (NAT) для маршрутизации запроса производителю службы.

45b90d50690dd111.png

Рисунок 2. Private Service Connect использует конечные точки и вложения служб, чтобы позволить потребителям услуг отправлять трафик из сети VPC потребителя в службы в сети VPC производителя услуг (нажмите, чтобы увеличить).

Что вы узнаете

  • Преимущества подключения к частным услугам
  • Ключевые понятия для потребителей услуг
  • Ключевые концепции для производителей услуг
  • Создайте производственную среду
  • Предоставлять службу (среду производителя) через вложение службы.
  • Создайте потребительскую среду
  • Создайте правило переадресации в потребительской сети.
  • Подтвердите доступ потребителей
  • Включить контроль доступа политикой
  • Используйте выходное правило брандмауэра, чтобы заблокировать доступ к правилу переадресации потребителя.

Что вам понадобится

  • Знание развертывания кластеров и сервисов GKE.
  • Знание внутренних балансировщиков нагрузки.
  • Возможность создания VPC в двух проектах
  • Возможность создания кластера GKE.

2. Преимущества подключения к частным услугам

Используя PSC, вы получаете несколько преимуществ по сравнению с использованием пиринга VPC:

Лучший контроль над частным IP-пространством

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

Улучшенная безопасность и изоляция

  • Как потребитель услуги только вы можете инициировать связь с производителем услуги. Такое однонаправленное подключение радикально упрощает настройку брандмауэра, но также снижает риск несанкционированного трафика, исходящего от производителя услуг.
  • Как поставщику услуг вам не нужно изменять правила брандмауэра в зависимости от диапазонов подсетей в VPC потребителя. Вы можете просто создать правила брандмауэра для диапазона IP-адресов NAT, настроенного для вашей службы.

Лучшая масштабируемость

  • PSC обеспечивает высокомасштабируемый дизайн, поддерживая тысячи потребителей, а также позволяет производителям услуг предлагать высокомасштабируемые мультитенантные или одноарендные услуги.
  • Как потребитель услуг, использующий частное подключение к службе, вы можете создавать необходимые ресурсы в своем VPC. На масштаб этого не влияет количество таких ресурсов, созданных в VPC-производителе.

3. Ключевые понятия для потребителей услуг

Вы можете использовать конечные точки Private Service Connect для использования сервисов, находящихся за пределами вашей сети VPC. Потребители услуг создают конечные точки Private Service Connect, которые подключаются к целевой службе.

Конечные точки

Конечные точки Private Service Connect используются для подключения к целевой службе. Конечные точки имеют внутренний IP-адрес в вашей сети VPC и основаны на ресурсе правила пересылки.

Вы отправляете трафик на конечную точку, которая перенаправляет его целям за пределами вашей сети VPC.

Цели

Конечные точки Private Service Connect имеют цель — службу, к которой вы хотите подключиться:

  • Пакет API :
  • Все API: большинство API Google.
  • VPC-SC: API, которые поддерживает VPC Service Controls.
  • Опубликованный сервис в другой сети VPC. Эта услуга может управляться вашей собственной организацией или третьей стороной.

Опубликованный сервис

Чтобы подключить конечную точку к сервису производителя сервиса, вам понадобится вложение сервиса для сервиса. URI вложения службы имеет следующий формат: project/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME.

4. Ключевые концепции для производителей услуг

Чтобы сделать услугу доступной для потребителей, вы создаете одну или несколько выделенных подсетей , которые будут использоваться для преобразования сетевых адресов (NAT) IP-адресов потребителей. Затем вы создаете служебное вложение , которое относится к этим подсетям.

Подсети Private Service Connect

Чтобы предоставить доступ к службе, производитель службы сначала создает одну или несколько подсетей с целью Private Service Connect.

Когда запрос отправляется из потребительской сети VPC, исходный IP-адрес потребителя преобразуется с помощью исходного NAT (SNAT) в IP-адрес, выбранный из одной из подсетей Private Service Connect.

Если вы хотите сохранить информацию об IP-адресе потребительского подключения, см. Просмотр информации о потребительском подключении .

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

Подсеть Private Service Connect должна содержать хотя бы один IP-адрес для каждых 63 потребительских виртуальных машин, чтобы каждой потребительской виртуальной машине было выделено 1024 исходных кортежа для преобразования сетевых адресов.

Минимальный размер подсети Private Service Connect — /24.

Сервисные вложения

Производители услуг предоставляют свои услуги через вложение службы.

  • Чтобы предоставить доступ к службе, производитель службы создает вложение службы, которое ссылается на правило переадресации балансировщика нагрузки службы.
  • Чтобы получить доступ к службе, потребитель службы создает конечную точку, которая ссылается на вложение службы.

Настройки подключения

Когда вы создаете услугу, вы выбираете, как сделать ее доступной. Есть два варианта:

  • Автоматически принимать подключения для всех проектов — любой потребитель сервиса может настроить конечную точку и автоматически подключиться к сервису.
  • Принимать соединения для выбранных проектов — потребители службы настраивают конечную точку для подключения к службе, а производитель службы принимает или отклоняет запросы на подключение.

Требования и ограничения

  • Применяются ограничения для Private Service Connect .
  • Создать служебное вложение можно в GKE версий 1.21.4-gke.300 и новее.
  • Вы не можете использовать одну и ту же подсеть в нескольких конфигурациях прикрепления служб.
  • Вам необходимо создать службу GKE, которая использует внутренний балансировщик нагрузки TCP/UDP.

5. Тестовая среда

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

1ce5607c0c56d77d.jpeg

Теперь давайте посмотрим на сеть производителей. Обратите внимание, что сеть производителя не имеет сопоставления с сетью потребителей. Вместо этого сеть производителя содержит вложение службы (опубликованную службу), которая используется потребителем для услуг. Приложение службы производителя предоставляется входным ILB L4 GKE (опубликованная служба), обеспечивающим связь с модулями GKE и связанными приложениями.

Подсеть NAT используется, когда запрос отправляется из потребительской сети VPC, исходный IP-адрес потребителя преобразуется с помощью исходного NAT (SNAT) в IP-адрес, выбранный из одной из подсетей Private Service Connect.

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

Чтобы узнать больше о L4ILB для GKE Private Service Connect и получить прямой доступ к содержимому, используемому при создании этой лабораторной работы, обратитесь к следующему.

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google, и вы можете обновить ее в любое время.
  • Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как PROJECT_ID ), поэтому, если он вам не нравится, создайте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он «замораживается» после создания проекта.
  • Существует третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и не платить за выставление счетов за пределами этого руководства, следуйте инструкциям по «очистке», которые можно найти в конце лаборатории кода. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лабораторной работе можно выполнять с помощью простого браузера.

6. Прежде чем начать

Codelab требует двух проектов, хотя это не является обязательным требованием для PSC. Обратите внимание на ссылки для поддержки одного или нескольких проектов.

Единый проект — обновление проекта для поддержки сети производителей и потребителей.

В Cloud Shell убедитесь, что идентификатор вашего проекта настроен.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
prodproject=YOUR-PROJECT-NAME
consumerproject=YOUR-PROJECT-NAME
echo $prodproject
echo $consumerproject

Несколько проектов – обновите проект для поддержки сети производителей.

В Cloud Shell убедитесь, что идентификатор вашего проекта настроен.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
prodproject=YOUR-PROJECT-NAME
echo $prodproject

Обратите внимание на следующее соглашение о кодах цветов:

f251ebb137e37136.png

7. Создайте сеть VPC для производителей.

afe738fc869f0d6e.png

Сеть VPC

Из Cloud Shell

gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom 

Создать подсеть кластера GKE

Из Cloud Shell

gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access

Создать кластер GKE

Из Cloud Shell

gcloud container clusters create gke-psc-l4 \
    --release-channel=rapid \
    --enable-ip-alias \
    --zone=us-central1-a \
    --network gke-producer-l4-vpc \
    --num-nodes 1 \
    --subnetwork node-subnet1 \
    --cluster-secondary-range-name pod \
    --services-secondary-range-name service

Создайте подсеть для Private Service Connect (подсеть NAT).

Вам необходимо создать одну или несколько выделенных подсетей для использования с Private Service Connect. Если вы используете Google Cloud Console для публикации службы , вы можете создать подсети во время этой процедуры.

Дополнительные сведения о подсетях Private Service Connect см. в разделе Подсети Private Service Connect .

Из Cloud Shell

gcloud beta compute networks subnets create gke-nat-subnet \
    --project $prodproject \
    --network gke-producer-l4-vpc \
    --region us-central1 \
    --range 100.100.10.0/24 \
    --purpose PRIVATE_SERVICE_CONNECT

8. Развертывание рабочей нагрузки и сервисов

Следующий манифест описывает развертывание, которое запускает образец образа контейнера веб-приложения. Сохраните манифест как my-deployment.yaml из облачной оболочки.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: psc-ilb
spec:
  replicas: 3
  selector:
    matchLabels:
      app: psc-ilb
  template:
    metadata:
      labels:
        app: psc-ilb
    spec:
      containers:
      - name: whereami
        image: gcr.io/google-samples/whereami:v1.2.1
        ports:
          - name: http
            containerPort: 8080
        readinessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 5
          timeoutSeconds: 1

Примените манифест к своему кластеру из облачной оболочки.

kubectl apply -f my-deployment.yaml

Создать услугу

В следующем манифесте описана служба, которая создает внутренний балансировщик нагрузки TCP/UDP на TCP-порту 8080. Сохраните манифест как my-service.yaml из облачной оболочки.

apiVersion: v1
kind: Service
metadata:
  name: gke-l4-psc
  annotations:
    networking.gke.io/load-balancer-type: "Internal"
spec:
  type: LoadBalancer
  selector:
    app: psc-ilb
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP

Примените манифест к своему кластеру из облачной оболочки.

kubectl apply -f my-service.yaml

Создать служебное вложение

Следующий манифест описывает ServiceAttachment, который предоставляет созданную вами службу потребителям службы. Сохраните манифест как my-psc.yaml из облачной оболочки.

apiVersion: networking.gke.io/v1beta1
kind: ServiceAttachment
metadata:
 name: emoji-sa
 namespace: default
spec:
 connectionPreference: ACCEPT_AUTOMATIC
 natSubnets:
 - gke-nat-subnet
 proxyProtocol: false
 resourceRef:
   kind: Service
   name: gke-l4-psc

Примените манифест к своему кластеру из облачной оболочки.

kubectl apply -f my-psc.yaml

ServiceAttachment имеет следующие поля:

  • ConnectionPreference: предпочтение подключения, определяющее способ подключения клиентов к службе. Вы можете использовать автоматическое утверждение проекта с помощью ACCEPT_AUTOMATIC или явное утверждение проекта с помощью ACCEPT_MANUAL. Дополнительные сведения см. в разделе Публикация служб с помощью Private Service Connect .
  • natSubnets : список имен ресурсов подсети, которые будут использоваться для подключения службы.
  • proxyProtocol: если установлено значение true, в запросах доступны IP-адрес источника потребителя и идентификатор соединения Private Service Connect. Это поле является необязательным и по умолчанию имеет значение false, если оно не указано.
  • ConsumerAllowList: список потребительских проектов, которым разрешено подключаться к ServiceAttachment . Это поле можно использовать только в том случае, если ConnectionPreference имеет значение ACCEPT_MANUAL. Дополнительные сведения об этом поле и других параметрах см. в разделе Публикация служб с помощью Private Service Connect .

Проверка производителя

Просмотр сведений о служебном вложении

Вы можете просмотреть подробную информацию о ServiceAttachment, используя следующую команду из облачной оболочки.

kubectl describe serviceattachment emoji-sa

Просмотр GKE L4 ILB

В облачной консоли перейдите в «Сетевые службы» → «Балансировка нагрузки» → «Внешние интерфейсы».

Определите внешний IP-адрес, который соответствует ранее определенной подсети узла 192.168.10.0/24, обратите внимание на снимок экрана ниже. Ваш IP-адрес может отличаться.

ed7a25ed4774977b.png

Просмотр опубликованного сервиса

В облачной консоли перейдите в «Сетевые службы» → «Подключение частных служб» → «Опубликованные службы».

Определите службу с сетью, используемой в лаборатории, gke-producer-l4-vpc, обратите внимание на снимок экрана ниже, хотя значения службы и цели могут отличаться.

5a00836ee514b918.png

Нажмите на имя службы, и вы перейдете на экран ниже. Обратите внимание на детали вложения службы, указанные в основной информации. Также обратите внимание, что «Подключенные проекты» пусты, поскольку потребитель еще не зарегистрировался в службе. ACCEPT и REJECT останутся неактивными, поскольку для параметра подключения установлено значение «ACCEPT_AUTOMATICALLY» , этот параметр можно в любой момент изменить на «ACCEPT_MANUAL» , изменив yaml вложения службы (my-psc.yaml).

497f5f43920018c0.png

e246063a23771273.png

9. Создайте сеть VPC для потребителей.

1f3c90f1e139e906.png

В следующем разделе потребительский VPC настраивается в отдельном проекте. Связь между сетью потребителя и производителя осуществляется через привязку службы, определенную в сети потребителя.

Codelab требует двух проектов, хотя это не является обязательным требованием для PSC. Обратите внимание на ссылки для поддержки одного или нескольких проектов.

Единый проект — обновление проекта для поддержки сети производителей и потребителей.

В Cloud Shell убедитесь, что идентификатор вашего проекта настроен.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
consumerproject=YOUR-PROJECT-NAME
prodproject=YOUR-PROJECT-NAME
echo $prodproject
echo $consumerproject

Несколько проектов — обновление проекта для поддержки потребительской сети.

В Cloud Shell убедитесь, что идентификатор вашего проекта настроен.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
consumerproject=YOUR-PROJECT-NAME
echo $consumerproject

Сеть VPC

Из Cloud Shell

gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom

Создайте подсеть для PSC

Из Cloud Shell

gcloud compute networks subnets create consumer-subnet --project=$consumerproject  --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1

Создайте подсеть для экземпляров виртуальных машин.

Из Cloud Shell

gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject  --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1

Создайте статический IP-адрес для доступа к опубликованному сервису.

Из Cloud Shell

gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100

Создать правила брандмауэра

Чтобы разрешить IAP подключаться к вашим экземплярам виртуальных машин, создайте правило брандмауэра, которое:

  • Применяется ко всем экземплярам виртуальных машин, доступ к которым вы хотите сделать с помощью IAP.
  • Разрешает входящий трафик из диапазона IP 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP.

Из Cloud Shell

gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

Хотя это и не требуется для PSC, создайте выходное правило брандмауэра для мониторинга трафика PSC потребителя к сервисному вложению производителя.

gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging

10. Создайте экземпляр потребительского теста 1.

Из Cloud Shell

gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud

11. Создайте экземпляр потребительского теста 2.

Из Cloud Shell

gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud

12. Создайте сервисный вложение

На предыдущем шаге вы скопировали строку вложения службы производителя в безопасное место, давайте вставим сохраненное значение в поле «target-service-attachment».

7abaccc4e24f1ef7.png

Из Cloud Shell

gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment

13. Проверка — потребитель

Мы будем использовать журналы CURL и брандмауэра для проверки связи между потребителем и производителем.

В проекте потребителя статические IP-адреса используются для установления связи с производителем. Сопоставление статического IP-адреса с правилом пересылки потребителя проверяется путем выполнения следующего синтаксиса.

1f3c90f1e139e906.png

В облаке потребительских VPC используйте оболочку, определите правило переадресации и статический IP-адрес.

gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1

Вывод ниже: мы будем использовать 10.0.60.100 для связи с производителем на более позднем этапе.

IPAddress: 10.0.60.100
creationTimestamp: '2021-09-30T21:13:54.124-07:00'
id: '3564572805904938477'
kind: compute#forwardingRule
labelFingerprint: 42WmSpB8rSM=
name: vpc-consumer-psc-fr
network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer
networkTier: PREMIUM
pscConnectionId: '36583161500548196'
pscConnectionStatus: ACCEPTED

Просмотр подключенной службы

В облачной консоли перейдите в «Сетевые службы» → «Подключение частной службы» → «Подключенные конечные точки» и просмотрите вновь созданную конечную точку.

206bc00297aaa260.png

Давайте войдем в потребительский экземпляр-1 и проверим доступ к опубликованной службе производителя.

В облачной оболочке откройте новую вкладку, нажав +

81f3210b29faebd3.png

Из облачной оболочки выполните следующие действия:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"

После входа в экземпляр Consumer-instance-1 выполните скручивание по IP-адресу правила переадресации 10.0.60.100.

Из облачной оболочки выполните следующие действия:

user@consumer-instance-1:~$ curl 10.0.60.100

Пример вывода

user@consumer-instance-1:~$ curl 10.0.60.100
{
  "cluster_name": "gke-psc-l4",
  "host_header": "10.0.60.100",
  "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal",
  "pod_name": "psc-ilb-588887dfdb-w7tbr",
  "pod_name_emoji": "🤷",
  "project_id": "prodorijectid",
  "timestamp": "2021-10-01T17:43:37",
  "zone": "us-central1-a"

Давайте войдем в потребительский экземпляр-2 и проверим доступ к опубликованной службе производителя.

В облачной оболочке откройте новую вкладку, нажав +

81f3210b29faebd3.png

Из облачной оболочки выполните следующие действия:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"

Из облачной оболочки выполните следующие действия:

user@consumer-instance-2:~$ curl 10.0.60.100

Пример вывода

deepakmichael@consumer-instance-2:~$ curl 10.0.60.100
{
  "cluster_name": "gke-psc-l4",
  "host_header": "10.0.60.100",
  "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal",
  "pod_name": "psc-ilb-588887dfdb-4jdql",
  "pod_name_emoji": "🧑🏿",
  "project_id": "prodproject",
  "timestamp": "2021-10-01T17:49:51",
  "zone": "us-central1-a"

14. Журналирование брандмауэра — выделенная проверка

С помощью обозревателя журналов проверьте, что правило брандмауэра "vpc-consumner-psc" фиксирует поток между экземпляром виртуальной машины и статическим IP-адресом.

  1. В Cloud Console выберите «Определить ведение журнала операций» → «Проводник журналов».
  2. В поле «Запрос» обновите запись ниже, указав свой потребительский проект , и выберите «Выполнить запрос».

logName:(projects/ yourconsumerprojectID /logs/compute.googleapis.com%2Ffirewall) И jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")

  1. Результаты запроса предоставляют следующее для каждого предоставленного снимка экрана

23e427b3060473.png

  1. Разверните журнал (jsonPayload → Connection) и найдите вывод, представленный ниже. Обратите внимание на dest_ip: 10.0.60.100 — это СТАТИЧЕСКИЙ TCP-IP-адрес, используемый для доступа к службе источника, а src_ip: 10.0.70.10 или 10.0.70.20 — это IP-адреса экземпляра виртуальной машины. Распоряжение разрешено.

2669743fd1f1cb0d.png

15. Валидация — продюсер

afe738fc869f0d6e.png

В проекте Producers убедитесь, что вложение службы успешно подключено. Перейдите в «Сетевые службы» → «Подключение частных служб» → «Опубликованные службы».

89ded87a63888f60.png

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

15966d47423ebc5f.png

16. Ограничить доступ к опубликованному сервису

1f3c90f1e139e906.png

На данный момент мы подтвердили, что оба экземпляра имеют доступ к опубликованным службам. Давайте создадим правило выходного брандмауэра, чтобы запретить потребительскому экземпляру-2 доступ к опубликованной службе.

По умолчанию GCP разрешает весь исходящий трафик, но запрещает весь входящий трафик. На следующих шагах мы создадим правило брандмауэра на основе ранее определенного сетевого тега «google2», который использовался при создании экземпляра-потребителя-2 для запрета доступа к опубликованной службе.

7fa2cda1dfec33a.png

Откройте новую вкладку облачной оболочки, нажав +, выполните следующее правило брандмауэра в облачной оболочке.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging

Теперь давайте проверим, может ли потребитель-экземпляр-2 получить доступ к опубликованной службе. Если время вашего сеанса истекло, вам нужно будет открыть новую облачную оболочку + и войти в виртуальную машину, как описано ниже.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"

Из облачной оболочки выполните следующие действия:

user@consumer-instance-2:~$ curl 10.0.60.100

Пример вывода

user@consumer-instance-2:~$ curl 10.0.60.100
curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out

Ведение журнала брандмауэра — проверка запрещена

С помощью обозревателя журналов проверьте, что правило брандмауэра «psc-endpoint-deny-egress» фиксирует поток между экземпляром виртуальной машины и статическим IP-адресом.

  1. В Cloud Console выберите «Определить ведение журнала операций» → «Проводник журналов».
  2. В поле «Запрос» обновите запись ниже, указав свой потребительский проект, и выберите «Выполнить запрос».

logName:(projects/ yourconsumerprojectID /logs/compute.googleapis.com%2Ffirewall) И jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")

  1. Результаты запроса предоставляют следующее для каждого предоставленного снимка экрана

83b4fc7348ac93cd.png

  1. Разверните журнал и найдите выходные данные, представленные ниже. Обратите внимание на dest_ip: 10.0.60.100 — это СТАТИЧЕСКИЙ TCP-IP, а src_ip: 10.0.70.10 или 10.0.70.20 — это IP-адрес(а) экземпляра виртуальной машины. В диспозиции отказано.

а344f75f67590655.png

17. Этапы очистки

Этапы очистки сети производителей

afe738fc869f0d6e.png

Удаление компонентов лаборатории из единой облачной оболочки в терминале проекта Producer.

gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet

gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet

gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet

gcloud compute networks delete gke-producer-l4-vpc --quiet

1f3c90f1e139e906.png

Этапы очистки потребительской сети

Удаление компонентов лаборатории из единой облачной оболочки в терминале потребительского проекта.

gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet

gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet

gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet

gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet

gcloud compute firewall-rules delete psclab-iap-consumer --quiet

gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet

gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet

gcloud compute firewall-rules delete vpc-consumer-psc --quiet

gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet

gcloud compute networks delete vpc-demo-consumer --quiet

18. Поздравляем!

Поздравляем с завершением работы над кодом.

Что мы рассмотрели

  • Преимущества подключения к частным услугам
  • Ключевые понятия для потребителей услуг
  • Ключевые концепции для производителей услуг
  • Создайте производственную среду
  • Предоставлять службу (среду производителя) через вложение службы.
  • Создайте потребительскую среду
  • Создайте правило переадресации в потребительской сети.
  • Подтвердите доступ потребителей
  • Включить контроль доступа политикой
  • Использовал выходное правило брандмауэра, чтобы заблокировать доступ к правилу переадресации потребителя.