Cloud Run에 IAP(Identity-Aware Proxy) 구성

이 페이지에서는 Cloud Run에서 Identity-Aware Proxy를 사용 설정하고 인증을 위해 IAP로 라우팅하여 Cloud Run 서비스로 연결되는 트래픽을 보호하는 방법을 설명합니다. Cloud Run에서 IAP를 사용 설정하면 기본 run.app URL 및 부하 분산기를 비롯한 모든 인그레스 경로에서 클릭 한 번으로 트래픽을 라우팅할 수 있습니다.

알려진 제한사항

  • 프로젝트가 조직 내에 있어야 합니다.
  • ID는 동일한 조직에 속해 있어야 합니다.
  • 부하 분산기와 Cloud Run 서비스 모두에서 IAP를 구성할 수는 없습니다.
  • IAP가 사용 설정된 경우 Pub/Sub과 같은 일부 통합이 작동하지 않을 수 있습니다.

시작하기 전에

Cloud Run에서 IAP 사용 설정

Cloud Run에서 IAP를 사용 설정할 수 있습니다.

동일한 Cloud Run 서비스에서 IAP와 IAM을 모두 사용하는 경우 다음 조건에 유의하세요.

  • IAP 및 IAM 검사가 모두 실행됩니다.

  • IAP 확인이 먼저 실행되고 IAP 구성에 따라 요청을 수락하거나 차단합니다.

  • 요청이 IAP 검사를 통과하면 IAP는 자체 서비스 계정을 사용하여 Cloud Run의 IAM 검사에 인증합니다.

  • IAP 확인이 먼저 실행되므로 Pub/Sub와 같은 일부 서비스가 IAP에 올바르게 인증하지 못할 수 있습니다.

Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 Cloud Run에서 IAP를 사용 설정합니다.

콘솔

Cloud Run에서 IAP를 사용 설정하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Cloud Run 페이지로 이동합니다.

    Cloud Run으로 이동

  2. 배포할 새 서비스를 구성하는 경우 컨테이너 배포 > 서비스를 선택합니다. 기존 서비스를 구성하고 배포하는 경우 서비스를 클릭한 후 새 버전 수정 및 배포를 클릭합니다.

  3. 새 서비스를 구성하는 경우 필요에 따라 초기 서비스 설정 페이지를 작성한 후 IAP (Identity-Aware Proxy)를 사용한 고급 인증을 선택합니다.

  4. 기존 서비스를 구성하고 배포하는 경우 서비스를 클릭한 다음 IAP (Identity Aware Proxy)를 사용한 고급 인증을 선택합니다.

  5. 정책 수정을 클릭하여 컨텍스트 인식 액세스 정책을 만듭니다.

    • 하나 이상의 주 구성원과 각 주 구성원이 애플리케이션 액세스를 위해 충족해야 하는 액세스 수준(선택사항)을 추가합니다.

    • 저장을 클릭합니다.

  6. 저장을 클릭합니다.

gcloud

Cloud Run에서 직접 IAP를 사용 설정하려면 앱을 배포할 때 --iap 플래그를 추가합니다.

  1. 다음 명령어 중 하나를 사용하여 Cloud Run 서비스를 배포합니다.

    새 서비스의 경우:

    gcloud beta run deploy SERVICE_NAME \
    --region=REGION \
    --image=IMAGE_URL \
    --no-allow-unauthenticated \
    --iap

    기존 서비스의 경우:

    gcloud beta run services update SERVICE_NAME \
    --region=REGION \
    --iap

    다음과 같이 바꿉니다.

    • SERVICE_NAME: Cloud Run 서비스 이름.
    • REGION을 Cloud Run 리전 이름으로 바꿉니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest)로 바꿉니다. Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
  2. 서비스가 IAP를 사용하도록 구성되었는지 확인하려면 다음 명령어를 실행합니다.

    gcloud beta run services describe SERVICE_NAME

    출력에 다음 문자열이 포함됩니다.

    Iap Enabled: true

이제 구성된 Cloud Run 서비스로 연결되는 모든 트래픽을 인증을 위해 IAP로 라우팅한 후 컨테이너로 전달합니다.

Cloud Run에서 IAP 사용 중지

Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 IAP를 사용 중지할 수 있습니다.

콘솔

