作为一名云专业人员,您或许已熟知 Azure 标识和访问管理 (IAM) 架构,并运用过以下某些最佳实践。对于 IAM,人们一般关心的问题有:
- 管理资源访问权限的最佳方法是什么?
- 如何管理访问权限,使用户只能访问其真正需要的资源?
在 Azure 中,您的组织可以综合使用 IAM、Azure Active Directory (Azure AD)、用户和角色以及附带的政策来控制对不同 Azure 账号的访问权限。
Azure AD 是一项多租户云目录和身份管理服务,提供 Azure 资源的访问权限控制和管理机制。

现在,您将探索如何在 Google Cloud 中实施 IAM 控制。
概览
在本实验中,您将学习如何使用 Service Account User 角色,以及如何授予角色。
目标
在本实验中,您将学习如何执行以下任务:
- 使用 IAM 实施访问权限控制
- 限制对特定功能或资源的访问权限
- 使用 Service Account User 角色
实验设置
对于每个实验,您都会免费获得一个新的 Google Cloud 项目及一组资源,它们都有固定的使用时限。
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
-
打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单,或在搜索字段中输入服务或产品的名称。
任务 1. 设置两位用户
以第一位用户的身份登录 Cloud 控制台
- 本实验提供了两个用户名,您可在连接详情对话框中找到它们。在一个无痕式窗口中照常登录 Cloud 控制台,使用 Qwiklabs 中提供的用户名 1。请注意,两个用户名使用的密码是相同的。
以第二位用户的身份登录 Cloud 控制台
- 在无痕式窗口中打开另一个标签页。
- 访问 console.cloud.google.com。
- 点击屏幕右上角的用户图标,然后点击添加账号。
- 使用 Qwiklabs 中提供的用户名 2 登录 Cloud 控制台。
注意:如果您在进行本实验的过程中退出用户名 1 账号,Qwiklabs 会删除用户名 2 账号。因此请保持用户名 1 的登录状态,直至您完成使用用户名 2 执行的任务。
任务 2. 浏览 IAM 控制台
确保您所在的是用户名 1 的 Cloud 控制台对应的标签页。
前往 IAM 控制台并浏览角色
- 在导航菜单 (
) 中,依次点击 IAM 和管理 > IAM。
- 点击授予访问权限,然后在下拉菜单中浏览角色。
浏览角色菜单,留意与各资源关联的不同角色。
- 点击取消。
- 切换至用户名 2 的 Cloud 控制台对应的标签页。
- 在导航菜单 (
) 中,依次点击 IAM 和管理 > IAM。在 Qwiklabs 的 连接详情对话框中浏览列表,寻找包含与用户名 1 和用户名 2 相关联的名称的行。
注意:用户名 2 目前能访问项目,但没有 Project Owner 角色,因此无法修改任何角色。将光标悬停在用户名 2 的铅笔图标上方可确认这一点。
- 切换回用户名 1 的 Cloud 控制台对应的标签页。
- 在 IAM 控制台中,点击用户名 2 对应的铅笔图标。用户名 2 目前具有 Viewer 角色。切勿更改这个项目角色。
- 点击取消。
任务 3. 准备资源以进行访问权限测试
创建存储桶并上传示例文件
-
如果您目前未在用户名 1 的 Cloud 控制台对应的标签页上,请切换到此标签页。
-
在导航菜单 (
) 中,依次点击 Cloud Storage > 存储桶。
-
点击创建存储桶。
-
指定以下信息,将其他设置保留默认值:
属性 |
值(按照说明输入值或选择选项) |
名称 |
输入全局唯一的名称 |
位置类型 |
多区域 |
注意:请记下存储桶名称:稍后的步骤中需要用到此信息,届时我们会称之为 [您的存储桶名称]
- 点击创建。
注意:如果您看到系统将禁止公开访问提示,并且禁止公开访问此存储桶选项处于选中状态,请点击确认。
- 点击上传文件。
- 上传您本地机器上的任意示例文件。
- 文件上传完毕后,点击包含该文件的行末尾处的三个点,然后点击重命名。
- 将该文件重命名为 sample.txt,然后点击重命名。
点击“检查我的进度”,验证已完成以下目标:
创建存储桶并上传示例文件
验证 Project Viewer 访问权限
-
切换至用户名 2 的 Cloud 控制台对应的标签页。
-
在控制台中,前往导航菜单 > Cloud Storage > 存储桶。
-
验证用户名 2 可以查看存储桶。
任务 4. 移除项目访问权限
移除“用户名 2”的 Project Viewer 访问权限
- 切换至用户名 1 的 Cloud 控制台对应的标签页。
- 在导航菜单 (
) 中,依次点击 IAM 和管理 > IAM。
- 选择用户名 2,点击移除访问权限。
注意:请确认您移除的是用户名 2 的访问权限。如果您不小心移除了用户名 1 的访问权限,则必须重新开始本实验!
- 点击确认进行确认。
您会发现该用户已从列表中消失!该用户现在已经失去了访问权限。
点击“检查我的进度”,验证已完成以下目标:
移除项目访问权限
验证“用户名 2”已失去访问权限
-
切换至用户名 2 的 Cloud 控制台对应的标签页。
-
在导航菜单 (
) 中,依次点击 Cloud 概览 > 信息中心。
-
在导航菜单 (
) 中,依次点击 Cloud Storage > 存储桶。
此时会显示一个错误。如果未看到错误,请刷新页面。用户名 2 仍有一个 Google Cloud 账号,但无权访问项目。
任务 5. 添加存储访问权限
添加存储权限
- 从 Qwiklabs 的连接详情对话框中复制用户名 2 的值。
- 切换至用户名 1 的 Cloud 控制台对应的标签页。
- 在导航菜单 (
) 中,依次点击 IAM 和管理 > IAM。
- 点击授予访问权限以添加用户。
- 将您从 Qwiklabs 的连接详情对话框中复制的用户名 2 值粘贴到新的主账号中。
- 在选择角色中,依次选择 Cloud Storage > Storage Object Viewer。
- 点击保存。
点击“检查我的进度”,验证已完成以下目标:
添加存储权限
验证“用户名 2”已失去访问权限
- 切换至用户名 2 的 Cloud 控制台对应的标签页。
注意:用户名 2 没有 Project Viewer 角色,因此该用户无法在控制台中查看该项目,也无法查看其任何资源。不过,此用户对 Cloud Storage 拥有特定的访问权限。
- 如需启动 Cloud Shell,请点击激活 Cloud Shell (
)。如果看到提示,点击继续。
- 如需查看您先前创建的存储桶的内容,请运行以下命令,并将
[您的存储桶]
替换为之前创建的 Cloud Storage 存储桶的唯一名称:
gcloud storage ls gs://[您的存储桶名称]
如您所见,用户名 2 对 Cloud Storage 具有有限的访问权限。
- 关闭用户名 2 的 Cloud 控制台对应的标签页。本实验的其余部分将在用户名 1 的 Cloud 控制台对应的标签页中执行。
- 切换至用户名 1 的 Cloud 控制台对应的标签页。
任务 6. 设置 Service Account User 角色
在本实验的这一部分,您将为服务账号分配较小的权限范围,并了解如何使用 Service Account User 角色。
创建服务账号
- 在导航菜单 (
) 中,依次点击 IAM 和管理 > 服务账号。
- 点击 + 创建服务账号。
- 将服务账号名称指定为 read-bucket-objects。
- 点击创建并继续。
- 在选择角色中,依次选择 Cloud Storage > Storage Object Viewer。
- 点击继续。
- 点击完成。
向服务账号添加用户
- 选择 read-bucket-objects 服务账号。
- 点击服务账号名称右侧的三个点。随后点击管理权限
注意:您将为该用户授予 Service Account User 角色,这样该用户便可在自己有权访问的虚拟机中使用服务账号。您可以为特定用户、群组或网域执行此活动。出于培训目的,您将向一家名为 Altostrat.com 的公司中的每位员工授予 Service Account User 角色。Altostrat.com 是一家用于演示和培训的虚构公司。
- 点击授予访问权限按钮。指定以下信息,将其他设置保留默认值:
属性 |
值(按照说明输入值或选择选项) |
新的主账号 |
altostrat.com |
角色 |
服务账号 > Service Account User |
- 点击保存。
授予 Compute Engine 访问权限
现在,您要为 Altostrat 的整个组织授予 Compute Engine Admin 角色。
- 在导航菜单 (
) 中,依次点击 IAM 和管理 > IAM。
- 点击授予访问权限。
- 指定以下信息,将其他设置保留默认值:
属性 |
值(按照说明输入值或选择选项) |
新的主账号 |
altostrat.com |
选择角色 |
Compute Engine > Compute Instance Admin (v1) |
- 点击保存。
注意:此步骤用来练习针对特定用户执行的活动。
此操作会向用户授予针对一个虚拟机实例的有限能力。之后,用户将可通过 SSH 连接到虚拟机,并执行一些管理任务。
使用具有 Service Account User 角色的账号创建一个虚拟机
- 在导航菜单 (
) 中,点击 Compute Engine > 虚拟机实例。
- 点击创建实例。
- 指定以下信息,将其他设置保留默认值:
属性 |
值(按照说明输入值或选择选项) |
名称 |
demoiam |
区域 |
|
可用区 |
|
系列 |
E2 |
机器类型 |
e2-micro(2 个 vCPU,1 GB 内存) |
启动磁盘 |
Debian GNU/Linux 11 (bullseye) |
服务账号 |
read-bucket-objects |
访问权限范围 |
针对每个 API 设置访问权限 |
存储 |
读写 |
- 点击创建。
点击“检查我的进度”,验证已完成以下目标:
设置 Service Account User 并创建一个虚拟机
任务 7. 探索 Service Account User 角色
此时,您可以测试该用户的访问权限,只需使用此用户通过 SSH 连接到虚拟机并执行后续操作即可。作为项目所有者,您已拥有 Service Account User 角色。因此您可以通过 Cloud 控制台使用 SSH 访问虚拟机,从而模拟该用户将会获得的体验。
您执行的操作和获得的结果与目标用户的体验完全相同。
使用 Service Account User 角色
- 对于 demoiam,点击 SSH 以启动一个终端并进行连接。
- 运行以下命令:
gcloud compute instances list
结果(输出示例):
ERROR: (gcloud.compute.instances.list) Some requests did not succeed:
- Required 'compute.zones.list' permission for 'projects/qwiklabs-gcp'
发生了什么情况?这是为什么?
- 从您先前创建的存储桶中复制 sample.txt 文件。请注意,下面的命令末尾处包含一个英文句点。它表示复制到“此位置”:
gcloud storage cp gs://[您的存储桶名称]/sample.txt .
结果(输出示例):
Copying gs://train-test-iam/sample.txt...
/ [1 files][ 28.0 B/ 28.0 B]
Operation completed over 1 objects/28.0 B.
- 如需重命名您复制的文件,请运行以下命令:
mv sample.txt sample2.txt
- 如需将重命名的文件复制回存储桶,请运行以下命令:
gcloud storage cp sample2.txt gs://[您的存储桶名称]
结果(输出示例):
AccessDeniedException: 403 Caller does not have storage.objects.create access to bucket train-test-iam.
注意:发生了什么情况?
您通过 SSH 连接到了实例,因此您可以充当服务账号,实际上可获得相同的权限。
启动实例的服务账号具有 Storage Viewer 角色,这允许该账号从项目的 GCS 存储桶下载对象。
若要列出一个项目内的实例,您需要授予 compute.instance.list 权限。该服务账号没有此权限,因此您无法列出项目内运行的实例。
不过该服务账号确实拥有对象下载权限,可以从存储桶下载对象。它没有对象写入权限,因此您收到了 403 访问遭拒消息。
- 在导航菜单 (
) 中,依次点击 IAM 和管理 > IAM。
- 浏览列表,找到包含 read-bucket-objects 的行,点击铅笔图标。read-bucket-objects 目前具有 Storage Object Viewer 角色。在角色处依次选择 Cloud Storage > Storage Object Creator,以更改角色。
- 点击保存。
- 返回到 demoiam 的 SSH 窗口
- 如需将重命名的文件复制回存储桶,请运行以下命令:
gcloud storage cp sample2.txt gs://[您的存储桶名称]
这次该命令可以成功执行,因为该服务账号拥有正确的权限。
任务 8. 回顾
在此实验中,您练习了授予和撤消 IAM 角色的步骤,首先是为用户名 2 这个用户授予和撤消了角色,然后为 Service Account User 账户授予了 IAM 角色。您可以分配 Service Account User 凭据,将其“融入”虚拟机,从而创建特定用途的授权堡垒主机。
总结
无论是在 Azure 中还是在 Google Cloud 中,IAM 都是一项可帮助您安全地控制对不同服务和资源的访问权限的 Web 服务。您可以使用此工具来管理身份验证(谁可以访问?)和授权(他们可以执行哪些操作?)。
您还可以创建和管理不同的主体,例如:
Google Cloud IAM 和 Azure AD 在运作方式上有很多相似之处。两个系统均提供基于角色的访问控制、多重身份验证和用户管理等众多功能,这些功能可让您轻松地保护云基础设施的安全。在这两个系统中,您还可以将管理任务委托给他人,也能通过精细的政策控制对资源的访问权限。
两个系统之间也有一些不同之处。Google Cloud IAM 使用直观而简单的界面,而 Azure AD 则包含一些独特的功能,比如条件式访问权限,以及与其他应用集成的单点登录机制。
结束实验
完成实验后,请点击结束实验。Google Cloud Skills Boost 会移除您使用过的资源并为您清理帐号。
系统会提示您为实验体验评分。请选择相应的星级数,输入评论,然后点击提交。
星级数的含义如下:
- 1 颗星 = 非常不满意
- 2 颗星 = 不满意
- 3 颗星 = 一般
- 4 颗星 = 满意
- 5 颗星 = 非常满意
如果您不想提供反馈,可以关闭该对话框。
如果要留言反馈、提出建议或做出更正,请使用支持标签页。
版权所有 2020 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。