О практической работе
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
.