IAP 맞춤설정

이 문서에서는 IAP(Identity-Aware Proxy) 설정을 맞춤설정하는 방법을 설명합니다. 이러한 설정으로 다음과 같은 동작을 제어할 수 있습니다.

  • GKE Enterprise와 Istio on Google Kubernetes Engine의 호환성
  • CORS 실행 전 요청 처리
  • 사용자 인증 방식
  • 액세스가 거부되면 사용자에게 표시되는 오류 페이지

설정 관리

Google Cloud 콘솔, IAP API, Google Cloud CLI를 사용하여 부하 분산기 및 App Engine 앱에서 IAP 설정을 보고 업데이트할 수 있습니다.

폴더, 프로젝트, 조직을 포함한 모든 리소스의 IAP 설정을 업데이트하려면 Google Cloud CLI 또는 API를 사용합니다.

IAP에서 설정을 관리하려면 다음 안내를 따르세요.

콘솔

Google Cloud 콘솔을 사용하여 설정을 보고 수정하려면 다음 안내를 따르세요.

  1. Identity-Aware Proxy 페이지로 이동합니다.
    Identity-Aware Proxy 페이지로 이동
  2. 애플리케이션 탭에서 리소스를 찾습니다.
  3. 작업 더보기 메뉴 를 열고 설정을 클릭합니다.
  4. 저장을 클릭합니다.

gcloud

Google Cloud CLI를 사용하여 설정을 가져오고 수정하려면 gcloud iap settings getgcloud iap settings set 명령어를 다음과 같이 사용합니다.

  • 프로젝트, 폴더 또는 조직에 대한 설정을 가져오려면 다음 명령어를 사용합니다. Google Cloud 콘솔 또는 gcloud CLI를 사용하여 IAP 설정을 구성하려면 IAP 맞춤설정을 참조하세요.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
  • 프로젝트에서 특정 IAP 리소스 유형에 대한 설정을 가져오려면 다음 안내를 따르세요.
gcloud iap settings get --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME
  • 프로젝트에서 프로젝트, 폴더 또는 조직 또는 IAP 리소스 유형에 대한 설정을 설정하려면 원하는 새 설정이 포함된 JSON 또는 YAML 파일을 작성하고 파일 경로를 지정합니다. 자세한 내용은 gcloud iap settings set 주제를 참조하세요.
gcloud iap settings set SETTING_FILE --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME

API

IAP API를 사용하여 설정을 가져오고 수정하려면 GET 또는 PATCH HTTP 동사를 사용하여 Google Cloud에서 원하는 리소스 엔드포인트에 요청하세요. :iapSettings 경로 서픽스, 리소스 경로(리소스 및 권한에 자세히 설명되어 있음) 및 적절한 HTTP 메서드를 결합하여 설정을 가져오거나 수정하세요. 자세한 내용은 getIapSettings()updateIapSettings()를 참조하세요.

  • 프로젝트에서 특정 IAP 리소스 유형에 대한 설정을 가져오거나 설정하려면 다음을 실행하세요.
https://iap.googleapis.com/v1/projects/PROJECT-ID/iap_web/appengine-APP-ID/services/SERVICE-ID/versions/VERSION-ID:iapSettings
  • 프로젝트 설정을 가져오거나 설정하려면 다음을 실행하세요.
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
  • 폴더 설정을 가져오거나 설정하려면 다음을 실행하세요.
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
  • 조직의 설정을 가져오거나 설정하려면 다음을 실행하세요.
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings

설정의 액세스 제어 이해

IAP 설정을 보고 수정하려면 특정 권한이 필요합니다. 아래 표에는 각 리소스 유형의 설정을 읽고 수정하는 데 필요한 권한이 나와 있습니다. 다양한 리소스 유형에 대한 설명은 리소스 및 권한을 참조하세요.

