本页介绍了何时以及如何为 Identity-Aware Proxy (IAP) 自定义 OAuth 配置。
IAP 使用 Google 管理的 OAuth 客户端对用户进行身份验证。
当用户通过浏览器访问启用了 IAP 的应用时,Google 管理的 OAuth 客户端会限制同一组织内的用户访问该应用。
何时使用自定义 OAuth 配置
您必须使用自定义 OAuth 配置才能执行以下操作:
- 允许组织外部的用户访问启用了 IAP 的应用。
- 在身份验证期间显示您自己的品牌信息。
- 如需启用对应用的程序化访问,
自定义 OAuth 配置时,您必须配置 OAuth 同意屏幕。这要求应用的品牌信息必须经过 Google 验证流程。如需详细了解验证流程,请参阅设置 OAuth 权限请求页面。
您负责创建和管理自定义 OAuth 客户端的凭据。这包括安全地存储客户端密钥,并在必要时与获授权的用户共享。
Google 管理的 OAuth 客户端与自定义 OAuth 客户端的比较
下表比较了 Google 管理的 OAuth 客户端与自定义 OAuth 客户端。
Google 管理的 OAuth 客户端 | 自定义 OAuth 客户端 | |
---|---|---|
用户 | 仅限内部使用 | 内部和外部 |
品牌 | Google Cloud 品牌 | 客户自有品牌 |
OAuth 配置 | 已配置 Google | 客户配置 |
OAuth 凭据 | 由 Google 管理 | 由客户管理 |
应用访问权限 | 仅限浏览器流程 | 浏览器流程和以编程方式访问 |
使用自定义 OAuth 客户端配置启用 IAP
App Engine
控制台
如果您尚未配置项目的 OAuth 同意屏幕,系统会提示您执行此操作。如需配置 OAuth 同意屏幕,请参阅设置 OAuth 同意屏幕。
设置 IAP 访问权限
-
转到 Identity-Aware Proxy 页面。
转到 Identity-Aware Proxy 页面 - 选择要使用 IAP 保护的项目。
- 选中您要授予访问权限的资源旁边的复选框。
- 在右侧面板上,点击添加主账号。
-
在显示的添加主账号对话框中,输入群组或个人(应拥有项目的 IAP-secured Web App User 角色)的电子邮件地址。
以下种类的主账号可以具有此角色:
- Google 账号:user@gmail.com
- Google 网站论坛:admins@googlegroups.com
- 服务账号:server@example.gserviceaccount.com
- Google Workspace 网域:example.com
请务必添加您有权访问的 Google 账号。
- 从角色下拉列表中选择 Cloud IAP > 受 IAP 保护的网页应用用户。
- 点击保存。
启用 IAP
-
在 Identity-Aware Proxy 页面的 APPLICATIONS(应用)下方,找到要限制访问的应用。如需为某资源开启 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 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。
- 保存 OAuth 客户端 ID 和 Secret。
-
如需启用 IAP,请运行以下命令。
gcloud iap web enable \ --oauth2-client-id=CLIENT_ID \ --oauth2-client-secret=CLIENT_SECRET \ --resource-type=app-engine
启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor
修改 IAP 访问权限政策。详细了解如何管理角色和权限。
API
按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。
保存 OAuth 客户端 ID 和 Secret。
运行以下命令以准备
settings.json
文件。cat << EOF > settings.json { "iap": { "enabled":true, "oauth2ClientId" : CLIENT_ID, "oauth2ClientSecret" : CLIENT_SECRET, } } EOF
运行以下命令以启用 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://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
启用 IAP 后,您可以使用 Google Cloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor
修改 IAP 访问权限政策。详细了解如何管理角色和权限。
Compute Engine
控制台
如果您尚未配置项目的 OAuth 同意屏幕,系统会提示您执行此操作。如需配置 OAuth 同意屏幕,请参阅设置 OAuth 同意屏幕。
设置 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.gserviceaccount.com
- Google Workspace 网域:example.com
请务必添加您有权访问的 Google 账号。
- 从角色下拉列表中选择 Cloud IAP > 受 IAP 保护的网页应用用户。
- 点击保存。
gcloud
在设置项目和 IAP 之前,您需要最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。
-
如需进行身份验证,请使用 Google Cloud CLI 并运行以下命令。
gcloud auth login
- 如要登录,请按照显示的网址操作。
- 登录后,复制显示的验证码并将其粘贴到命令行中。
-
运行以下命令,指定包含您要使用 IAP 保护的资源的项目。
gcloud config set project PROJECT_ID
- 按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。
- 保存 OAuth 客户端 ID 和 Secret。
-
如需启用 IAP,请运行全局范围或区域范围的命令。
全局范围 区域范围gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor
修改 IAP 访问权限政策。详细了解如何管理角色和权限。
API
按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。
保存 OAuth 客户端 ID 和 Secret。
运行以下命令以准备
settings.json
文件。cat << EOF > settings.json { "iap": { "enabled":true } } EOF
运行以下命令以启用 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"
启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor
修改 IAP 访问权限政策。详细了解如何管理角色和权限。
Cloud Run
控制台
如果您尚未配置项目的 OAuth 同意屏幕,系统会提示您执行此操作。如需配置 OAuth 同意屏幕,请参阅设置 OAuth 同意屏幕
设置 IAP 访问权限
- 打开 Identity-Aware Proxy 页面。
前往 Identity-Aware Proxy - 选择要使用 IAP 保护的项目。
- 在应用下,选中您要向其添加成员的负载均衡器后端服务旁边的复选框。
- 在右侧面板上,点击添加成员。
在添加成员对话框中,输入应具有项目的 IAP-secured Web App User 角色的群组或个人的账号。可以添加以下种类的账号作为成员:
- Google 账号:user@gmail.com - 也可以是 Google Workspace 账号,例如 user@google.com 或其他一些 Google Workspace 网域。
- Google 群组:<管理员>@googlegroups.com
- 服务账号:server@example.gserviceaccount.com
- Google Workspace 网域:example.com
从角色列表中选择 Cloud IAP > IAP-secured Web App User。
点击保存。
启用 IAP
- 在 IAP 页面的应用下,找到您要限制访问的负载均衡器后端服务。点击 IAP 切换开关,为资源启用 IAP。
- 在出现的开启 IAP 窗口中,点击开启以确认您希望使用 IAP 保护资源。开启 IAP 后,它需要与负载均衡器的所有连接的登录凭据。只有具有项目的 IAP-Secured Web App User 角色的账号才能获得访问权限。
如需授权 IAP 将流量发送到后端 Cloud Run 服务,请按照向服务添加主账号中的说明添加以下主账号和角色。
- 主要用户:
service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
- 角色:Cloud Run Invoker
- 主要用户:
gcloud
- 按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。
- 保存 OAuth 客户端 ID 和 Secret。
- 如果您之前尚未创建服务账号,请运行以下命令创建一个服务账号。如果您之前创建了服务账号,运行该命令不会创建重复的服务账号。
gcloud beta services identity create \ --service=iap.googleapis.com --project=PROJECT_ID
- 运行以下命令,向在上一步中创建的服务账号授予调用方权限。
gcloud run services add-iam-policy-binding SERVICE-NAME \ --member='serviceAccount:service-PROJECT-NUMBER@gcp-sa-iap.iam.gserviceaccount.com' \ --role='roles/run.invoker'
通过运行全局范围或区域范围的命令来启用 IAP,具体取决于您的负载均衡器后端服务是全球性还是区域性。使用上一步中的 OAuth 客户端 ID 和 Secret。
全局范围
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
区域范围
替换以下内容:gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
- BACKEND_SERVICE_NAME:后端服务的名称。
- CLIENT_ID:上一步中的 OAuth 客户端 ID。
- CLIENT_SECRET:上一步中的 OAuth 客户端 Secret。
- REGION_NAME:要在其中启用 IAP 的区域。
启用 IAP 后,您可以使用 Google Cloud CLI 通过 Identity and Access Management 角色 roles/iap.httpsResourceAccessor
修改 IAP 访问权限政策。如需了解详情,请参阅管理角色和权限。