Как использовать прокси-сервер Identity Aware Proxy (IAP) в один клик с Cloud Run

Как использовать прокси-сервер Identity Aware Proxy (IAP) в один клик с Cloud Run

О практической работе

subjectПоследнее обновление: июн. 12, 2025
account_circleАвтор: сотрудник Google

1. Введение

Обзор

Эта кодовая лаборатория проведет вас через процесс включения Identity-Aware Proxy из Cloud Run и защиты трафика, направляемого в службу Cloud Run, путем маршрутизации в IAP для аутентификации. Включив IAP из Cloud Run, вы сможете маршрутизировать трафик одним щелчком мыши со всех входящих путей, включая URL-адреса run.app по умолчанию и балансировщики нагрузки.

В этой кодовой лаборатории вы развернете службу контейнера hello. Только пользователи, которые были добавлены в белый список с помощью IAP, имеют доступ к службе.

Информацию о других известных ограничениях см. в документации IAP on Cloud Run .

Чему вы научитесь

  • Как включить функцию IAP в один клик для 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}

Назначьте роль Cloud Run Invoker учетной записи службы IAP.

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 .

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

  • Как включить функцию IAP в один клик для Cloud Run
  • Как предоставить пользователю доступ к сервису Cloud Run через IAP

8. Очистить

Чтобы избежать непреднамеренных расходов, например, если службы Cloud Run будут непреднамеренно вызваны больше раз, чем ваш ежемесячный лимит вызовов Cloud Run на бесплатном уровне , вы можете удалить iap-example службы Cloud Run, созданный на шаге 6.

Чтобы удалить службу Cloud Run, перейдите в облачную консоль Cloud Run по адресу https://console.cloud.google.com/run и удалите службу iap-example .

Чтобы удалить весь проект, перейдите в Управление ресурсами , выберите свой проект и нажмите Удалить. Если вы удалите проект, вам нужно будет изменить проекты в вашем Cloud SDK. Вы можете просмотреть список всех доступных проектов, запустив gcloud projects list .