在 Compute Engine 上,您可以使用 OS Login 向用户授予虚拟机访问权限,并限制具有 sudo
访问权限的用户。如果您想要控制哪些用户可以查看或运行虚拟机中的特定文件和可执行文件,则可以使用操作系统政策发布政策,以自动集中管理虚拟舰队中的文件。
本教程介绍如何使用 OS Login 群组和操作系统政策向一组没有 sudo
访问权限的用户授予对多个虚拟机上的 auth.log
文件 (/var/log/auth.log
) 的查看权限。
在大多数默认配置中,auth.log
文件权限设置为 640
,并且该文件由群组 adm
拥有。未被授予 roles/compute.osAdminLogin
IAM 角色的用户不在 adm
群组中,没有 sudo
访问权限,因此没有该文件的读取权限。
本教程重点介绍如何管理用户对某个特定文件的权限,但您可以修改并使用该工作流来设置对虚拟机上其他文件或可执行文件的权限。
目标
在本教程中,您将了解以下内容:
- 如何创建 OS Login Linux 群组
- 如何使用操作系统政策分配同时在多个虚拟机中更改文件的群组权限
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
您可使用价格计算器根据您的预计使用情况来估算费用。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
Google Cloud 新用户可能有资格申请免费试用。准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 安装或更新到 Google Cloud CLI 的最新版本。
- 确保您是组织的 Cloud Identity 群组管理员。如果您不是群组管理员,请让组织的群组管理员为您创建 OS Login Linux 群组。
- 启用虚拟机管理器。
准备环境
在授予对 auth.log
文件的访问权限之前,您需要创建一些虚拟机。
使用 gcloud compute instances bulk create
命令创建三个虚拟机:
gcloud compute instances bulk create \ --name-pattern=tutorial-# \ --zone=us-west1-a \ --count=3 \ --labels=vm=tutorial \ --metadata=enable-oslogin=TRUE
您会看到类似如下内容的消息:
`Bulk create request finished with status message: [VM instances created: 3, failed: 0.]`
设置 auth.log
文件的群组权限
如需向用户授予 auth.log
文件的读取权限,而不向其授予 roles/compute.osAdminLogin
IAM 角色,请将拥有该文件的群组更改为用户所属的 Linux 群组。
创建 OS Login Linux 群组
您可以创建 OS Login Linux 群组,以在启用了 OS Login 的每个虚拟机上添加补充的 Linux 群组。通过创建 OS Login Linux 群组而不是本地补充 Linux 群组,您可以按统一的方式控制所有虚拟机上的 Linux 群组。
如需创建 OS Login Linux 群组,请使用 gcloud beta identity groups create
命令:
gcloud beta identity groups create logaccess@ORGANIZATION_DOMAIN \ --organization=ORGANIZATION_DOMAIN \ --posix-group=gid=12345,name=logaccess
将 ORGANIZATION_DOMAIN
替换为与您的组织关联的网域 (example.com
)。
创建操作系统政策分配任务
您可以使用操作系统政策自动集中配置虚拟机。您需要使用操作系统政策分配将操作系统政策应用于虚拟机。通过创建包含更改 auth.log
文件默认组的操作系统政策的操作系统政策分配,您可以同时在多个虚拟机中更改 auth.log
文件的默认组,而不是一次将更改应用于一个虚拟机。
要创建操作系统政策分配,请执行以下操作:
在您的工作站上打开一个终端。
运行以下命令来创建操作系统政策分配
.yaml
文件:touch tutorial-os-policy-assignment.yaml
在文本编辑器中打开
tutorial-os-policy-assignment.yaml
文件并添加以下规范:
将操作系统政策分配应用于虚拟机
要将操作系统政策分配应用于虚拟机,请执行以下操作:
使用
gcloud compute os-config os-policy-assignments create
命令应用操作系统政策:gcloud compute os-config os-policy-assignments create log-access-assignment \ --location=us-west1-a \ --file=log-access-os-policy-assignment.yaml \ --async
操作系统政策分配会根据
tutorial-os-policy-assignment.yaml
文件中包含的发布规范发布到虚拟机。使用
gcloud compute os-config os-policy-assignment-reports list
命令确认操作系统政策分配已成功发布到虚拟机,并且操作系统政策分配已成功更新默认群组:gcloud compute os-config os-policy-assignment-reports list --location=us-west1-a
将用户添加到 OS Login Linux 群组
将用户添加到 OS Login Linux 群组时,用户将在启用了 OS Login 的所有虚拟机中继承该群组的权限。在本教程中,您添加到 logaccess
群组的任何用户都可以在没有 roles/compute.osAdminLogin
IAM 角色的情况下查看 auth.log
文件。
查看 Cloud Identity 帮助文档,了解如何将用户添加到 logaccess
群组。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
逐个删除资源
使用 gcloud compute instances delete
命令删除您创建的虚拟机:
gcloud compute instances delete tutorial-1 tutorial-2 tutorial-3 \ --zone=us-west1-a
后续步骤
- 详细了解 OS Login
- 详细了解虚拟机管理器
- 探索有关 Google Cloud 的参考架构、图表和最佳实践。查看我们的 Cloud 架构中心。