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 및 서비스에서 보고 관리할 수 있습니다.

컨텍스트 인식 액세스

승인 단계의 일부로 컨텍스트 인식 액세스를 사용하여 다음 유형의 리소스에 대한 안전한 액세스를 제공할 수 있습니다.

Google Cloud 콘솔 및 API
  • Google Cloud에 대한 인프라 액세스를 보호하는 첫 번째 방어선입니다.
  • 사용자에 대한 고급 컨텍스트 인식 Google Cloud 액세스
가상 머신 (VM)
  • Google Cloud 및 기타 클라우드의 VM에 대한 관리 SSH/RDP 액세스를 사용 설정합니다.
  • 강력한 컨텍스트 인식 제어를 구현하여 지정된 관리자만 액세스하도록 제한할 수 있습니다.
웹 애플리케이션
  • Google Cloud 및 기타 클라우드에 호스팅된 웹 애플리케이션에 대한 승인 및 인증을 제공합니다.
  • 무단 액세스 및 데이터 손실을 방지하기 위해 지속적인 승인을 제공합니다.

개발자 책임

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

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

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

다음 단계