管理组织中的 OS Login

如果您使用 OS Login 管理对实例的访问权限,则可以在组织级层为 Cloud Identity 帐号设置配置。例如,您可以控制哪些人可以直接使用 OS Login API,为组织中的所有虚拟机实例启用 OS Login,以及向外部用户授予访问权限。

本主题介绍了以下任务:

准备工作

使用组织政策启用 OS Login

您可以在组织中设置 OS Login 限制条件,以确保所有新项目和在这些新项目中创建的虚拟机实例都启用了 OS Login。

设置此限制条件后,将应用以下条件:

  • 在所有新项目的项目元数据中,enable-oslogin 设置为 true
  • 在实例或项目元数据中将 enable-oslogin 设置为 false 的更新请求被拒绝。

限制

  • 您不能追溯应用此限制条件。在应用限制之前创建的实例和项目不会自动启用 OS Login。
  • 在 Google Kubernetes Engine 中运行的实例不支持 OS Login。启用 OS Login 限制条件会阻止 Google Kubernetes Engine 集群在该限制条件适用的项目中创建新实例。

    如需解决此问题,您可以在组织级层启用此限制条件,然后在具有 Google Kubernetes Engine 集群的项目中有选择地停用该限制条件。或者,您也可以选择在项目级层或文件夹级层启用 OS Login。如需详细了解如何管理组织政策,请参阅创建和管理组织政策

如需启用 OS Login 政策,您可以使用 gcloud 命令行工具对特定项目和文件夹设置 OS Login 限制条件。您还可以使用 Google Cloud Console 或 gcloud 命令行工具对整个组织设置 OS Login 限制条件。

控制台

如需通过控制台设置 OS Login 组织政策,请完成以下步骤:

  1. 在 Google Cloud Console 中,转到组织政策页面。

    转到“组织政策”页面

  2. 在政策列表中,点击要求 OS Login 查看 OS Login 限制条件。
  3. 点击修改,修改现有 OS Login 限制条件。
  4. 修改页面,选择自定义
  5. 如需对相关限制条件启用强制执行,请选择启用
  6. 点击保存应用限制设置。

gcloud

如需设置 OS Login 组织政策,请使用 gcloud beta resource-manager org-policies enable-enforce 命令。

  1. 查找您的组织 ID。

    gcloud organizations list
  2. 在组织中设置限制条件。将 organization-id 替换为您的组织 ID

        gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
            --organization=organization-id
        

您还可以将 OS Login 组织政策应用于分别带有 --folder--project 标志以及文件夹 ID 和项目 ID 的文件夹或项目。

对于文件夹,请运行以下命令:

    gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
        --folder=folder-id
    

对于项目,请运行以下命令:

    gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \
        --project=project-id
    

替换以下内容:

向组织外部的用户授予实例访问权限

默认情况下,组织外部的用户无法为组织中的实例设置 SSH 密钥,也无法获取对组织中实例的访问权限。但在某些情况下,您可能需要向属于其他组织的用户或拥有消费者 Google gmail.com 帐号的用户授予实例访问权限。

roles/compute.osLoginExternalUser IAM 角色允许外部 Google 帐号配置 POSIX 帐号信息,以便与其他 OS Login 角色互动。

如需向组织外部的用户授予 roles/compute.osLoginExternalUser 和其他必需的 OS Login 实例访问权限角色,请完成以下步骤:

  1. 在 Google Cloud Console 中,转到项目和组织选择页面。

    转到项目和组织选择页面

  2. 组织下拉菜单中,选择您的组织。
    1. 点击全部以查看您的所有组织。
    2. 点击组织的名称。
  3. 点击添加以向用户添加新角色。
  4. 指定要为其配置实例访问权限的用户的用户名。
  5. 点击选择角色以指定要向用户授予的角色。
  6. Compute Engine 角色列表中,选择 Compute OS Login External User 角色。
  7. 点击添加以确认您要向用户授予选定的角色。
  8. 如果您尚未这样做,请在项目级层或组织级层向用户授予其他 OS Login 实例访问权限角色

现在,用户可以连接项目中启用了 OS Login 的实例

控制对 OS Login API 的访问权限

组织中的成员可以使用 OS Login API 来修改其帐号。在组织级层,您可以通过设置 G Suite 管理员控制机制来限制对 OS Login API 的访问权限。如需配置 G Suite 管理员控制机制或查看配置选项,请参阅控制组织中的哪些人可以使用 Google Cloud

审核 OS Login 事件

作为 G Suite 管理员,您可以使用 G Suite Admin SDK 审核通过 OS Login API 执行的操作。通过查看这些事件,您可以跟踪用户何时添加、删除或更新 SSH 密钥,或何时删除 POSIX 帐号信息。

您可以通过使用 applicationName=gcp 调用 Activities.list(),从 G Suite Admin SDK 中检索 OS Login API 审核活动事件。如需了解详情,请参阅 G Suite Admin SDK 报告 API 文档中的 Google Cloud 活动事件

使用 Directory API 修改用户帐号

在连接实例时,OS Login 会使用您的 Cloud Identity G Suite 用户设置。如果您是组织管理员,则可以使用 Directory API 为您的 G Suite 或 Cloud Identity 用户帐号完成以下任务:

  • 修改实例登录设置。
  • 将用户设为管理员
  • 修改帐号名称和电子邮件等用户属性
  • 为用户添加和移除 SSH 密钥
  • 修改 POSIX 帐号信息
  • 更改用户在实例上连接的用户名。

如需详细了解您可以修改的帐号属性,请参阅 Directory API 参考

例如,创建一个向 directory.users.update 方法发出的 PUT 请求,并指定一个或多个要在用户帐号中更改的属性:

    PUT https://www.googleapis.com/admin/directory/v1/users/user-id-key

    {
     "posixAccounts": [
       {
        "username": "user-name",
        "uid": "uid",
        "gid": "gid",
        "homeDirectory": "user-home-path",
        "shell": "shell-path"
       }
      ],
    }
    

替换以下内容:

  • user-id-key:用户的不可变 ID。
  • user-name:Compute Engine 为用户添加到实例的用户名。此值在您的组织中必须是独一无二的。
  • uid:此用户在实例上使用的用户 ID。此属性的值必须介于 100160000 之间,或介于 655352147483647 之间。如需访问 Container-Optimized OS,UID 的值必须介于 65536214748646 之间。UID 在您的组织中必须是独一无二的。
  • gid:此用户所属实例的组 ID。
  • user-home-path:此用户在实例上使用的主目录。例如 /home/example_username
  • shell-path:用户连接实例后,指向其默认 shell 的路径。例如 /bin/bash/bin/sh

后续步骤