리소스 설정 보기 권한 설정 수정 권한
조직 iap.organizations.getSettings iap.organizations.updateSettings
폴더 iap.folders.getSettings iap.folders.updateSettings
프로젝트 iap.projects.getSettings iap.projects.updateSettings
모든 웹 서비스 iap.web.getSettings iap.web.updateSettings
웹 서비스 유형 iap.webTypes.getSettings iap.webTypes.updateSettings
웹 서비스 iap.webServices.getSettings iap.webServices.updateSettings
웹 서비스 버전 iap.webServiceVersions.getSettings iap.webServiceVersions.updateSettings

IAP 설정 관리자(roles/iap.settingsAdmin) 역할은 프로젝트 편집자(roles/editor)와 마찬가지로 이러한 모든 권한을 부여합니다. 프로젝트 뷰어(roles/viewer)는 모든 getSettings 권한을 부여합니다.

IAM 역할 부여에 대한 자세한 내용은 액세스 권한 부여, 변경, 취소를 참조하세요.

IAP 설정 맞춤설정

IAP는 다음과 같은 맞춤설정을 제공합니다.

필드 설명
access_settings.cors_settings.allow_http_options HTTP 옵션 제어(CORS 실행 전)
access_settings.oauth_settings.login_hint G Suite 도메인 사용자의 로그인 간소화
application_settings.access_denied_page_settings.access_denied_page_uri 액세스가 거부되면 커스텀 오류 페이지 표시
application_settings.csm_settings.rctoken_aud GKE Enterprise 및 Istio RCToken 발급
access_settings.gcip_settings Identity Platform으로 인증
access_settings.ReauthSettings 재인증 정책을 설정합니다. 자세한 내용은 재인증 구성을 참조하세요.

프로젝트 수준 또는 낮은 IAP 리소스 수준에서 설정을 적용할 수 있습니다.

웹 기반 IAP 리소스의 설정은 구성할 수 있지만 TCP 전달을 위한 IAP로 액세스하는 리소스는 구성할 수 없습니다.

예를 들어 access_settings.cors_settings.allow_http_options를 사용하여 다음과 같이 맞춤설정을 구성할 수 있습니다.

YAML

access_settings:
  cors_settings:
    allow_http_options: "false"

JSON

{
  "access_settings": {
    "cors_settings": {
      "allow_http_options": "false"
    }
  }
}

다음 섹션에서는 각 설정에 대해 자세히 설명합니다.

HTTP OPTIONS 요청 허용(CORS 실행 전 요청)

필드 기본값
access_settings.cors_settings.allow_http_options false

웹의 동일 출처 정책은 브라우저가 웹사이트 간에 AJAX 요청을 보내지 못하도록 차단합니다. 기본적으로 한 출처에서 제공되는 페이지의 자바스크립트는 AJAX를 사용하여 다른 출처에서 호스팅된 IAP로 보안된 앱에 요청을 보낼 수 없습니다.

경우에 따라 브라우저는 자동으로 요청을 시도하지만 Access-Control-Allow-Origin 헤더를 포함하지 않은 경우 응답 콘텐츠를 삭제합니다. 이러한 유형의 요청을 허용하려면 이 헤더를 앱의 응답에 포함하세요.

다른 경우, 브라우저는 교차 출처 요청을 보내기 전에 HTTP OPTIONS 요청 유형인 CORS 실행 전 요청을 보냅니다. 앱이 적절한 실행 전 응답(필수 Access-Control-* 응답 헤더 포함)으로 응답하지 않으면 브라우저는 오류로 요청을 차단합니다. 또한 실행 전 요청은 인증 사용자 인증 정보(예: IAP 세션 쿠키)와 함께 전송되지 않으므로 IAP는 오류와 함께 응답합니다.

이러한 요청을 허용하려면 다음 안내를 따르세요.

  1. OPTIONS 요청에 응답하는 코드를 앱에 추가합니다.

  2. IAP가 OPTIONS 요청을 애플리케이션으로 전달하도록 access_settings.cors_settings.allow_http_options 설정을 true로 변경합니다.

