1. Введение
Обзор
В этом практическом руководстве показано, как включить Identity-Aware Proxy (IAP) в Cloud Run и защитить трафик, предназначенный для сервиса Cloud Run, путем маршрутизации к IAP для аутентификации. Включив IAP в Cloud Run, вы можете маршрутизировать трафик одним щелчком мыши со всех путей входящего трафика, включая стандартные URL-адреса run.app и балансировщики нагрузки.
В этом практическом задании вы развернете службу контейнера hello. Доступ к службе имеют только пользователи, добавленные в список разрешенных с помощью IAP.
Для получения информации о других известных ограничениях, пожалуйста, ознакомьтесь с документацией IAP on Cloud Run .
Что вы узнаете
- Как включить встроенные покупки в один клик для Cloud Run
- Как предоставить пользователю доступ к сервису Cloud Run через IAP
2. Прежде чем начать
Включить API
Прежде чем начать использовать этот практический пример, активируйте следующие API, выполнив следующие команды:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. Создайте переменные среды.
Установите переменные среды, которые будут использоваться на протяжении всего этого практического занятия.
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>
export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")
4. Разверните службу с включенным IAP.
Создайте учетную запись службы (используемую в качестве идентификатора службы Cloud Run), выполнив следующую команду:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
Разверните образ контейнера hello с включенной функцией IAP.
gcloud beta run deploy ${SERVICE_NAME} \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--region=${REGION} \
--service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
--no-allow-unauthenticated \
--iap
Примечание: если вы попытаетесь получить доступ к приложению сейчас, вы увидите страницу с ошибкой « You don't have access ». На следующем шаге вы предоставите пользователю доступ через IAP.
5. Настройка контроля доступа к точкам доступа (IAP).
Создайте агент службы IAP .
gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}
Назначьте учетной записи службы IAP роль Cloud Run Invoker.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"
Предоставьте пользователю доступ, разрешив определенным пользователям или группам доступ через встроенные покупки (IAP).
EMAIL_ADDRESS=<YOUR_EMAIL>
gcloud beta iap web add-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor \
--condition=None
Примечание: При желании вы также можете использовать group:your-group@example.com в параметре member.
6. Протестируйте приложение.
Подтвердите доступ к приложению.
Получите URL-адрес примера сервиса Cloud Run.
gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'
Откройте URL-адрес в браузере, и вы увидите сообщение «Запуск завершен! Поздравляем, вы успешно развернули образ контейнера в Cloud Run».
Убедитесь, что доступ к приложению удален.
Вы можете удалить свой доступ к приложению, выполнив следующую команду.
gcloud beta iap web remove-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor
Подождите несколько минут, пока политика IAM распространится. Теперь попробуйте открыть URL-адрес в браузере, и вы увидите страницу с ошибкой « You don't have access ».
7. Поздравляем!
Поздравляем с завершением практического занятия!
Рекомендуем ознакомиться с документацией Cloud Run IAP .
Что мы рассмотрели
- Как включить встроенные покупки в один клик для Cloud Run
- Как предоставить пользователю доступ к сервису Cloud Run через IAP
8. Уборка
Чтобы избежать непреднамеренных списаний средств, например, если службы Cloud Run будут случайно запущены больше раз, чем предусмотрено вашим ежемесячным лимитом на запуск Cloud Run в бесплатном тарифе , вы можете удалить службу Cloud Run iap-example созданную вами на шаге 6.
Чтобы удалить службу Cloud Run, перейдите в консоль Cloud Run по адресу https://console.cloud.google.com/run и удалите службу iap-example .
Чтобы удалить весь проект, перейдите в раздел «Управление ресурсами» , выберите свой проект и нажмите «Удалить». Если вы удалите проект, вам потребуется изменить проекты в вашем Cloud SDK. Вы можете просмотреть список всех доступных проектов, выполнив gcloud projects list .