本页面介绍了何时以及如何为 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 页面的应用下,
找到您要限制的应用
访问权限。如需为某资源开启 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 和密钥。
-
如需启用 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 角色的 IAP 访问权限政策
roles/iap.httpsResourceAccessor
。详细了解如何管理角色和权限。
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 和密钥。
-
如需启用 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 角色的 IAP 访问权限政策
roles/iap.httpsResourceAccessor
。详细了解如何管理角色和权限。
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 角色的 IAP 访问权限政策
roles/iap.httpsResourceAccessor
。详细了解如何管理角色和权限。
Cloud Run
控制台
如果您尚未配置项目的 OAuth 同意屏幕,系统会提示您执行此操作。如需配置 OAuth 同意屏幕,请参阅设置 OAuth 同意屏幕
设置 IAP 访问权限
- 打开 Identity-Aware Proxy 页面。
前往 Identity-Aware Proxy - 选择要使用 IAP 保护的项目。
- 在 Applications(应用)下,选中您要向其添加成员的负载均衡器后端服务旁边的复选框。
- 在右侧面板上,点击添加成员。
在添加成员对话框中,输入应具有项目的 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 访问权限政策。如需了解详情,请参阅管理角色和权限。