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

Рисунок 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 подключения к сервису. URI подключения к сервису имеет следующий формат: projects/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-адреса, используемого для отправки запросов производителю услуг, а также целевого адреса подключения к услуге, который сопоставляется с адресом подключения к услуге производителя (опубликованной услугой).

Теперь давайте рассмотрим сеть производителей. Обратите внимание, что сеть производителей не имеет сопоставления с сетью потребителей; вместо этого сеть производителей содержит сервисное соединение (опубликованное сервисное соединение), которое используется потребителем для получения услуг. Сервисное соединение производителя предоставляется через входящий балансировщик нагрузки L4 GKE (опубликованное сервисное соединение), обеспечивающий связь с подами GKE и связанными приложениями.
Подсеть NAT используется, когда запрос отправляется из потребительской сети VPC; исходный IP-адрес потребителя преобразуется с помощью NAT источника (SNAT) в IP-адрес, выбранный из одной из подсетей Private Service Connect.
Эти подсети нельзя использовать для таких ресурсов, как экземпляры виртуальных машин или правила переадресации. Подсети используются только для предоставления IP-адресов для SNAT входящих подключений потребителей.
Чтобы узнать больше о L4ILB для GKE Private Service Connect и получить прямой доступ к материалам, использованным для создания этой лабораторной работы, обратитесь к следующей ссылке.
Настройка среды для самостоятельного обучения
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



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

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

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории можно выполнять с помощью обычного браузера.
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
Обратите внимание на следующую систему цветовой кодировки:

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

Сеть 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 для публикации сервиса , вы можете создать подсети в процессе этой процедуры.
Для получения информации о подсетях 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 в Cloud Shell.
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» .
Проверка производителя
Просмотр сведений об услугах, прилагаемых к договору.
Вы можете просмотреть подробные сведения о вложении службы, используя следующую команду в облачной оболочке.
kubectl describe serviceattachment emoji-sa
Посмотреть GKE L4 ILB
В облачной консоли перейдите в раздел «Сетевые службы» → «Балансировка нагрузки» → «Фронтенды».
Определите IP-адрес внешнего интерфейса, который соответствует ранее определенной подсети узла 192.168.10.0/24 (см. скриншот ниже, ваш IP-адрес может отличаться).

Просмотреть опубликованную услугу
В консоли облака перейдите в раздел «Сетевые службы» → «Подключение к частным службам» → «Опубликованные службы».
Определите службу, используемую в лабораторной работе, с помощью сети gke-producer-l4-vpc (см. скриншот ниже), хотя значения Service и Target могут отличаться.

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


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

В следующем разделе потребительская 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. Создайте приложение к услуге.
На предыдущем шаге вы скопировали строку "Producer Service Attachment" в надежное место, давайте вставим сохраненное значение в поле "target-service-attachment".

Из 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-адреса с правилом переадресации потребителя проверяется с помощью следующего синтаксиса.

В облачной среде VPC для потребителей используйте командную строку, чтобы определить правило пересылки и статический IP-адрес.
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
В приведенном ниже выводе мы будем использовать IP-адрес 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
Просмотреть подключенную услугу
В консоли облака перейдите в раздел «Сетевые службы» → «Подключение к частной службе» → «Подключенные конечные точки» и просмотрите созданную конечную точку.

Давайте войдем в экземпляр потребителя 1 и проверим доступ к опубликованной службе производителя.
В Cloud Shell откройте новую вкладку, нажав на значок «+».

В оболочке Cloud Shell выполните следующие действия:
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 выполните команду curl по IP-адресу правила переадресации 10.0.60.100.
В оболочке Cloud Shell выполните следующие действия:
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"
Давайте войдем в consumer-instance-2 и проверим доступ к опубликованной службе Producer.
В Cloud Shell откройте новую вкладку, нажав на значок «+».

В оболочке Cloud Shell выполните следующие действия:
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"
В оболочке Cloud Shell выполните следующие действия:
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. Ведение журналов брандмауэра - Выделенная проверка
С помощью Logs Explorer можно убедиться, что правило брандмауэра "vpc-consumner-psc" перехватывает поток данных между экземпляром виртуальной машины и статическим IP-адресом.
- В консоли Cloud Console выберите «Определение операций ведения журналов» → «Проводник журналов».
- В поле «Запрос» обновите запись ниже, указав ваш потребительский проект , и выберите «Выполнить запрос».
logName:(projects/ yourconsumerprojectID /logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Результаты запроса, согласно предоставленному скриншоту, содержат следующую информацию.

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

15. Валидация - Производитель

В проекте Producers убедитесь, что подключение к службе успешно установлено. Перейдите в раздел Network Services → Private Service Connect → Published Services.

При нажатии на услугу отображается информация о вашем проекте подключения к сети и его статусе, как показано ниже.

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

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

Откройте новую вкладку Cloud Shell, нажав на кнопку «+», и выполните следующее правило брандмауэра в Cloud Shell.
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
Теперь давайте проверим, может ли consumer-instance-2 получить доступ к опубликованной службе. Если время вашей сессии истекло, вам потребуется открыть новую оболочку cloud shell и войти в виртуальную машину, как описано ниже.
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"
В оболочке Cloud Shell выполните следующие действия:
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
Журнал событий брандмауэра - Отказано в проверке
С помощью Logs Explorer можно проверить, что правило брандмауэра "psc-endpoint-deny-egress" перехватывает поток данных между экземпляром виртуальной машины и статическим IP-адресом.
- В консоли Cloud Console выберите «Определение операций ведения журналов» → «Проводник журналов».
- В поле «Запрос» обновите запись ниже, указав ваш потребительский проект, и выберите «Выполнить запрос».
logName:(projects/ yourconsumerprojectID /logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- Результаты запроса, согласно предоставленному скриншоту, содержат следующую информацию.

- Разверните журнал и найдите приведенный ниже вывод. Обратите внимание на dest_ip: 10.0.60.100 — это статический TCP IP-адрес, а src_ip: 10.0.70.10 или 10.0.70.20 — это IP-адрес(а) экземпляра(ов) виртуальной машины. Разрешение отклонено.

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

Из единой облачной оболочки в терминале проекта 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

этапы очистки потребительской сети
Из единой облачной оболочки в терминале проекта «Потребитель» удалите компоненты лаборатории.
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. Поздравляем!
Поздравляем с завершением практического занятия!
Что мы рассмотрели
- Преимущества подключения к частной службе
- Ключевые понятия для потребителей услуг
- Ключевые понятия для производителей услуг
- Создайте среду для производителя.
- Предоставьте доступ к сервису (среде производителя) через подключение к сервису.
- Создайте потребительскую среду
- Создайте правило пересылки в сети потребителя.
- Подтвердите доступ потребителей
- Включить управление доступом к политикам
- Использовал правило межсетевого экрана для исходящего трафика, чтобы заблокировать доступ к правилу переадресации для потребителя.