IAP(Identity-Aware Proxy) 개요

이 페이지에서는 Google Cloud 글로벌 서비스인 IAP(Identity-Aware Proxy)의 기본 개념을 설명합니다.

IAP를 사용하면 HTTPS로 액세스한 애플리케이션에 대한 중앙 승인 레이어를 설정할 수 있으므로 네트워크 수준 방화벽을 사용하지 않고 애플리케이션 수준 액세스 제어 모델을 사용할 수 있습니다.

IAP 정책은 조직 전체에서 확장됩니다. 중앙에서 액세스 정책을 정의하고 이를 모든 애플리케이션 및 리소스에 적용할 수 있습니다. 정책 생성 및 적용을 위해 전용 팀을 할당할 경우, 모든 애플리케이션에서의 잘못된 정책 정의 또는 구현으로부터 프로젝트를 보호할 수 있습니다.

IAP 사용 시기

애플리케이션 및 리소스에 대한 액세스 제어 정책을 시행하려는 경우 IAP를 사용합니다. IAP는 서명된 헤더 또는 App Engine 표준 환경 Users API와 함께 작동하여 앱을 보호합니다.IAP를 사용하면 그룹 기반의 애플리케이션 액세스를 설정할 수 있습니다. 계약업체가 아닌 직원만 리소스에 액세스하거나 특정 부서만 액세스하도록 설정할 수 있습니다.

IAP 작동 방식

Cloud IAP로 애플리케이션 또는 리소스가 보호되는 경우, 올바른 Identity and Access Management(IAM) 역할이 있는 주 구성원, 일명 사용자가 이 프록시를 통해서만 액세스할 수 있습니다. IAP를 통해 애플리케이션 또는 리소스에 대한 액세스 권한을 사용자에게 부여할 경우, VPN 없이 사용 중인 제품으로 구현된 미세 조정된 액세스 제어가 적용됩니다. 사용자가 IAP 보안 리소스에 액세스하려고 시도하면 IAP는 인증 및 승인 검사를 수행합니다.

App Engine
Cloud IAP를 사용할 때 App Engine의 요청 경로 다이어그램
Cloud Run
Cloud IAP를 사용할 때 Cloud Run의 요청 경로 다이어그램
Compute Engine
Cloud IAP를 사용할 때 Compute Engine 및 Kubernetes Engine 요청 경로 다이어그램
GKE
Cloud IAP를 사용할 때 Compute Engine 및 Kubernetes Engine 요청 경로 다이어그램
온프레미스
Cloud IAP 사용 시 온프레미스 앱에 대한 요청 경로 다이어그램

인증

Google Cloud 리소스에 대한 요청은 App Engine, Cloud Load Balancing(외부 및 내부 HTTP(S) 부하 분산)을 통해 수행됩니다. 이러한 제품의 서비스 제공 인프라 코드는 앱 또는 백엔드 서비스에 대해 IAP가 사용 설정되었는지 확인합니다. IAP가 사용 설정된 경우 보호되는 리소스 정보가 IAP 인증 서버로 전송됩니다. 여기에는 요청 헤더 또는 쿠키에 있는 Google Cloud 프로젝트 번호, 요청 URL, 모든 IAP 사용자 인증 정보와 같은 정보가 포함됩니다.

그런 후 IAP가 사용자의 브라우저 사용자 인증 정보를 확인합니다. 아무 것도 존재하지 않으면, 이후 로그인을 위해 브라우저 쿠키에 토큰을 저장하는 OAuth 2.0 Google 계정 로그인 과정으로 사용자가 리디렉션됩니다. 기존 사용자에 대해 Google 계정을 만들어야 할 경우, Google 클라우드 디렉토리 동기화를 사용하여 Active Directory 또는 LDAP 서버와 동기화할 수 있습니다.

요청 사용자 인증 정보가 유효하면, 인증 서버가 해당 사용자 인증 정보를 사용하여 사용자의 ID(이메일 주소 및 사용자 ID)를 가져옵니다. 그런 다음 인증 서버가 ID를 사용하여 사용자의 IAM 역할을 확인하고 사용자에게 리소스에 액세스할 권한이 있는지 확인합니다.

Compute Engine 또는 Google Kubernetes Engine을 사용하는 경우 VM(가상 머신)의 애플리케이션 제공 포트에 액세스할 수 있는 사용자가 IAP 인증을 우회할 수 있습니다. Compute Engine 및 GKE 방화벽 규칙은 IAP 보안 애플리케이션과 동일한 VM에서 실행되는 코드 액세스에 대한 보호를 제공할 수 없습니다. 방화벽 규칙은 다른 VM의 액세스에 대한 보호를 제공할 수 있지만, 올바르게 구성되어 있어야 합니다. 보안을 위한 개발자 책임을 알아보세요.

Cloud Run을 사용할 경우 자동 할당된 URL에 액세스할 수 있는 사용자는 IAP 인증을 우회할 수 있습니다. 인그레스 제어는 올바르게 구성된 경우에 한해 부하 분산을 사용하도록 액세스를 제한할 수 있습니다. 보안을 위한 개발자 책임에 대해 자세히 알아보세요.

승인

인증 후에는 IAP가 관련 IAM 정책을 적용하여 사용자가 요청된 리소스에 액세스하도록 승인되었는지 여부를 확인합니다. 리소스가 존재하는 Google Cloud 콘솔 프로젝트에 대해 IAP 보안 웹 앱 사용자 역할이 사용자에게 있으면, 애플리케이션 액세스가 승인됩니다. IAP 보안 웹 앱 사용자 역할 목록을 관리하려면 Google Cloud 콘솔의 IAP 패널을 사용하세요.

리소스에 대해 IAP를 사용하면 OAuth 2.0 클라이언트 ID 및 보안 비밀이 자동으로 생성됩니다. 자동으로 생성된 OAuth 2.0 사용자 인증 정보를 삭제하면 IAP가 올바르게 작동하지 않습니다. OAuth 2.0 사용자 인증 정보는 Google Cloud 콘솔 API 및 서비스에서 보고 관리할 수 있습니다.

개발자 책임

IAP는 App Engine, Cloud Load Balancing(HTTPS) 또는 내부 HTTP 부하 분산에 대한 모든 요청의 인증 및 승인을 보호합니다. IAP는 프로젝트 내의 다른 VM과 같이, 프로젝트 내의 활동에 대한 보호를 제공하지 않습니다.

보안을 위해서는 다음과 같은 예방 조치를 취해야 합니다.

  • 서비스 제공 인프라에서 시작되지 않는 트래픽에 대해 보호 기능을 제공하도록 방화벽 및 부하 분산기를 구성합니다.
    • 또는 Cloud Run을 사용하는 경우 인그레스 제어를 사용하여 액세스를 제한할 수 있습니다.
  • 서명된 헤더 또는 App Engine 표준 환경 Users API를 사용합니다.

다음 단계