자주 묻는 질문(FAQ) 및 문제 해결

이 문서에는 IAP(Identity-Aware Proxy)에 대한 자주 묻는 질문(FAQ)이 포함되어 있습니다.

IAP로 어떤 앱을 보호할 수 있나요?

IAP는 다음 항목에 사용할 수 있습니다.

  • App Engine 표준 환경 및 App Engine 가변형 환경 앱
  • HTTP(S) 부하 분산 백엔드 서비스가 포함된 Compute Engine 인스턴스
  • Google Kubernetes Engine 컨테이너

현재까지 Cloud CDN에는 IAP를 사용할 수 없습니다.

앱에 로그인한 후 URL 끝에 #이 표시되는 이유는 무엇인가요?

일부 브라우저 및 특정 조건에서는 인증 후 URL에 #이 추가될 수 있습니다. 이것은 정상 동작이며, 로그인할 때 어떤 문제도 일으키지 않습니다.

요청이 실패하고 405 Method Not Allowed 상태 코드가 반환되는 이유는 무엇인가요?

요청에 쿠키를 연결하지 않아서 발생할 수 있습니다. 기본적으로 자바스크립트 메서드는 요청에 쿠키를 연결하지 않습니다.

쿠키를 포함하는 방법은 요청 메소드마다 다릅니다. 예를 들어 XMLHttpRequest 객체로 전송된 요청은 withCredentials 속성이 true로 설정되어야 하지만, Fetch API로 전송된 요청은 credentials 옵션이 include 또는 same-origin으로 설정되어야 합니다.

일정 시간이 지난 후에만 발생하는 오류 처리에 대한 내용은 IAP 세션 관리를 참조하세요.

HTTP 302 리디렉션 대신 HTTP 401 Unauthorized 상태 코드가 표시되는 이유는 무엇인가요?

클라이언트가 리디렉션을 처리하도록 구성되면 IAP는 302 Redirect 상태 코드로 응답합니다. 클라이언트가 리디렉션을 처리할 수 있음을 나타내려면 HTTP Accept="text/html,*/*"이 요청의 헤더에 있는지 확인하세요.

POST 요청이 리디렉션을 트리거하지 않는 이유는 무엇인가요?

리디렉션을 트리거하려면 IAP에 대한 호출이 POST 요청이 아니어야 합니다. 브라우저는 POST 요청에 대한 응답으로 리디렉션되지 않습니다. 따라서 IAP는 302 Redirect 대신 401 Unauthorized 상태 코드로 응답합니다.

POST 요청을 처리하기 위해 IAP가 필요한 경우 ID 토큰 또는 유효한 쿠키가 요청 헤더에 전달되는지 확인합니다.

IAP 보안 리소스에 인증된 요청을 하려면 Authorization: Bearer 헤더에 ID 토큰을 포함합니다. 세션 새로고침으로 유효한 쿠키를 얻으세요.

IAP에는 다음과 같은 쿠키 프리픽스가 필요합니다.

  • GCP_IAAP_AUTH_TOKEN_<random_string>
  • GCP_IAP_UID

이러한 쿠키가 요청 헤더에 여러 번 표시되는 것은 정상입니다.

API를 사용 중지한 경우 IAP를 사용할 수 있나요?

예. IAP로 보호되는 리소스에 대한 액세스는 API가 사용 중지된 상태에서 작동하지만 IAM 권한을 변경할 수 없습니다.

소유자 역할을 가진 사용자가 TCP에 IAP를 사용하지 못하도록 제한하려면 어떻게 해야 하나요?

먼저 소유자(roles/owner) 역할을 가능한 한 사용하지 않는 것이 좋습니다. 소유자 역할은 Google Cloud 전반에 대한 광범위한 권한을 부여합니다. 보다 세분화된 역할과 권한을 할당하면 프로젝트 보안이 향상될 수 있습니다. 자세한 내용은 IAM 권장사항을 참조하세요.

소유자 역할의 사용을 줄일 수 없는 경우 방화벽 규칙을 사용하여 TCP에 대한 IAP를 차단할 수 있습니다.

