授予对各个 Cloud Workstations 端口的访问权限

您可以使用 IAM Conditions 授予对各个工作站端口的访问权限。这对于共享对各个工作站端口的有限访问权限非常有用。例如,您可以使用 IAM Conditions 授予对工作站端口上运行的演示服务器的访问权限。

Cloud Workstations 支持 destination.port IAM Conditions 属性。

如需详细了解 IAM 条件,请参阅以下内容:

准备工作

您必须先在工作站上获得 Cloud Workstations 政策管理员 (roles/workstations.policyAdmin) 角色,然后才能授予对各个工作站端口的访问权限。

检查工作站上的 IAM 角色

确保您在工作站上拥有 Cloud Workstations User (roles/workstations.user) 和 Cloud Workstations Policy Admin (roles/workstations.policyAdmin) 角色。如果没有,请让贵组织的 Cloud Workstations Admin 为您在工作站上授予这些角色。

在工作站中启动演示服务器

请按照启动工作站指南启动工作站并连接到工作站。在工作站上运行以下命令,以便在工作站端口上启动演示服务器。

python3 -m http.server WORKSTATIONS_PORT

替换以下内容:

  • WORKSTATIONS_PORT:演示版服务器将监听的端口。例如,使用 8081。

更新工作站的条件式 IAM 政策

如需向工作站端口授予访问权限,您可以使用 Google Cloud 控制台或 gcloud CLI iam policies 命令。

控制台

如需向工作站授予条件式访问权限,请执行以下操作:

  1. 在 Google Cloud 控制台中,依次前往 Cloud Workstations > 工作站页面。

    进入“工作站”

  2. 找到您的工作站,然后点击 more_vert更多选项菜单,然后选择添加用户

    在“工作站”页面中添加用户和修改权限

  3. 如需授予条件式访问权限,请输入主账号的电子邮件地址。例如 222larabrown@gmail.com

  4. 确保选择 Cloud Workstations 用户作为角色。

  5. 更新 IAM 条件以授予特定于相应充电桩的访问权限:

    1. 点击 Add IAM Condition(添加 IAM 条件)。

    2. 指定一个标题,例如 Port 8081

    3. 条件编辑器标签页中,输入以下条件:

    destination.port == WORKSTATIONS_PORT
    

    包含目标端口 8081 条件的 IAM 条件编辑器

    1. 点击保存,完成向主账号授予对特定端口的条件性访问权限。

gcloud

  1. 使用 gcloud CLI workstations get-iam-policy 命令获取工作站 IAM 政策。此命令会将政策输出到文件 /tmp/WORKSTATIONS_NAME.yaml。如果该文件已存在,则会被覆盖。

    gcloud workstations get-iam-policy WORKSTATIONS_NAME \
      --cluster=WORKSTATIONS_CLUSTER_NAME \
      --config=WORKSTATIONS_CONFIG_NAME \
      --region=LOCATION \
      --project=WORKSTATIONS_PROJECT_ID \
      > /tmp/WORKSTATIONS_NAME.yaml
    

    替换以下内容:

    • WORKSTATIONS_NAME:工作站的名称。
    • WORKSTATIONS_CONFIG_NAME:工作站配置的名称。
    • WORKSTATIONS_CLUSTER_NAME:工作站集群的名称。
    • LOCATION:工作站集群的区域名称。
    • WORKSTATIONS_PROJECT_ID:包含您的工作站的 Cloud Workstations 项目的 ID。
  2. 如需向主账号授予有条件的访问权限,请更新上一步中下载的工作站的 IAM 政策文件:/tmp/WORKSTATIONS_NAME.yaml

    例如:

    bindings:
    - members:
      - user:YOUR_ID
        role: roles/workstations.user
    - condition:
        expression: destination.port == WORKSTATIONS_PORT
        title: Port WORKSTATIONS_PORT
      members:
      - user:PRINCIPAL
      role: roles/workstations.user
    etag: BwYlui8uSXo=
    version: 3
    

    替换以下内容:

    • YOUR_ID:您自己的登录 ID。例如 222larabrown@gmail.com
    • PRINCIPAL:您要与其共享工作站端口 WORKSTATIONS_PORT 访问权限的主账号。例如 baklavainthebalkans@gmail.com
    • WORKSTATIONS_PORT:演示版服务器正在监听的工作站端口。
  3. 使用 gcloud CLI workstations set-iam-policy 命令设置工作站的 IAM 政策。

    gcloud workstations set-iam-policy WORKSTATIONS_NAME \
      --cluster=WORKSTATIONS_CLUSTER_NAME \
      --config=WORKSTATIONS_CONFIG_NAME \
      --region=LOCATION \
      --project=WORKSTATIONS_PROJECT_ID \
      /tmp/WORKSTATIONS_NAME.yaml
    

    替换以下内容:

    • WORKSTATIONS_NAME:工作站的名称。
    • WORKSTATIONS_CONFIG_NAME:工作站配置的名称。
    • WORKSTATIONS_CLUSTER_NAME:工作站集群的名称。
    • LOCATION:工作站集群的区域名称。
    • WORKSTATIONS_PROJECT_ID:包含您的工作站的 Cloud Workstations 项目的 ID。

更新工作站的 IAM 政策后,主账号将能够访问工作站的指定端口。

分享工作站的网址

主账号将能够使用以下工作站网址访问指定的端口:

https://WORKSTATIONS_PORT-WORKSTATIONS_NAME.WORKSTATIONS_CLUSTER_NAME.cloudworkstations.dev

占位符代表以下内容:

  • WORKSTATIONS_PORT:演示版服务器监听的端口。
  • WORKSTATIONS_NAME:工作站名称。
  • WORKSTATIONS_CLUSTER_NAME:随机生成的集群标识符。
  • cloudworkstations.dev:工作站的默认域名。

主账号将无法访问其无权访问的工作站的其他端口。