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

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

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

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

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

    1. 从列表中选择 mde-proxy

    2. 点击右侧面板中的 Add Principal (添加主账号)。

    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 和网页界面的内部 IP,如果您使用外部负载平衡器选项部署了 MDE Web 界面,还可以将对 MDE Web 界面的外部访问权限限制为仅限获授权的用户。

如需使用 IAP,您必须先启用 IAP 服务 API(如果您尚未启用),然后配置 OAuth 屏幕:

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

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

    1. 在 Google Cloud 控制台中,前往 Google Auth Platform 页面,并在系统提示时选择 MDE 部署项目。
    2. 在“概览”页面上,点击开始
    3. 输入您要显示的应用名称 ,例如 MDE
    4. 将您的电子邮件地址添加为用户支持邮箱 ,然后点击下一步
    5. 在“受众群体”部分,选择外部 ,然后点击下一步
    6. 将您的电子邮件地址添加为联系信息 ,然后点击下一步
    7. 阅读并同意 Google API 服务用户数据政策,然后点击继续
    8. 点击创建

配置对网页界面外部 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. 在确认对话框中,阅读并接受配置要求,然后点击 Turn On (开启)。

  5. 激活后,选中资源名称 (mde-ui-ext-service) 旁边的复选框。

  6. 在右侧面板中,点击 Add Principal (添加主账号)。

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

  8. 角色 下拉列表中,选择 Cloud IAP > IAP-secured Web App User (Cloud IAP > 受 IAP 保护的 Web 应用用户)。

  9. 点击保存

跨组织访问权限(可选)

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

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

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

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

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

  1. 前往 IAP 页面
  2. 对于 mde-ui-ext-service 资源,点击操作 列中的更多选项 (三个点),然后选择设置
  3. 选择 Custom OAuth (自定义 OAuth)。
  4. 点击 Auto Generate Credentials (自动生成凭据)(如果您在“API 和服务”中手动创建了凭据,则提供现有凭据)。
  5. 点击保存

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

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

  1. OAuth 权限请求页面 配置为外部 ,然后在 APIs & Services > Credentials (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 主机。