Google Workspace 도메인을 사용하여 인증

필드 기본값
access_settings.oauth_settings.login_hint ""

특정 Google Workspace 도메인의 구성원만 앱을 사용하는 경우 IAP를 구성하여 인증 흐름을 최적화할 수 있습니다. 이렇게 하면 다음과 같은 몇 가지 장점이 있습니다.

  • 사용자가 여러 계정(예: 직장 계정 및 개인 계정)으로 로그인한 경우 시스템은 계정 선택 UI를 표시하는 대신 직장 계정을 자동으로 선택합니다.

  • 사용자가 Google 계정에 로그인하지 않은 경우 로그인 UI는 자동으로 이메일 주소의 도메인 부분을 채웁니다(예: 사용자는 alice@example.com 대신 alice만 입력하면 됨).

  • Google Workspace 도메인이 타사 싱글 사인온(SSO) 제공업체를 사용하도록 구성된 경우, 시스템에서 Google이 아닌 커스텀 로그인 페이지가 표시됩니다.

이 동작을 사용 설정하려면 access_settings.oauth_settings.login_hint 값을 Google Workspace 도메인 이름(예: example.com)으로 설정합니다. 도메인 소유권이 확인되어야 함: 소유한 임의의 인터넷 DNS 도메인을 사용할 수 없습니다. (Google Workspace 기본 또는 보조 도메인으로 추가된 도메인이 확인되어 여기에서 사용할 수 있습니다.)

도메인 외부에서 사용자를 인증해야 하는 경우 프로그래매틱 인증을 사용하면 됩니다.

자세한 내용은 OpenID Connect 문서를 참조하세요.

커스텀 액세스 거부됨 오류 페이지 설정

필드 기본값
application_settings.access_denied_page_settings.access_denied_page_uri ""

이 필드에서 정책에 의해 액세스가 거부될 때마다 기본 IAP 오류 페이지 대신 커스텀 페이지로 리디렉션하는 URL을 설정할 수 있습니다.

이 기능을 사용하여 문제 해결 URL을 삽입할 수도 있습니다. 자세한 내용은 커스텀 액세스 거부 오류 페이지의 문제 해결 URL 사용 설정을 참조하세요.

GKE Enterprise 및 Istio RCToken 메시 ID 발급

필드 기본값
application_settings.csm_settings.rctoken_aud ""

Istio에서 GKE를 사용하는 경우 Istio 호환 RCToken을 생성하도록 IAP를 구성할 수 있습니다. 이 필드가 비어 있지 않은 문자열로 설정된 경우 IAP는 RCToken이 포함된 Ingress-Authorization HTTP 헤더를 추가합니다. aud 클레임은 필드 값으로 설정됩니다.

Identity Platform으로 인증

필드 기본값
access_settings.gcip_settings null

기본적으로 IAP는 Google의 기본 ID 시스템을 사용합니다. 이 필드가 설정되면 IAP는 Identity Platform을 대신 사용하여 사용자를 인증합니다.

리소스 계층 구조의 설정 상속 이해

IAP는 항상 특정 웹 서비스 버전의 요청을 평가합니다. 이 유형의 리소스는 리소스 계층 구조의 최하위 수준에 있으며, 다음과 같습니다.

- Organization
  - Folder
    - Project
      - All web services
        - Web service type
          - Web service
            - Web service version

웹 서비스 버전에 적용할 설정을 결정하기 위해 IAP는 기본 값 세트로 시작한 다음 계층 구조를 위에서 아래로 이동합니다. 설정은 찾은 대로 적용되므로 낮은 수준으로 설정한 값은 높은 수준으로 설정한 값보다 우선 적용됩니다. 예를 들어, 프로젝트 수준에서 access_settings.cors_settings.allow_http_optionstrue로 설정되고 서비스 수준에서 false로 설정되면 유효 값은 false가 됩니다.

IAP 리소스 계층 구조에 대한 자세한 내용은 리소스 및 권한을 참조하세요.