IAP 보안 리소스에 대한 액세스 관리

이 페이지에서는 리소스 수준에서 Identity-Aware Proxy(IAP) 보안 리소스에 대한 개별 또는 그룹 액세스를 관리하는 방법에 대해 설명합니다.

개요

IAP를 사용하면 Google Cloud 프로젝트에서 개별 리소스에 대한 IAP 정책을 구성할 수 있습니다. 한 프로젝트 내의 여러 앱은 각각 서로 다른 액세스 정책을 가질 수 있습니다. 여기에는 Compute Engine, Google Kubernetes Engine, App Engine 앱이 있는 프로젝트가 포함됩니다. App Engine 엔진의 경우 개별 버전 및 서비스에 서로 다른 액세스 정책이 적용될 수 있습니다.

프로젝트 수준 및 상위 액세스를 관리하기 위해서는 IAM 관리자 페이지를 사용하세요. 프로젝트 수준에서 액세스 권한이 있는 사용자('구성원') 목록은 프로젝트의 모든 IAP 보안 리소스에 적용됩니다.

시작하기 전에

시작하기 전에 다음이 필요합니다.

  • 개인 또는 그룹 액세스를 추가하려는 IAP 보안 리소스
  • 액세스를 추가하려는 사용자 또는 그룹 이름

IAP 사용 및 사용 중지

IAP를 사용 및 사용 중지하려면 특정 권한이 필요합니다. 다음 표에서는 각 앱 유형에 필요한 권한을 보여줍니다.

앱 유형 권한 필요
App Engine appengine.applications.update
Compute Engine 또는 Google Kubernetes Engine compute.backendServices.update

이러한 권한은 프로젝트 편집자, App Engine 관리자 및 Compute 네트워크 관리자와 같은 역할로 부여됩니다. 이러한 역할을 통해 IAP를 사용하거나 중지할 수 있지만 액세스 정책을 수정하는 데 필요한 권한이 없습니다.

또한 Cloud Console로 IAP를 사용하려면 clientauthconfig.clients.createclientauthconfig.clients.getWithSecret 권한도 필요할 수 있습니다. 이 권한은 프로젝트 편집자 역할로 부여됩니다.

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

Cloud Console에서 액세스 관리

Cloud Console을 사용하여 IAP 보안 리소스에 대한 액세스를 제어하려면 프로세스에 따라 액세스를 추가하거나 제거합니다.

액세스 추가

  1. Identity-Aware Proxy 페이지로 이동합니다.
    Identity-Aware Proxy 페이지로 이동

  2. IAP로 보호하려는 리소스를 선택합니다. 다음 리소스 선택은 일련의 리소스 그룹을 보호합니다.

    • 모든 웹 서비스: 프로젝트에 있는 모든 리소스가 보호됩니다. 이것은 IAM 관리자 페이지를 통해 프로젝트 수준 액세스를 부여하는 것과 다릅니다. 모든 웹 서비스 리소스 수준에서 IAP 정책 관리자 역할을 부여받은 사용자는 IAP 정책에 대한 권한만 갖습니다.

    • 백엔드 서비스: 모든 백엔드 서비스가 보호됩니다.

  3. 오른쪽 정보 패널에서 리소스에 대해 ID 및 액세스 관리(IAM) 역할을 부여하려는 그룹 또는 개인의 이메일 주소를 추가합니다.

  4. 역할 선택 드롭다운에서 다음 역할 중에서 선택하여 구성원에 액세스 정책 역할을 적용합니다.

    • 소유자: IAP 정책 관리자와 동일한 액세스를 부여합니다. 대신 IAP 정책 관리자 역할을 사용하세요. 이 역할은 정책 수정만 허용하고, 앱에 대한 액세스를 부여하지 않습니다.

    • IAP 정책 관리자: IAP 정책에 대한 관리자 권한을 부여합니다.

    • IAP 보안 웹 앱 사용자: IAP를 사용하는 앱 및 기타 HTTPS 리소스에 대한 액세스를 부여합니다.

    • 보안 검토자: IAP 정책을 보고 감사할 수 있는 권한을 부여합니다.

  5. 이메일 주소 추가 및 역할 설정을 마쳤으면 추가를 클릭합니다.

액세스 삭제

  1. Identity-Aware Proxy 페이지로 이동합니다.
    Identity-Aware Proxy 페이지로 이동
  2. IAP로 보호된 리소스를 선택합니다.
  3. 오른쪽 정보 패널에서 구성원으로부터 삭제하려는 역할에 해당하는 섹션을 선택합니다.
  4. 확장된 섹션에서 역할을 삭제하려는 각 사용자 또는 그룹 이름 옆에서 삭제를 클릭합니다.
  5. 표시된 구성원 삭제 대화상자에서 삭제를 클릭합니다.

API로 액세스 관리

IAM은 Google Cloud 리소스에서 액세스 제어 정책을 만들고 관리하기 위한 표준 방법을 제공합니다.

리소스 및 권한

IAP API를 사용하면 IAP 보안 프로젝트의 개별 리소스에 IAM 권한을 적용할 수 있습니다. 특정 수준에 부여되는 IAM 권한은 그 아래의 모든 수준에 적용됩니다. 예를 들어 프로젝트 수준에서 부여된 권한은 프로젝트의 모든 Google Cloud 리소스에 적용됩니다. 프로젝트 및 상위 수준의 액세스는 IAM 관리자 페이지에서 관리되지만 IAP 관리자 페이지에 표시됩니다.