Cloud Run에서 IAP를 사용 중지하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 Cloud Run 페이지로 이동합니다.

    Cloud Run으로 이동

  2. 수정하려는 기존 서비스를 클릭합니다.

  3. 보안을 클릭한 다음 IAP (Identity-Aware Proxy)를 사용한 고급 인증을 선택 해제합니다.

  4. 저장을 클릭합니다.

gcloud

Cloud Run에서 직접 IAP를 사용 중지하려면 앱을 배포할 때 --no-iap 플래그를 추가합니다.

  1. 다음 명령어 중 하나를 사용하여 Cloud Run 서비스를 배포합니다.

    새 서비스의 경우:

    gcloud beta run deploy SERVICE_NAME \
    --region=REGION \
    --image=IMAGE_URL \
    --no-iap

    기존 서비스의 경우:

    gcloud beta run services update SERVICE_NAME \
    --region=REGION \
    --no-iap

    다음과 같이 바꿉니다.

    • SERVICE_NAME: Cloud Run 서비스 이름.
    • REGION을 Cloud Run 리전 이름으로 바꿉니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: us-docker.pkg.dev/cloudrun/container/hello:latest)로 바꿉니다. Artifact Registry를 사용하는 경우 저장소 REPO_NAME이 이미 생성되어 있어야 합니다. URL의 형식은 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG입니다.
  2. 서비스가 더 이상 IAP를 사용하도록 구성되지 않았는지 확인하려면 다음 명령어를 실행합니다.

    gcloud beta run services describe SERVICE_NAME

    출력에 더 이상 다음 문자열이 포함되어서는 안 됩니다.

    Iap Enabled: true

더 이상 구성된 Cloud Run 서비스로 연결된 모든 트래픽을 인증을 위해 IAP로 라우팅하지 않고 컨테이너로 전달합니다.

사용자 또는 그룹 액세스 관리

기본적으로 Cloud Run용 IAP는 Google 계정으로 조직 내 ID를 사용합니다. Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 Cloud Run 서비스에 대한 액세스 권한을 추가하거나 삭제할 수 있습니다.

콘솔

액세스 권한을 추가하거나 삭제하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Cloud Run 페이지로 이동합니다.

    Cloud Run으로 이동

  2. 수정하려는 기존 서비스를 클릭한 다음 보안을 클릭합니다.

  3. IAP에서 정책 수정을 클릭합니다.

  4. 액세스 권한을 추가하려면 주 구성원과 원하는 경우 추가할 액세스 수준을 입력합니다.

  5. 기존 주 구성원의 액세스 권한을 삭제하려면 액세스 수준 옆에 있는 정책 삭제 아이콘을 클릭합니다.

  6. 저장을 클릭합니다.

gcloud

조직 내 개별 사용자 또는 그룹의 Cloud Run 서비스 액세스 권한을 추가하거나 삭제하려면 다음 명령어 중 하나를 실행합니다.

  • 액세스 권한을 추가하려면 다음 단계를 따르세요.

    gcloud beta iap web add-iam-policy-binding \
    --member=user:USER_EMAIL \
    --role=roles/iap.httpsResourceAccessor \
    --region=REGION \
    --resource-type=cloud-run \
    --service=SERVICE_NAME
  • 액세스 권한을 삭제하려면 다음 단계를 따르세요.

    gcloud beta iap web remove-iam-policy-binding \
    --member=user:USER_EMAIL \
    --role=roles/iap.httpsResourceAccessor \
    --region=REGION \
    --resource-type=cloud-run \
    --service=SERVICE_NAME

    다음과 같이 바꿉니다.

    • USER_EMAIL를 사용자 이메일 주소로 바꿉니다.
    • REGION을 Cloud Run 리전 이름으로 바꿉니다.
    • SERVICE_NAME: Cloud Run 서비스 이름.

문제 해결

서비스 에이전트 실패로 인해 IAM 오류가 발생함

새 프로젝트에서 IAP를 처음 사용 설정하면 다음과 같은 오류가 발생할 수 있습니다.

Setting IAM permissions failed

Cloud Run 서비스 에이전트가 실패했기 때문입니다. 이 문제를 해결하려면 IAP를 다시 사용 설정하거나 IAM 정책을 수동으로 설정합니다.

다음 단계