이 문서에서는 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 콘솔을 사용하여 설정을 보고 수정하려면 다음 안내를 따르세요.
- Identity-Aware Proxy 페이지로 이동합니다.
Identity-Aware Proxy 페이지로 이동 - 애플리케이션 탭에서 리소스를 찾습니다.
- 작업 더보기 메뉴 를 열고 설정을 클릭합니다.
- 저장을 클릭합니다.
gcloud
Google Cloud CLI를 사용하여 설정을 가져오고 수정하려면 gcloud iap settings get
및 gcloud 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는 오류와 함께 응답합니다.
이러한 요청을 허용하려면 다음 안내를 따르세요.
OPTIONS
요청에 응답하는 코드를 앱에 추가합니다.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 |
"" |
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_options
이 true
로 설정되고 서비스 수준에서 false
로 설정되면 유효 값은 false
가 됩니다.
IAP 리소스 계층 구조에 대한 자세한 내용은 리소스 및 권한을 참조하세요.