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 вложения службы имеет следующий формат: 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-адреса, используемого для отправки запросов производителю службы, в дополнение к приложению целевой службы, которое сопоставляется с вложением службы производителя (опубликованной службой).
Теперь давайте посмотрим на сеть производителей. Обратите внимание, что сеть производителя не имеет сопоставления с сетью потребителей. Вместо этого сеть производителя содержит вложение службы (опубликованную службу), которая используется потребителем для услуг. Приложение службы производителя предоставляется входным ILB L4 GKE (опубликованная служба), обеспечивающим связь с модулями GKE и связанными приложениями.
Подсеть NAT используется, когда запрос отправляется из потребительской сети VPC, исходный IP-адрес потребителя преобразуется с помощью исходного NAT (SNAT) в IP-адрес, выбранный из одной из подсетей Private Service Connect.
Эти подсети нельзя использовать для таких ресурсов, как экземпляры виртуальных машин или правила переадресации. Подсети используются только для предоставления IP-адресов для SNAT входящих потребительских подключений.
Чтобы узнать больше о L4ILB для GKE Private Service Connect и получить прямой доступ к содержимому, используемому при создании этой лабораторной работы, обратитесь к следующему.
Самостоятельная настройка среды
- Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google, и вы можете обновить ее в любое время.
- Идентификатор проекта должен быть уникальным для всех проектов Google Cloud и неизменяемым (нельзя изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно он обозначается как
PROJECT_ID
), поэтому, если он вам не нравится, создайте другой случайный идентификатор или попробуйте свой собственный и посмотрите, доступен ли он. Затем он «замораживается» после создания проекта. - Существует третье значение — номер проекта , который используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Чтобы отключить ресурсы и не платить за выставление счетов за пределами этого руководства, следуйте инструкциям по «очистке», которые можно найти в конце лаборатории кода. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.
В консоли GCP щелкните значок Cloud Shell на верхней правой панели инструментов:
Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 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
Обратите внимание на следующее соглашение о кодах цветов:
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 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-адрес может отличаться.
Просмотр опубликованного сервиса
В облачной консоли перейдите в «Сетевые службы» → «Подключение частных служб» → «Опубликованные службы».
Определите службу с сетью, используемой в лаборатории, gke-producer-l4-vpc, обратите внимание на снимок экрана ниже, хотя значения службы и цели могут отличаться.
Нажмите на имя службы, и вы перейдете на экран ниже. Обратите внимание на детали вложения службы, указанные в основной информации. Также обратите внимание, что «Подключенные проекты» пусты, поскольку потребитель еще не зарегистрировался в службе. ACCEPT и REJECT останутся неактивными, поскольку для параметра подключения установлено значение «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. Создайте сервисный вложение
На предыдущем шаге вы скопировали строку вложения службы производителя в безопасное место, давайте вставим сохраненное значение в поле «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
Вывод ниже: мы будем использовать 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 и проверим доступ к опубликованной службе производителя.
В облачной оболочке откройте новую вкладку, нажав +
Из облачной оболочки выполните следующие действия:
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 и проверим доступ к опубликованной службе производителя.
В облачной оболочке откройте новую вкладку, нажав +
Из облачной оболочки выполните следующие действия:
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-адресом.
- В Cloud Console выберите «Определить ведение журнала операций» → «Проводник журналов».
- В поле «Запрос» обновите запись ниже, указав свой потребительский проект , и выберите «Выполнить запрос».
logName:(projects/ yourconsumerprojectID /logs/compute.googleapis.com%2Ffirewall) И jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Результаты запроса предоставляют следующее для каждого предоставленного снимка экрана
- Разверните журнал (jsonPayload → Connection) и найдите вывод, представленный ниже. Обратите внимание на dest_ip: 10.0.60.100 — это СТАТИЧЕСКИЙ TCP-IP-адрес, используемый для доступа к службе источника, а src_ip: 10.0.70.10 или 10.0.70.20 — это IP-адреса экземпляра виртуальной машины. Распоряжение разрешено.
15. Валидация — продюсер
В проекте Producers убедитесь, что вложение службы успешно подключено. Перейдите в «Сетевые службы» → «Подключение частных служб» → «Опубликованные службы».
Нажмите на услугу, чтобы увидеть ваш подключенный потребительский проект и его статус, как показано ниже.
16. Ограничить доступ к опубликованному сервису
На данный момент мы подтвердили, что оба экземпляра имеют доступ к опубликованным службам. Давайте создадим правило выходного брандмауэра, чтобы запретить потребительскому экземпляру-2 доступ к опубликованной службе.
По умолчанию GCP разрешает весь исходящий трафик, но запрещает весь входящий трафик. На следующих шагах мы создадим правило брандмауэра на основе ранее определенного сетевого тега «google2», который использовался при создании экземпляра-потребителя-2 для запрета доступа к опубликованной службе.
Откройте новую вкладку облачной оболочки, нажав +, выполните следующее правило брандмауэра в облачной оболочке.
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-адресом.
- В Cloud Console выберите «Определить ведение журнала операций» → «Проводник журналов».
- В поле «Запрос» обновите запись ниже, указав свой потребительский проект, и выберите «Выполнить запрос».
logName:(projects/ yourconsumerprojectID /logs/compute.googleapis.com%2Ffirewall) И 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. Поздравляем!
Поздравляем с завершением работы над кодом.
Что мы рассмотрели
- Преимущества подключения к частным услугам
- Ключевые понятия для потребителей услуг
- Ключевые концепции для производителей услуг
- Создайте производственную среду
- Предоставлять службу (среду производителя) через вложение службы.
- Создайте потребительскую среду
- Создайте правило переадресации в потребительской сети.
- Подтвердите доступ потребителей
- Включить контроль доступа политикой
- Использовал выходное правило брандмауэра, чтобы заблокировать доступ к правилу переадресации потребителя.