Cloud Run에 IAP 사용 설정

이 페이지에서는 IAP(Identity-Aware Proxy)를 사용하여 Cloud Run 서비스를 보호하는 방법을 설명합니다.

알려진 제한 사항

알려진 제한사항은 allUsers에 Cloud Run 서비스의 호출자 역할을 부여하도록 IAM을 구성해야 한다는 점입니다. 네트워크 수준에서 액세스를 계속 잠글 수 있으므로 모든 외부 요청이 IAP를 통해 승인되어야 합니다. 자세한 내용은 액세스를 제한하도록 Cloud Run 구성을 참조하세요. Cloud Run 서비스에 대한 프로젝트별 IAP 액세스 권한을 명시적으로 부여할 수 있도록 이 제한사항이 해결될 예정입니다.

시작하기 전에

Cloud Run에 IAP를 사용 설정하려면 다음이 필요합니다.

  • 결제가 사용 설정된 Cloud Console 프로젝트
  • 부하 분산기로 제공된 하나 이상의 Cloud Run 서비스 그룹
  • 모든 요청에 ID가 포함되었는지 확인하기 위한 애플리케이션 코드

IAP 사용 설정

콘솔

프로젝트의 OAuth 동의 화면을 구성하지 않은 경우 구성해야 합니다. OAuth 동의 화면에는 이메일 주소와 제품 이름이 필요합니다.

  1. OAuth 동의 화면으로 이동합니다.
  2. 지원 이메일에서 공개 연락처로 표시할 이메일 주소를 선택합니다. 이 이메일 주소는 개발자의 이메일 주소 또는 개발자가 소유하는 Google 그룹이어야 합니다.
  3. 표시하려는 애플리케이션 이름을 입력합니다.
  4. 선택적 세부정보를 추가합니다.
  5. 저장을 클릭합니다.

제품 이름 또는 이메일 주소와 같은 OAuth 동의 화면의 정보를 나중에 변경하려면, 위 단계를 반복하여 동의 화면을 구성합니다.

IAP 액세스 설정

  1. Identity-Aware Proxy 페이지로 이동합니다.
  2. IAP로 보호하려는 프로젝트를 선택합니다.
  3. HTTPS 리소스에서 구성원을 추가할 부하 분산기 백엔드 서비스 옆의 체크박스를 선택합니다.
  4. 오른쪽 패널에서 구성원 추가를 클릭합니다.
  5. 구성원 추가 대화상자에서 프로젝트에 대한 IAP 보안 웹 앱 사용자 역할이 있어야 하는 그룹 또는 개별 계정을 입력합니다. 다음 계정 종류가 구성원이 될 수 있습니다.

    • Google 계정: user@gmail.com - user@google.com 또는 일부 작업공간 도메인과 같은 Google Workspace 계정일 수도 있습니다.
    • Google Groups: admins@googlegroups.com
    • 서비스 계정: server@example.gserviceaccount.com
    • Google Workspace 도메인: example.com
  6. 역할 드롭다운 목록에서 Cloud IAP > IAP 보안 웹 앱 사용자를 선택합니다.

  7. 저장을 클릭합니다.

IAP 사용 설정 중

  1. IAP(Identity-Aware Proxy) 페이지의 HTTPS 리소스에서 액세스를 제한하려는 부하 분산기 백엔드 서비스를 찾습니다. 리소스에 IAP를 사용하려면 IAP 열에서 사용/사용 중지 스위치를 전환합니다. IAP를 사용 설정하려면 다음 안내를 따르세요.
    • 부하 분산기 프런트엔드 구성에서 하나 이상의 프로토콜이 HTTPS여야 합니다. 부하 분산기 설정에 대해 자세히 알아보세요.
    • compute.backendServices.update, clientauthconfig.clients.create, clientauthconfig.clients.getWithSecret 권한이 필요합니다. 이러한 권한은 프로젝트 편집자 역할과 같은 역할에 의해 부여됩니다. 자세한 내용은 IAP 보안 리소스에 대한 액세스 관리를 참조하세요.
  2. 표시되는 IAP 사용 창에서 사용을 클릭하여 IAP가 리소스를 보호할 것임을 확인합니다. IAP를 사용하면 부하 분산기에 대한 모든 연결에 로그인 사용자 인증 정보가 필요합니다. 프로젝트에서 IAP 보안 웹 앱 사용자 역할이 있는 계정만 액세스할 수 있습니다.

gcloud

  1. 프로그래매틱 방식으로 IAP용 OAuth 클라이언트 만들기의 안내에 따라 OAuth 동의 화면을 구성하고 OAuth 클라이언트를 만듭니다.
  2. OAuth 클라이언트 ID 및 보안 비밀을 저장합니다.
  3. 부하 분산기 백엔드 서비스가 전역인지 리전인지에 따라 전역 또는 리전 범위 명령어를 실행하여 IAP를 사용 설정합니다. 이전 단계의 OAuth 클라이언트 ID 및 보안 비밀을 사용합니다.

    전역 범위:

    gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    

    리전 범위:

    gcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    
    다음을 바꿉니다.

    • BACKEND_SERVICE_NAME: 백엔드 서비스 이름입니다.
    • CLIENT_ID: 이전 단계의 OAuth 클라이언트 ID입니다.
    • CLIENT_SECRET: 이전 단계의 OAuth 클라이언트 보안 비밀번호입니다.
    • REGION_NAME: IAP를 사용 설정할 리전입니다.

IAP를 사용 설정한 후 Google Cloud CLI를 사용하여 Identity and Access Management 역할 roles/iap.httpsResourceAccessor로 IAP 액세스 정책을 조작할 수 있습니다. 자세한 내용은 역할 및 권한 관리를 참조하세요.

액세스 제한을 위해 Cloud Run 구성

다음 단계를 완료하여 Cloud Run 서비스에 대한 액세스를 구성합니다.

  1. Cloud Run 서비스를 구성하고 인그레스를 내부 및 Cloud Load Balancing으로 설정합니다. 자세한 내용은 Cloud Run의 인그레스 제한을 참조하세요.

    이 단계를 통해 내부 클라이언트와 외부 부하 분산기만 Cloud Run 서비스를 호출할 수 있으며 공개 인터넷에서의 직접 요청이 차단됩니다.

  2. Cloud Run 서비스의 경우 allUsers에 호출자 역할을 부여합니다. 자세한 내용은 공개(인증되지 않은) 액세스 허용을 참조하세요.

    이 단계는 Cloud Run이 자체적으로 요청을 인증 및 승인하지 않도록 구성하므로 IAP 구성이 올바르게 작동하는지 확인하는 데 중요합니다. 대신 IAP가 인증 및 승인을 완료합니다.

이 구성을 사용하면 Cloud Run용 인그레스 제한의 정의에 따라 내부로 간주되는 모든 클라이언트가 인증 없이 Cloud Run 서비스에 액세스할 수 있습니다. 외부 부하 분산기를 통해 들어오는 다른 모든 클라이언트는 IAP를 통해 인증합니다. 이는 알려진 제한 사항이며 향후에 해결될 예정입니다.