IAP 맞춤설정

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

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

설정 관리

Cloud Console, IAP API 또는 gcloud 명령줄 도구를 사용하여 설정을 보고 업데이트할 수 있습니다.

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

Console

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

  1. Identity-Aware Proxy 페이지로 이동합니다.
    Identity-Aware Proxy 페이지로 이동
  2. HTTPS 리소스 탭에서 리소스를 찾습니다.
  3. 작업 더보기 메뉴 를 열고 설정을 클릭합니다.
  4. 변경을 완료한 후 저장을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 설정을 가져오고 수정하려면 다음과 같이 gcloud iap settings getgcloud iap settings set 명령어를 사용하세요.

  • 프로젝트, 폴더 또는 조직에 대한 설정을 가져오려면 다음 명령어를 사용합니다. 자세한 내용은 gcloud iap settings get 주제를 참조하세요.
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 Anthos와 Istio RCTokens 발행
access_settings.gcip_settings Identity Platform으로 인증

프로젝트 수준 또는 낮은 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)으로 설정합니다. 도메인 외부에서 사용자를 인증해야 하는 경우에는 프로그래매틱 인증을 사용하면 됩니다.

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

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

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

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

Anthos 및 Istio RCToken 메시 ID 발급

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

GKE에서 Istio를 사용하는 경우 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 리소스 계층 구조에 대한 자세한 내용은 리소스 및 권한을 참조하세요.