TCP용 IAP는 어떤 도메인을 사용하나요?

IAP TCP는 도메인 tunnel.cloudproxy.app을 통해 데이터를 터널링합니다. 이 도메인은 Google에서 소유하며, 이 도메인에 대한 어떠한 트래픽도 차단하지 않아야 합니다.

이 도메인에 대한 트래픽을 차단하면 TCP용 IAP를 사용할 수 없습니다. 여러 오류 메시지 중 하나가 나타날 수 있습니다.

gcloud를 사용 중인 경우 오류 메시지는 다음과 같습니다.

Error while connecting [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

브라우저에서 SSH를 사용하는 경우 오류 메시지는 다음과 같습니다.

Cloud Identity-Aware Proxy Failed

연결된 오류 코드는 없습니다.

오류 코드

다음 표에는 IAP 구성 및 사용 시 반환되는 일반적인 오류 코드와 메시지가 나와 있습니다.

오류 코드 또는 메시지 설명 문제 해결
오류 코드 7 OAuth 클라이언트 ID 또는 보안 비밀번호 값이 비어 있습니다. 사용자 인증 정보 페이지를 보고 클라이언트 ID와 보안 비밀번호가 앱에 올바르게 구성되어 있는지 확인하세요. 클라이언트 ID와 보안 비밀번호가 올바르게 구성된 것으로 보이는 경우 GET 메서드를 사용하여 현재 상태를 확인하고 PATCH 메서드를 사용하여 클라이언트 ID 및 보안 비밀번호를 재설정합니다.
Compute Engine API: GET , PATCH
App Engine API: GET , PATCH
오류 코드 9 OAuth 리디렉션이 완료되지 않았습니다. 내부 오류이며 검토를 위해 기록됩니다.
오류 코드 11 OAuth 클라이언트 ID가 잘못 구성되었습니다. 사용자 인증 정보 페이지를 보고 클라이언트 ID와 보안 비밀번호가 앱에 올바르게 구성되어 있는지 확인하세요. 클라이언트 ID와 보안 비밀번호가 올바르게 구성된 것으로 보이는 경우 GET 메서드를 사용하여 현재 상태를 확인하고 PATCH 메서드를 사용하여 클라이언트 ID 및 보안 비밀번호를 재설정합니다.
Compute Engine API: GET , PATCH
App Engine API: GET , PATCH
오류 코드 13 OIDC(OpenID Connect) 토큰이 유효하지 않습니다. 자격 증명 페이지를 보고 IAP용으로 구성된 클라이언트 ID가 삭제되지 않았는지 확인하세요.
오류 코드 429 프로젝트가 요청의 분당 임계값을 초과했습니다. IAP 프로젝트는 분당 최대 360,000개의 요청으로 제한됩니다. 이 오류가 발생하면 프로젝트에 대한 요청의 볼륨을 줄입니다. 추가 질문이 있으면 Google Cloud 지원에 문의하세요.
오류 코드 4003 연결하려는 포트에서 인스턴스가 리슨하지 않거나 방화벽이 닫혀 있음을 의미할 수 있습니다. 이러한 문제 중 하나로 인해 VM 인스턴스에 대한 시작 연결 테스트가 실패할 수도 있습니다. VM의 리슨 프로세스가 실행 중이고 올바른 포트에서 리슨 중인지 확인하세요. 또한 Google Cloud 방화벽이 올바르게 구성되어 있고 연결 중인 포트에서 열려 있는지 확인하세요.
오류 코드 4033 인스턴스에 액세스할 수 있는 권한이 없거나 인스턴스가 존재하지 않거나 인스턴스가 중지되었습니다. IAP(Identity-Aware Proxy) 페이지를 보고 연결 중인 리소스에 IAP 보안 터널 사용자 Cloud IAM 역할이 적용되어 있는지 확인하세요.

문제를 해결할 수 없는 경우 오류에 대한 설명과 API에 대한 GET 호출에서 받은 응답에 대해 고객지원에 문의하세요. 응답에서 클라이언트 보안 비밀번호를 삭제할 수 있습니다.