이 Codelab 정보
1. 소개
개요
이 Codelab에서는 Cloud Run에서 Identity-Aware Proxy를 사용 설정하고 인증을 위해 IAP로 라우팅하여 Cloud Run 서비스로 연결되는 트래픽을 보호하는 방법을 설명합니다. Cloud Run에서 IAP를 사용 설정하면 기본 run.app URL 및 부하 분산기를 비롯한 모든 인그레스 경로에서 클릭 한 번으로 트래픽을 라우팅할 수 있습니다.
이 Codelab에서는 hello 컨테이너 서비스를 배포합니다. IAP를 사용하여 허용 목록에 추가된 사용자만 서비스에 액세스할 수 있습니다.
기타 알려진 제한사항은 Cloud Run의 IAP 문서를 확인하세요.
학습할 내용
- Cloud Run에 원클릭 IAP를 사용 설정하는 방법
- IAP를 통해 Cloud Run 서비스에 대한 사용자 ID 액세스 권한을 부여하는 방법
2. 시작하기 전에
API 사용 설정
이 Codelab을 사용하기 전에 다음을 실행하여 다음 API를 사용 설정합니다.
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. 환경 변수 만들기
이 Codelab 전체에서 사용할 환경 변수 설정
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 서비스 ID로 사용되는 서비스 계정을 만듭니다.
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
IAP가 사용 설정된 hello 컨테이너 이미지를 배포합니다.
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 호출자 역할을 할당합니다.
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을 사용할 수도 있습니다.
6. 애플리케이션 테스트
앱 액세스 확인
Cloud Run 서비스 예시의 URL을 가져옵니다.
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. 축하합니다.
Codelab을 완료했습니다. 축하합니다.
Cloud Run IAP 문서를 검토하는 것이 좋습니다.
학습한 내용
- Cloud Run에 원클릭 IAP를 사용 설정하는 방법
- IAP를 통해 Cloud Run 서비스에 대한 사용자 ID 액세스 권한을 부여하는 방법
8. 삭제
Cloud Run 서비스가 무료 등급의 월간 Cloud Run 호출 할당량보다 실수로 더 많이 호출되는 경우와 같이 의도치 않은 청구를 방지하려면 6단계에서 만든 Cloud Run 서비스 iap-example
를 삭제하면 됩니다.
Cloud Run 서비스를 삭제하려면 https://console.cloud.google.com/run의 Cloud Run Cloud 콘솔로 이동하여 iap-example
서비스를 삭제합니다.
전체 프로젝트를 삭제하려면 리소스 관리로 이동하여 프로젝트를 선택하고 삭제를 선택합니다. 프로젝트를 삭제하면 Cloud SDK에서 프로젝트를 변경해야 합니다. gcloud projects list
를 실행하여 사용 가능한 모든 프로젝트 목록을 볼 수 있습니다.