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

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

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

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

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

현재까지 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 토큰을 포함합니다. 세션 새로고침으로 유효한 쿠키를 얻으세요.

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

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

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

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

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

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

IAP는 Google에서 소유하는 다음 도메인을 사용합니다.

프록시 서버 또는 방화벽을 통해 연결하는 경우 이러한 도메인에 대한 트래픽을 허용하고 WebSocket 연결 사용을 차단하지 않는지 확인합니다.

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

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

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

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

Cloud Identity-Aware Proxy Failed

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

Server Error 오류가 발생하는 이유는 무엇인가요?

다음과 같은 오류 메시지가 표시되면 방화벽에서 130.211.0.0/2235.191.0.0/16 IP를 허용하지 않는 것일 수 있습니다.

Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.

부하 분산기 IP 130.211.0.0/2235.191.0.0/16이 백엔드에 도달할 수 없으면 애플리케이션에 액세스하지 못할 수 있습니다. 자세한 내용은 외부 HTTPS 부하 분산기 설정을 참조하세요.

TCP에 IAP를 사용하여 특정 VM에 연결하는 경우 VM은 35.235.240.0/20 범위의 주소에서 들어오는 연결을 허용해야 합니다.

간헐적인 내부 서버 오류가 발생하는 이유는 무엇인가요?

An internal server error occurred while authorizing your request. Error code X 형식의 오류 메시지가 수신되면 이는 내부 실패를 나타냅니다. 오류 코드가 1 또는 30인 내부 오류는 백엔드 실패를 나타냅니다. 이러한 백엔드 오류의 비율이 낮으면 일시적인 문제를 나타내는 경우가 많습니다. 클라이언트는 지수 백오프를 사용하여 요청을 재시도해야 합니다.

오류 코드

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

오류 코드 또는 메시지 설명 문제 해결하기
오류 코드 7 OAuth 클라이언트 ID 또는 보안 비밀번호 값이 비어 있습니다. 사용자 인증 정보 페이지를 보고 클라이언트 ID와 보안 비밀번호가 앱에 올바르게 구성되어 있는지 확인하세요. 클라이언트 ID와 보안 비밀번호가 올바르게 구성된 것으로 보이는 경우 GET 메서드를 사용하여 현재 상태를 확인하고 PATCH 메서드를 사용하여 클라이언트 ID 및 보안 비밀번호를 재설정합니다.
Compute Engine API: GET , PATCH
App Engine API: GET , PATCH
오류 코드 9 OAuth 리디렉션이 완료되지 않았습니다. 내부 오류이며 검토를 위해 기록됩니다.
오류 코드 9(경로 재작성 규칙 포함) OAuth 리디렉션이 완료되지 않았습니다. Google Cloud 부하 분산기 경로 재작성 규칙은 OAuth 흐름을 성공적으로 완료하는 IAP의 기능을 방해합니다. Google Cloud 부하 분산기 뒤에서 여러 백엔드를 호스팅하고 경로 재작성 규칙을 사용하는 경우 두 백엔드가 IAP에 동일한 OAuth 클라이언트 ID를 사용하고 있는지 확인합니다. gcloud compute backend-services update 명령어를 사용하여 백엔드 서비스의 OAuth 클라이언트 ID를 변경할 수 있습니다.
오류 코드 11 OAuth 클라이언트 ID가 잘못 구성되었습니다. 사용자 인증 정보 페이지를 보고 클라이언트 ID와 보안 비밀번호가 앱에 올바르게 구성되어 있는지 확인하세요. 클라이언트 ID와 보안 비밀번호가 올바르게 구성된 것으로 보이는 경우 GET 메서드를 사용하여 현재 상태를 확인하고 PATCH 메서드를 사용하여 클라이언트 ID 및 보안 비밀번호를 재설정합니다.
Compute Engine API: GET , PATCH
App Engine API: GET , PATCH
오류 코드 13 OIDC(OpenID Connect) 토큰이 유효하지 않습니다. 자격 증명 페이지를 보고 IAP용으로 구성된 클라이언트 ID가 삭제되지 않았는지 확인하세요.
오류 코드 51 브라우저에서 연결 풀링을 지원하지 않습니다. 현재 최신 브라우저에서 연결 풀링 오류를 처리할 수 있습니다. 최종 사용자가 현재 최신 브라우저를 사용하고 있는지 확인합니다. 자세한 내용은 특정 도메인에 대한 리소스 액세스 제한을 참조하세요.
오류 코드 52 입력한 호스트 이름이 서버의 SSL 인증서와 일치하지 않습니다. 시스템 관리자가 SSL 인증서를 업데이트해야 할 수 있습니다. 자세한 내용은 특정 도메인에 대한 리소스 액세스 제한을 참조하세요.
오류 코드 53 호스트 이름이 IAP 관리자가 허용하는 도메인과 일치하지 않습니다. 관리자는 호스트 이름을 포함하도록 허용된 도메인의 목록을 업데이트해야 합니다. 자세한 내용은 특정 도메인에 대한 리소스 액세스 제한을 참조하세요.
오류 코드 429 프로젝트가 요청의 분당 임곗값을 초과합니다. IAP 프로젝트는 분당 최대 360,000개의 요청으로 제한됩니다. 이 오류가 발생하면 프로젝트에 대한 요청의 볼륨을 줄입니다. 추가 질문이 있으면 Google Cloud 지원에 문의하세요.
오류 코드 4003 연결하려는 포트에서 인스턴스가 리슨하지 않거나 방화벽이 닫혀 있음을 의미할 수 있습니다. 이러한 문제 중 하나로 인해 VM 인스턴스에 대한 시작 연결 테스트가 실패할 수도 있습니다. VM의 리슨 프로세스가 실행 중이고 올바른 포트에서 리슨 중인지 확인하세요. 또한 Google Cloud 방화벽이 올바르게 구성되어 있고 연결 중인 포트에서 열려 있는지 확인하세요.
오류 코드 4010 연결이 설정되었지만 대상 인스턴스에서 닫혔습니다. 일반적으로 인스턴스 또는 목적지 포트에서 리슨하는 프로그램의 문제를 나타냅니다. 인스턴스를 재설정합니다. SSH를 사용하여 연결하는 경우 auth.log 로그에서 예기치 않은 오류가 있는지 확인합니다. 로그 파일의 기본 위치는 /var/log/입니다. SSH를 통해 로그에 액세스할 수 없으면 직렬 콘솔을 사용하거나 새 VM에 디스크를 분리하고 다시 연결하여 로그를 확인합니다. 고객 지원팀에 문의할 때 로그를 첨부합니다.
오류 코드 4033 인스턴스에 액세스할 수 있는 권한이 없거나 인스턴스가 존재하지 않거나 인스턴스가 중지되었습니다. IAP(Identity-Aware Proxy) 페이지를 보고 연결 중인 리소스에 IAP 보안 터널 사용자 Cloud IAM 역할이 적용되어 있는지 확인하세요.
오류 코드 4047 인스턴스가 존재하지 않거나 인스턴스가 중지되었습니다. VM의 전원이 켜져 있고 시작이 완료되었는지 확인하세요.

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