이 페이지에서는 IAP(Identity-Aware Proxy)를 사용하여 Compute Engine 인스턴스를 보호하는 방법을 설명합니다.
시작하기 전에
Compute Engine에 IAP를 사용 설정하려면 다음이 필요합니다.
- 결제가 사용 설정된 Google Cloud 콘솔 프로젝트
- 부하 분산기로 제공된 하나 이상의 Compute Engine 인스턴스 그룹
- 외부 HTTPS 부하 분산기 설정 알아보기
- 내부 HTTP 부하 분산기 설정 알아보기
- 부하 분산기 주소에 등록된 도메인 이름
- 모든 요청에 ID가 포함되었는지 확인하기 위한 애플리케이션 코드
- 사용자의 ID 가져오기에 대해 자세히 알아보세요.
Compute Engine 인스턴스를 아직 설정하지 않은 경우 전체적으로 둘러보려면 Compute Engine을 위한 IAP 설정을 참조하세요.
IAP는 Google 관리 OAuth 클라이언트를 사용하여 사용자를 인증합니다. 조직 내 사용자만 IAP가 사용 설정된 애플리케이션에 액세스할 수 있습니다. 조직 외부 사용자에게 액세스를 허용하려면 외부 애플리케이션에 IAP 사용 설정을 참조하세요.Compute Engine 백엔드 서비스 또는 Compute Engine 전달 규칙에서 IAP를 사용 설정할 수 있습니다. Compute Engine 백엔드 서비스에서 IAP를 사용 설정하면 해당 백엔드 서비스만 IAP로 보호됩니다. Compute Engine 전달 규칙에서 IAP를 사용 설정하면 전달 규칙 뒤에 있는 모든 Compute Engine 인스턴스가 IAP로 보호됩니다.
전달 규칙에서 IAP 사용 설정
부하 분산기 승인 정책 프레임워크를 사용하여 전달 규칙에서 IAP를 사용 설정할 수 있습니다.
gcloud
- 다음 명령어를 실행하여
policy.yaml파일을 준비합니다. 이 정책은 IP 주소 범위가10.0.0.0/24인 클라이언트가 전달 규칙에서 IAP를 사용 설정하도록 허용합니다.
$ cat << EOF > policy.yaml
action: CUSTOM
description: authz policy with Cloud IAP
name: AUTHZ_POLICY_NAME
httpRules:
- from:
sources:
- ipBlocks:
- prefix: "10.0.0.0"
length: 24
customProvider:
cloudIap: {}
target:
loadBalancingScheme: EXTERNAL_MANAGED
resources:
- https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID
EOF
- 다음 명령어를 실행하여 전달 규칙에서 IAP를 사용 설정합니다.
gcloud network-security authz-policies import AUTHZ_POLICY_NAME \ --source=policy.yaml \ --location=LOCATION \ --project=PROJECT_ID
다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- LOCATION: 리소스가 있는 리전입니다.
- FORWARDING_RULE_ID: 전달 규칙 리소스 ID입니다.
- AUTHZ_POLICY_NAME: 승인 정책 이름입니다.
API
- 다음 명령어를 실행하여
policy.json파일을 준비합니다.cat << EOF > policy.json { "name": "AUTHZ_POLICY_NAME", "target": { "loadBalancingScheme": "INTERNAL_MANAGED", "resources": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID" ], }, "action": "CUSTOM", "httpRules": [ { "from": { "sources": { "ipBlocks": [ { "prefix": "10.0.0.0", "length": 24 } ] } } } ], "customProvider": { "cloudIap": {} } } EOF 다음 명령어를 실행하여 전달 규칙에서 IAP를 사용 설정합니다.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @policy.json \ "https://networksecurity.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- LOCATION: 리소스가 있는 리전입니다.
- FORWARDING_RULE_ID: 전달 규칙 리소스 ID입니다.
- AUTHZ_POLICY_NAME: 승인 정책 이름입니다.
전달 규칙에서 IAP를 사용 설정한 후에 리소스에 권한을 적용할 수 있습니다.
Compute Engine 백엔드 서비스에서 IAP 사용 설정
해당 백엔드 서비스를 통해 Compute Engine 백엔드 서비스에서 IAP를 사용 설정할 수 있습니다.
콘솔
Google Cloud 콘솔을 사용하여 IAP를 사용 설정하면 Google 관리 OAuth 클라이언트를 사용할 수 없습니다.
如果您尚未配置项目的 OAuth 权限请求页面,系统会提示您进行配置。如需配置 OAuth 权限请求页面,请参阅设置 OAuth 权限请求页面。
如果您运行的是 GKE 1.24 版或更高版本,则可以使用 Kubernetes Gateway API 配置 IAP 和 GKE。为此,请完成以下步骤,然后按照配置 IAP 中的说明操作。请勿配置 BackendConfig。
设置 IAP 访问权限
-
转到 Identity-Aware Proxy 页面。
转到 Identity-Aware Proxy 页面 - 选择要使用 IAP 保护的项目。
-
选中要授予访问权限的资源旁边的复选框。
如果您没有看到资源,请确保已创建资源,并且 BackendConfig 和 Compute Engine Ingress 控制器已同步。
如需验证后端服务是否可用,请运行以下 gcloud 命令:
gcloud compute backend-services list - 在右侧面板上,点击添加主账号。
-
在显示的添加主账号对话框中,输入群组或个人(应拥有项目的 IAP-secured Web App User 角色)的电子邮件地址。
以下种类的主账号可以具有此角色:
- Google 账号:user@gmail.com
- Google 网站论坛:admins@googlegroups.com
- 服务账号:server@example.
- Google Workspace 网域:example.com
请务必添加您有权访问的 Google 账号。
- 从角色下拉列表中选择 Cloud IAP > 受 IAP 保护的网页应用用户。
- 点击保存。
启用 IAP
-
在 Identity-Aware Proxy 页面上的应用下,找到为要限制访问的 instance group 提供服务的负载均衡器。如需为某资源开启 IAP,请
如需启用 IAP,请执行以下操作:- 负载均衡器前端配置中至少一个协议必须是 HTTPS。了解如何设置负载均衡器。
-
您需要
compute.backendServices.update、clientauthconfig.clients.create、clientauthconfig.clients.update和clientauthconfig.clients.getWithSecret权限。这些权限由 Project Editor 等角色授予。如需了解详情,请参阅管理对受 IAP 保护的资源的访问权限。
- 在出现的开启 IAP 窗口中,点击开启以确认您想用 IAP 保护资源。 开启 IAP 后,对于与负载均衡器的所有连接,它都要求提供登录凭证。 只有具有项目的 IAP-Secured Web App User 角色的账号才能获得访问权限。
gcloud
在设置项目和 IAP 之前,您需要最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。
-
如需进行身份验证,请使用 Google Cloud CLI 并运行以下命令。
gcloud auth login - 如要登录,请按照显示的网址操作。
- 登录后,复制显示的验证码并将其粘贴到命令行中。
-
运行以下命令,指定包含您要使用 IAP 保护的资源的项目。
gcloud config set project PROJECT_ID -
如需启用 IAP,请运行全局范围或区域范围的命令。
全球范围 区域范围gcloud compute backend-services update BACKEND_SERVICE_NAME --global --iap=enabledgcloud compute backend-services update BACKEND_SERVICE_NAME --region REGION_NAME --iap=enabled
启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何管理角色和权限。
API
Run the following command to prepare a
settings.jsonfile.cat << EOF > settings.json { "iap": { "enabled":true } } EOFRun the following command to enable IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
After you enable IAP, you can use the Google Cloud CLI to modify the
IAP access policy using the IAM role
roles/iap.httpsResourceAccessor. Learn more about
managing roles and permissions.