![](https://cdn.qwiklabs.com/assets/labs/start_lab-f45aca49782d4033c3ff688160387ac98c66941d.png)
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a custom role using a YAML file
/ 20
Create a custom role using flags
/ 20
Update a custom role using a YAML file
/ 15
Update a custom role using flags
/ 15
Disabling a custom role
/ 15
Undeleting a custom role
/ 15
Cloud IAM 提供了适当的工具来管理资源权限,操作简单,自动化程度高。您不能直接授予用户权限。不过,您可以向其授予角色,角色捆绑了一项或多项权限。这样,您就可以将公司中的工作职责映射至多个群组和角色。用户只会获得其工作所需资源的访问权限,并且管理员可以轻松地为整个群组的用户授予默认权限。
Cloud IAM 中有两种角色:
预定义角色由 Google 创建和维护。它们的权限会根据需要自动更新,例如向 Google Cloud 添加新功能或服务时。
自定义角色是用户定义的,可让您捆绑一个或多个受支持的权限以满足您的特定需求。自定义角色并非由 Google 维护;Google Cloud 中添加了新权限、功能或服务时,您的自定义角色将不会自动更新。您可以通过将一个或多个可用的 Cloud IAM 权限组合在一起来创建自定义角色。有了权限,用户便可对 Google Cloud 资源执行特定操作。
在本实验中,您将创建、更新、删除和恢复自定义角色。
建议您先熟悉 IAM 角色,以便更有效地学习。
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
您也可以在实验详细信息面板中找到用户名。
点击下一步。
复制下面的密码,然后将其粘贴到欢迎对话框中。
您也可以在实验详细信息面板中找到密码。
点击下一步。
继续在后续页面中点击以完成相应操作:
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
点击授权。
现在,输出的内容应如下所示:
输出:
输出:
输出示例:
gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
运行以下命令,为项目设置区域:
Cloud IAM 还提供创建自定义 Cloud IAM 角色的功能。您可以创建具有一项或多项权限的自定义 Cloud IAM 角色,然后将该自定义角色授予用户。Cloud IAM 提供用于创建和管理自定义角色的界面和 API。
要点:自定义角色使您能够执行最小权限原则,并确保组织中的用户和服务账号仅具有执行其预期职能所必不可少的权限。
您可以通过将一个或多个可用的 Cloud IAM 权限组合在一起来创建自定义角色。有了权限,用户便可对 Google Cloud 资源执行特定操作。
在 Cloud IAM 领域中,权限的表示形式为:
例如,拥有 compute.instances.list
权限的用户可以列出他们拥有的 Compute Engine 实例,而拥有 compute.instances.stop
权限的用户则可以停止虚拟机。
权限通常(但不总是)与 REST 方法一一对应。也就是说,每项 Google Cloud 服务都有与其公开的每个 REST 方法相关联的权限。要调用某个方法,调用者需要具备该权限。 例如,topic.publish()
的调用者需要 pubsub.topics.publish
权限。
自定义角色只能用于为自身所属的项目或组织或其下的资源授予政策中的权限。您不能将一个项目或组织中的自定义角色授予其他项目或组织拥有的资源。
要创建自定义角色,调用者必须具有 iam.roles.create
权限。
对于不是所有者(包括组织管理员)的用户,您必须为其分配 Organization Role Administrator 角色 (roles/iam.organizationRoleAdmin) 或 IAM Role Administrator 角色 (roles/iam.roleAdmin)。IAM Security Reviewer 角色 (roles/iam.securityReviewer) 让用户能够查看自定义角色,但不能管理它们。
自定义角色界面位于 Cloud 控制台中的“IAM 角色”下方。只有有权创建或管理自定义角色的用户才可使用此界面。默认情况下,只有项目所有者可以创建新角色。项目所有者可以通过为同一项目上的其他人授予 IAM Role Administrator 角色来控制对此功能的访问权限;对于组织,只有组织管理员才能授予 Organization Role Administrator 角色。
在创建自定义角色之前,您应先了解:
在创建自定义角色之前,您应先了解哪些权限可应用于资源。您可以使用 gcloud 命令行工具、Cloud 控制台或 IAM API,查看可应用于某个资源及其下级资源的所有权限。例如,您可以查看可应用于某组织及其中项目的所有权限。
输出如下:
在创建自定义角色之前,您应先查看预定义角色和自定义角色的元数据。角色元数据包括角色 ID 和角色所含的权限。您可以使用 Cloud 控制台或 IAM API 查看元数据。
[ROLE_NAME]
替换为相应的角色。例如,roles/viewer
或 roles/editor
:输出示例(对于 roles/viewer):
使用 gcloud iam list-grantable-roles
命令返回可应用于给定资源的所有角色的列表。
gcloud
命令以列出项目中可授予的角色:输出将如下所示:
要创建自定义角色,调用者必须拥有 iam.roles.create
权限。默认情况下,项目或组织的所有者拥有此权限,并可创建和管理自定义角色。
对于不是所有者的用户(包括组织管理员),您必须为其分配 Organization Role Administrator 角色或 IAM Role Administrator 角色。
您可以通过以下两种方式使用 gcloud iam roles create
命令创建新的自定义角色:
创建自定义角色时,您必须使用 --organization [ORGANIZATION_ID]
或 --project [PROJECT_ID]
标志指定该角色是应用于组织级别还是项目级别。以下各示例都是在项目级别创建自定义角色。
在接下来的部分中,您将在项目级别创建自定义角色。
创建一个包含自定义角色定义的 YAML 文件。该文件必须采用以下结构:
每个占位值的说明如下所示:
[ROLE_TITLE]
是角色的易记名称,例如 Role Viewer。[ROLE_DESCRIPTION]
是角色的简短说明,例如 My custom role description。[LAUNCH_STAGE]
表示角色在发布生命周期中所处的阶段,例如 ALPHA、BETA 或 GA。includedPermissions
指定要包含在自定义角色中的一个或多个权限(例如 iam.roles.get)的列表。然后依次按 CTRL+X 键、Y 键和 ENTER 键保存并关闭此文件。
执行以下 gcloud
命令:
如果成功创建了角色,系统会返回以下响应:
点击检查我的进度,验证已完成以下目标:
接下来,您将使用标志来创建一个新的自定义角色。这些标志的格式与 YAML 文件类似,因此您可以轻松理解命令的构建方式。
gcloud
命令,使用标志创建新的角色:输出示例:
点击检查我的进度,验证已完成以下目标:
gcloud
命令以列出自定义角色,指出是项目级还是组织级自定义角色:输出示例:
此外,还可以指定 --show-deleted
标志,列出已删除的角色。
gcloud
命令以列出预定义角色:通常,我们按照以下模式更新资源的元数据(如自定义角色):先读取其当前状态,接着在本地更新数据,然后发送修改后的数据以进行写入。如果有两个或更多的独立进程同时尝试执行该序列,此模式可能会导致冲突。
例如,当项目有两位所有者同时尝试对某一角色进行有冲突的更改时,部分更改可能会失败。
Cloud IAM 利用自定义角色的 etag
属性来解决此问题。该属性用于验证自上次请求以来自定义角色是否发生了更改。当您使用 etag 值向 Cloud IAM 发出请求时,Cloud IAM 会将请求中的 etag 值与自定义角色所关联的现有 etag 值进行比较。只有在两个 etag 值匹配的情况下,它才会写入相关更改。
您可以通过下列任一方式使用 gcloud iam roles update
命令更新自定义角色:
更新自定义角色时,必须使用 --organization [ORGANIZATION_ID]
或 --project [PROJECT_ID]
标志指定该角色是应用于组织级别还是项目级别。以下各示例都是在项目级别创建自定义角色。
describe
命令返回角色的定义并包含用于唯一标识当前角色版本的 etag 值。您应在更新的角色定义中提供 etag 值,以确保任何并发的角色更改都不会被覆盖。
gcloud
命令获取角色的当前定义,并在执行命令时将 [ROLE_ID]
替换为 Editor。describe
命令返回的输出如下所示:
复制此输出内容,以便在后续步骤中用来创建新的 YAML 文件。
使用编辑器创建一个 new-role-definition.yaml
文件:
includedPermissions
下:完成后,您的 YAML 文件如下所示:
通过依次按 CTRL+X 键、Y 键和 ENTER 键保存并关闭此文件。
接下来,您将使用 update
命令来更新角色。执行以下 gcloud
命令,并在执行命令时将 [ROLE_ID]
替换为 Editor:
如果成功更新了角色,系统会返回以下响应:
点击检查我的进度,验证已完成以下目标:
可使用相应标志更新角色定义的每个部分。 如需查看 SDK 参考文档中的所有可用标志的列表,请参阅 gcloud iam roles update 主题。
使用以下标志添加或移除权限:
--add-permissions
:为角色添加一个或多个以英文逗号分隔的权限。--remove-permissions
:从角色中移除一个或多个以英文逗号分隔的权限。或者,您只需指定新权限即可,方法是使用 --permissions [PERMISSIONS]
标志,并提供以英文逗号分隔的权限列表以替换现有权限列表。
gcloud
命令,使用标志为 Viewer 角色添加权限:如果成功更新了角色,系统会返回以下响应:
点击检查我的进度,验证已完成以下目标:
当某个角色被停用后,与该角色相关的所有政策绑定也会随之停用,这意味着系统不会授予该角色所含的任何权限,即使您为某个用户授予了该角色也是如此。
停用现有自定义角色的最简单方法是使用 --stage
标志并将其设为停用。
gcloud
命令以停用 Viewer 角色:如果成功更新了角色,系统会返回以下响应:
点击检查我的进度,验证已完成以下目标:
gcloud iam roles delete
命令删除自定义角色。删除后,角色将处于无效状态,并且不能用于创建新的 IAM 政策绑定:输出示例:
角色被删除后,现有绑定仍会保留,但处于非活动状态。 删除的角色可以在 7 天内恢复。 7 天后,该角色便进入永久性删除过程(持续 30 天)。37 天后,该角色 ID 可再次使用。
--stage
标志:点击检查我的进度,验证已完成以下目标:
在本实验中,您在 IAM 中成功创建并管理了自定义角色。
如需详细了解 IAM,请参阅 Cloud Identity and Access Management 这篇文章。
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 4 月 15 日
上次测试实验的时间:2023 年 7 月 13 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
One lab at a time
Confirm to end all existing labs and start this one