第 3 步:配置访问权限
本部分根据您的需求,提供了有关如何以不同方式授予对 MDE 部署的访问权限的指南。
通过 IAP 建立 SSH 隧道
如需连接到 MDE 服务的专用 IP,您可以使用 SSH 隧道连接到代理虚拟机。借助此方法,您可以使用 Postman 等本地工具与 MDE API 进行交互。
标准 MDE 部署会创建一个名为 mde-proxy 的代理虚拟机。此机器可以将传入的请求代理到 MDE API 网关或 MDE 网页界面。此虚拟机只有专用 IP,但借助 Identity-Aware Proxy (IAP) 进行 TCP 转发,您可以创建一条安全的 SSH 隧道来连接到此机器。本部分的其余内容将介绍如何配置 IAP 以将流量隧道传输到 mde-proxy,以及如何从工作站创建到该服务器的隧道:
在 Google Cloud 控制台中,前往 IAP,然后点击启用 API。此操作可能需要几分钟才能完成。
在 Google Cloud 控制台中,前往 IAP,然后点击 SSH 和 TCP 资源。
向获授权使用 IAP 的用户授予通过 IAP 连接到
mde-proxy的权限:在用户可以使用 IAP 连接到
mde-proxy之前,请按照以下说明向他们授予roles/iap.tunnelResourceAccessor角色:从列表中选择 mde-proxy。
点击右侧面板中的添加主账号。
输入要授予访问权限的主账号的电子邮件地址。
选择
IAP-secured Tunnel User角色。
使用以下命令创建指向 MDE API 的隧道:
export MDE_PROXY_ZONE=$(gcloud compute instances list --filter="mde-proxy" \ --format="value(zone)") gcloud compute ssh mde-proxy \ --zone "$MDE_PROXY_ZONE" --tunnel-through-iap \ -- -N -L 8080:api.mde.cloud.google.com:80运行命令后,您可以在
http://localhost:8080下访问 MDE API。创建通往 MDE 网页界面的隧道。
如果您在第 3 步中创建了指向 MDE API 的隧道,则可以打开一个新终端,以便稍后执行命令。连接到 MDE API 和 MDE 网页界面的 SSH 隧道可以并行运行。
export MDE_PROXY_ZONE=$(gcloud compute instances list --filter="mde-proxy" \ --format="value(zone)") gcloud compute ssh mde-proxy \ --zone "$MDE_PROXY_ZONE" --tunnel-through-iap \ -- -N -L 8081:ui.mde.cloud.google.com:80运行该命令后,即可通过
http://localhost:8081访问 MDE 网页界面。
配置 Identity-Aware Proxy
借助 Identity-Aware Proxy (IAP),您可以安全地连接到 MDE API 和网页界面,还可以限制对 MDE 网页界面的外部访问权限,仅允许授权用户访问(如果您在部署时选择了“外部负载平衡器”选项)。
如需使用 IAP,您必须先启用 IAP 服务 API(如果您尚未这样做),然后配置 OAuth 屏幕:
在 Google Cloud 控制台中,前往 IAP,然后点击启用 API。此操作可能需要几分钟才能完成。
为 IAP 配置 OAuth 权限请求页面:
在 Google Cloud 控制台中,前往 Google Auth Platform 页面,并在系统提示时选择 MDE 部署项目。
- 在“概览”页面上,点击创建 OAuth 客户端。
- 选择 Web 应用作为应用类型。
- 输入您要显示的应用名称,例如
MDE。 - 在弹出式窗口中,依次点击创建和确定。
- 在品牌推广页面上,确保您看到应用名称、用户支持电子邮件地址和开发者联系信息。
如需稍后更改 OAuth 同意屏幕上的信息(例如产品名称或电子邮件地址),请重复上述步骤配置同意屏幕。
配置对网页界面外部 HTTP 负载平衡器的访问权限
在本部分中,您将使用 IAP 配置对 MDE 网页界面外部 HTTP 负载平衡器的访问权限。
如果您为 MDE 网页界面启用了外部 HTTP 负载平衡器,则必须使用 IAP 将应用访问权限限制为仅限授权用户。
准备工作
请确保您已满足以下前提条件:
- 您通过 MDE 网页界面部署了 MDE。
- 您已使用外部 HTTP 负载平衡器部署 MDE Web 界面。
- 您已完成常规 IAP 配置步骤。
步骤
在 Google Cloud 控制台中,前往 IAP 页面。
找到与外部界面服务对应的资源(查找
mde-ui-ext-service)。在该资源的 IAP 列中,将开关切换为已启用。
在确认对话框中,点击开启。
选中资源名称旁边的复选框。
在右侧面板中,点击添加主账号。
输入您要授予访问权限的用户或群组的电子邮件地址。
在角色下拉菜单中,选择 Cloud IAP > IAP-secured Web App User。
点击保存。
跨组织访问权限(可选)
默认情况下,IAP 使用 Google 管理的 OAuth 客户端,这会严格限制对与项目相同的 Google Cloud 组织内的用户的访问权限。如果您的部署需要外部用户(使用其他网域的合作伙伴)访问,您必须使用配置了外部用户类型的自定义 OAuth 客户端。
如需了解详情,请参阅有关将自定义 OAuth 客户端与 IAP 搭配使用和为 GKE 启用 IAP 的官方 Google Cloud 文档。
您可以使用以下方法之一进行配置:
方法 A:直接通过控制台配置(无需 GKE Secret)
如果您的 GKE BackendConfig 不管理 IAP 设置(即没有 iap 块,允许 GKE Ingress 继承现有设置),您可以在控制台中直接配置自定义客户端:
- 将项目的 OAuth 权限请求页面配置为外部(请参阅上文中的配置 OAuth 权限请求页面部分)。 如果应用仍处于“测试”状态,请确保将外部用户添加到测试用户列表中。
- 前往 IAP 页面。
- 对于
mde-ui-ext-service资源,点击操作列中的更多选项(三点状图标),然后选择设置。 - 选择自定义 OAuth。
- 点击 Auto Generate Credentials(或提供您在“API 和服务”中手动创建的现有凭据)。
- 点击保存。
方法 B:GKE 管理的配置(使用 Kubernetes Secret)
如果您希望使用 Kubernetes 清单 (GitOps) 管理 IAP 配置,则必须将凭据存储在 Secret 中,并在 BackendConfig 中引用该凭据:
- 将 OAuth 权限请求页面配置为外部,然后在 API 和服务 > 凭据(Web 应用类型)下手动创建 OAuth 客户端凭据。
- 在集群中创建 Kubernetes Secret:
sh kubectl create secret generic iap-oauth-secret \ --namespace=mde \ --from-literal=client_id=YOUR_CLIENT_ID \ --from-literal=client_secret=YOUR_CLIENT_SECRET - 更新服务的
BackendConfig以引用相应 Secret:yaml spec: iap: enabled: true oauthclientCredentials: secretName: iap-oauth-secret
为 MDE 网页界面配置 DNS
如果您为 MDE 网页界面启用了外部 HTTP 负载均衡器,则必须将您分配给 input.tfvars 中变量 MDE_UI_DOMAIN_NAME 的网域名的 A 记录设置为已部署的外部 HTTP 负载均衡器的 IP 地址,以完成 Google 管理的 SSL 证书的预配。
您可以使用以下命令查找外部 HTTP 负载平衡器的 IP 地址:
gcloud compute addresses list --filter="name~'.*mde-ui.*'" --format="value(address)" --global
如需详细了解如何创建 A 记录,请咨询您的 DNS 主机。