第 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,以及如何从工作站创建到该服务器的隧道:

  1. 在 Google Cloud 控制台中,前往 IAP,然后点击启用 API。此操作可能需要几分钟才能完成。

  2. 在 Google Cloud 控制台中,前往 IAP,然后点击 SSH 和 TCP 资源

  3. 向获授权使用 IAP 的用户授予通过 IAP 连接到 mde-proxy 的权限:

    在用户可以使用 IAP 连接到 mde-proxy 之前,请按照以下说明向他们授予 roles/iap.tunnelResourceAccessor 角色

    1. 从列表中选择 mde-proxy

    2. 点击右侧面板中的添加主账号

    3. 输入要授予访问权限的主账号的电子邮件地址。

    4. 选择 IAP-secured Tunnel User 角色。

  4. 使用以下命令创建指向 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。

  5. 创建通往 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 屏幕:

  1. 在 Google Cloud 控制台中,前往 IAP,然后点击启用 API。此操作可能需要几分钟才能完成。

  2. 为 IAP 配置 OAuth 权限请求页面:

    1. 在 Google Cloud 控制台中,前往 Google Auth Platform 页面,并在系统提示时选择 MDE 部署项目。

      1. 在“概览”页面上,点击创建 OAuth 客户端
      2. 选择 Web 应用作为应用类型。
      3. 输入您要显示的应用名称,例如 MDE
      4. 在弹出式窗口中,依次点击创建确定
      5. 品牌推广页面上,确保您看到应用名称用户支持电子邮件地址开发者联系信息

    如需稍后更改 OAuth 同意屏幕上的信息(例如产品名称或电子邮件地址),请重复上述步骤配置同意屏幕。

配置对网页界面外部 HTTP 负载平衡器的访问权限

在本部分中,您将使用 IAP 配置对 MDE 网页界面外部 HTTP 负载平衡器的访问权限。

如果您为 MDE 网页界面启用了外部 HTTP 负载平衡器,则必须使用 IAP 将应用访问权限限制为仅限授权用户。

准备工作

请确保您已满足以下前提条件:

  • 您通过 MDE 网页界面部署了 MDE。
  • 您已使用外部 HTTP 负载平衡器部署 MDE Web 界面。
  • 您已完成常规 IAP 配置步骤。

步骤

  1. 在 Google Cloud 控制台中,前往 IAP 页面。

  2. 找到与外部界面服务对应的资源(查找 mde-ui-ext-service)。

  3. 在该资源的 IAP 列中,将开关切换为已启用

  4. 在确认对话框中,点击开启

  5. 选中资源名称旁边的复选框。

  6. 在右侧面板中,点击添加主账号

  7. 输入您要授予访问权限的用户或群组的电子邮件地址。

  8. 角色下拉菜单中,选择 Cloud IAP > IAP-secured Web App User

  9. 点击保存

跨组织访问权限(可选)

默认情况下,IAP 使用 Google 管理的 OAuth 客户端,这会严格限制对与项目相同的 Google Cloud 组织内的用户的访问权限。如果您的部署需要外部用户(使用其他网域的合作伙伴)访问,您必须使用配置了外部用户类型的自定义 OAuth 客户端

如需了解详情,请参阅有关将自定义 OAuth 客户端与 IAP 搭配使用为 GKE 启用 IAP 的官方 Google Cloud 文档。

您可以使用以下方法之一进行配置:

方法 A:直接通过控制台配置(无需 GKE Secret)

如果您的 GKE BackendConfig 不管理 IAP 设置(即没有 iap 块,允许 GKE Ingress 继承现有设置),您可以在控制台中直接配置自定义客户端:

  1. 将项目的 OAuth 权限请求页面配置为外部(请参阅上文中的配置 OAuth 权限请求页面部分)。 如果应用仍处于“测试”状态,请确保将外部用户添加到测试用户列表中。
  2. 前往 IAP 页面
  3. 对于 mde-ui-ext-service 资源,点击操作列中的更多选项(三点状图标),然后选择设置
  4. 选择自定义 OAuth
  5. 点击 Auto Generate Credentials(或提供您在“API 和服务”中手动创建的现有凭据)。
  6. 点击保存

方法 B:GKE 管理的配置(使用 Kubernetes Secret)

如果您希望使用 Kubernetes 清单 (GitOps) 管理 IAP 配置,则必须将凭据存储在 Secret 中,并在 BackendConfig 中引用该凭据:

  1. OAuth 权限请求页面配置为外部,然后在 API 和服务 > 凭据(Web 应用类型)下手动创建 OAuth 客户端凭据
  2. 在集群中创建 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
  3. 更新服务的 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 主机。