사용자가 IAP 보안 앱에 액세스하고 IAM 정책을 업데이트하는 메서드를 사용하려면 특정 권한이 필요합니다. iap.webServiceVersions.accessViaIAP 권한은 앱에 대한 액세스를 부여합니다. IAP를 사용하여 SSH 및 RDP와 같은 관리 서비스에 대한 액세스를 제어하는 경우 사용자에게는 iap.tunnelInstances.accessViaIAP 권한이 필요합니다.

각 IAP 리소스에는 해당 리소스 및 하위 요소에 대한 액세스 정책을 관리할 수 있는 고유한 getIamPolicysetIamPolicy 권한이 있습니다.

IAM API를 호출하려면 리소스에 대한 URL 경로로 호출을 수행합니다. 다음은 App Engine 앱 서비스 버전에 대해 IAM 정책을 가져오는 예시 호출입니다.

https://iap.googleapis.com/v1beta1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy
리소스 유형 설명 경로 권한
iap.web 프로젝트에 있는 모든 IAP 보안 웹 앱입니다. 이는 IAP 관리 페이지의 모든 웹 서비스 체크박스와 동일합니다.

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web
iap.web.getIamPolicy

iap.web.setIamPolicy
iap.webTypes 백엔드 서비스 또는 App Engine 앱입니다. 이는 IAP 관리 페이지의 백엔드 서비스App Engine 앱 체크박스와 동일합니다. 백엔드 서비스

전역 범위:

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/compute

리전 범위:

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME


App Engine 앱


https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
iap.webServices Compute Engine 백엔드 서비스 또는 App Engine 앱 서비스 중 하나입니다. 백엔드 서비스 경로는 백엔드 서비스 ID 또는 백엔드 서비스 이름 중 하나를 지정할 수 있습니다. 백엔드 서비스

전역 범위:

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/compute/services/
BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME

리전 범위:

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME/
services/BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME


App Engine 앱


https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
iap.webServiceVersions App Engine 서비스 버전입니다. Compute Engine은 버전 관리를 지원하지 않습니다.

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID/versions/VERSION_ID
iap.webServiceVersions.getIamPolicy

iap.webServiceVersions.setIamPolicy
iap.tunnel 프로젝트의 모든 IAP 보안 인스턴스입니다. 이는 IAP 관리 페이지의 모든 터널 리소스 체크박스와 동일합니다.

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_tunnel
iap.tunnel.getIamPolicy

iap.tunnel.setIamPolicy
iap.tunnelZones 하나 이상의 인스턴스가 있는 모든 영역입니다. 이는 IAP 관리 페이지의 영역 이름 체크박스와 동일합니다(예: us-central1-c).

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
iap.tunnelZones.getIamPolicy

iap.tunnelZones.setIamPolicy
iap.tunnelInstances 개별 인스턴스입니다.

https://iap.googleapis.com/v1beta1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
/instances/INSTANCE_ID or INSTANCE_NAME
iap.tunnelInstances.getIamPolicy

iap.tunnelInstances.setIamPolicy

역할

다음 표에는 IAP IAM 역할과 각 역할에 포함된 모든 IAP 관련 권한 목록이 나열되어 있습니다. IAM 역할에 대한 자세한 내용은 역할 및 권한 관리를 참조하세요.

역할 포함된 권한 설명
IAP 보안 웹 앱 사용자(roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP App Engine 및 Compute Engine 리소스에 대한 액세스를 부여합니다.
IAP 보안 터널 사용자(roles/iap.tunnelResourceAccessor) iap.tunnelInstances.accessViaIAP IAP를 사용하는 터널 리소스에 대한 액세스 권한을 부여합니다.
IAP 정책 관리자(roles/iap.admin) iap.web.getIamPolicy
iap.web.setIamPolicy
iap.webTypes.getIamPolicy
iap.webTypes.setIamPolicy
iap.webServices.getIamPolicy
iap.webServices.setIamPolicy
iap.webServiceVersions.getIamPolicy
iap.webServiceVersions.setIamPolicy
리소스의 IAP 액세스 정책을 관리할 수 있는 IAP 관리 권한을 부여합니다.

공개 액세스

리소스에 모든 사용자 액세스 권한을 부여하려면 다음 구성원 중 하나를 액세스 목록에 추가하세요.

  • allAuthenticatedUsers: Google 계정 또는 서비스 계정으로 인증한 모든 사용자
  • allUsers: 인증 사용자와 인증되지 않은 사용자를 포함하여 인터넷 상의 모든 사용자 요청의 서명된 헤더에는 sub 또는 email 클레임이 없습니다.

공개 액세스 권한이 부여되면 IAP는 요청에 대해 Cloud 감사 로그를 생성하지 않습니다.

현재 공개 액세스 권한을 부여하는 binding에는 연결된 조건을 가질 수 없습니다. 예를 들어, 요청 경로가 /public/으로 시작하는 경우 모든 사용자가 리소스에 액세스할 수 있는 정책이 유효하지 않습니다.