第 3 步:配置访问权限
本部分根据您的需求,提供了有关如何授予对 MDE 部署的访问权限的不同方式的指南。
通过 IAP 建立 SSH 隧道
如需连接到 MDE 服务的专用 IP,您可以使用 SSH 隧道连接到代理虚拟机。借助此方法,您可以使用 Postman 等本地工具与 MDE API 进行交互。
标准 MDE 部署会创建一个名为 mde-proxy 的代理虚拟机。此机器可以将传入请求代理到 MDE API 网关或 MDE 网页界面。此虚拟机
仅具有专用 IP,但 IAP 允许您使用
Identity-Aware Proxy (IAP) for TCP 转发为此机器创建安全的 SSH
隧道。
本部分的其余内容介绍了如何配置 IAP 以将流量隧道传输到 mde-proxy,以及如何从工作站创建到该虚拟机的隧道:
在 Google Cloud 控制台中,前往 IAP ,然后点击 Enable API(启用 API)。此操作可能需要几分钟才能完成。
在 Google Cloud 控制台中,前往 IAP,然后 点击 SSH AND TCP RESOURCES(SSH 和 TCP 资源)。
向获授权使用 IAP 通过 IAP 连接到
mde-proxy的用户授予权限:在用户可以使用 IAP 连接到
mde-proxy之前,请按照以下说明向其授予roles/iap.tunnelResourceAccessor角色:从列表中选择 mde-proxy 。
点击右侧面板中的 Add Principal (添加主账号)。
输入您要授予访问权限的主账号的电子邮件地址。
选择
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 和网页界面的内部 IP,如果您使用外部负载平衡器选项部署了 MDE Web 界面,还可以将对 MDE Web 界面的外部访问权限限制为仅限获授权的用户。
如需使用 IAP,您必须先启用 IAP 服务 API(如果您尚未启用),然后配置 OAuth 屏幕:
在 Google Cloud 控制台中,前往 IAP,然后 点击 Enable API。此操作可能需要几分钟才能完成。
为 IAP 配置 OAuth 权限请求页面:
- 在 Google Cloud 控制台中,前往 Google Auth Platform 页面,并在系统提示时选择 MDE 部署项目。
- 在“概览”页面上,点击开始 。
- 输入您要显示的应用名称 ,例如
MDE。 - 将您的电子邮件地址添加为用户支持邮箱 ,然后点击下一步 。
- 在“受众群体”部分,选择外部 ,然后点击下一步 。
- 将您的电子邮件地址添加为联系信息 ,然后点击下一步 。
- 阅读并同意 Google API 服务用户数据政策,然后点击继续 。
- 点击创建 。
配置对网页界面外部 HTTP 负载平衡器的访问权限
在本部分中,您将使用 IAP 配置对 MDE 网页界面外部 HTTP 负载平衡器的访问权限。
如果您为 MDE 网页界面启用了外部 HTTP 负载平衡器,则必须使用 IAP 将对应用的访问权限限制为仅限获授权的用户。
准备工作
请务必满足以下前提条件:
- 您部署了带有 MDE 网页界面的 MDE。
- 您部署了带有外部 HTTP 负载平衡器的 MDE Web 界面。
- 您已完成常规 IAP 配置步骤。
步骤
在 Google Cloud 控制台中,前往 IAP 页面。
找到与外部界面服务对应的资源(查找
mde-ui-ext-service)。在该资源的 IAP 列中,将开关切换为已启用 。
在确认对话框中,阅读并接受配置要求,然后点击 Turn On (开启)。
激活后,选中资源名称 (
mde-ui-ext-service) 旁边的复选框。在右侧面板中,点击 Add Principal (添加主账号)。
输入您要授予访问权限的用户或群组的电子邮件地址。
在角色 下拉列表中,选择 Cloud IAP > IAP-secured Web App User (Cloud IAP > 受 IAP 保护的 Web 应用用户)。
点击保存 。
跨组织访问权限(可选)
默认情况下,IAP 使用 Google 管理的 OAuth 客户端,这些客户端会严格 限制对与项目位于同一 Google Cloud 组织内的用户的访问权限。 如果您的部署需要外部用户(使用不同网域的合作伙伴)的访问权限,则必须使用配置了外部 用户类型的自定义 OAuth 客户端 。
如需了解详情,请参阅有关 将自定义 OAuth 客户端与 IAP 搭配使用 以及为 GKE 启用 IAP的官方 Google Cloud 文档。
您可以使用以下方法之一进行配置:
方法 A:直接控制台配置(无 GKE Secret)
如果您的 GKE BackendConfig 不管理 IAP 设置(即没有 iap 块,允许 GKE Ingress 继承现有设置),则可以直接在控制台中配置自定义客户端:
- 前往 IAP 页面。
- 对于
mde-ui-ext-service资源,点击操作 列中的更多选项 (三个点),然后选择设置 。 - 选择 Custom OAuth (自定义 OAuth)。
- 点击 Auto Generate Credentials (自动生成凭据)(如果您在“API 和服务”中手动创建了凭据,则提供现有凭据)。
- 点击保存 。
方法 B:GKE 管理的配置(使用 Kubernetes Secret)
如果您希望使用 Kubernetes 清单 (GitOps) 管理 IAP 配置,则必须将凭据存储在 Secret 中,并在 BackendConfig 中引用该 Secret:
- 将 OAuth 权限请求页面 配置为外部 ,然后在 APIs & Services > Credentials (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 主机。