
准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Create an instance with name as lab-1 in Project 1
/ 10
Update the default zone
/ 10
Create a configuration for Username 2 and name it as user2
/ 10
Restricting Username 2 to roles/viewer in Project 2
/ 10
Create a new role with permissions for the devops team
/ 10
Check binding to roles/iam.serviceAccountUser
/ 5
Bound Username 2 to devops role
/ 5
Create an instance with name as lab-2 in Project 2
/ 5
Check the created service account
/ 5
Check the binding for the service account to roles/iam.serviceAccountUser
/ 10
Check the binding for the service account to roles/compute.instanceAdmin
/ 10
Check lab-3 has the service account attached
/ 10
为云资源配置安全访问权限至关重要。关键考虑因素包括如何管理访问权限、如何让用户只访问必要资源,以及如何为应用和服务启用身份验证。AWS 和 Google Cloud 等云平台提供了专门用于此任务的工具。AWS 采用了 Identity and Access Management (IAM) 角色和政策,而 Google Cloud IAM 则是授予项目权限或资源权限。
除了用户访问权限之外,您还必须管理应用和系统权限。AWS 使用账号内分配的服务角色。Google Cloud 使用服务账号,其在项目中的覆盖范围可能更广。本实验将探索用于 IAM 配置的命令行。了解 IAM 至关重要,尤其是对于 Google Cloud 新手而言,因为只有这样才能设置适当的权限。本实验将介绍如何安装和配置 gcloud 环境、管理多个配置以及利用服务账号。
在本实验中,您将学习如何完成以下操作:
gcloud
客户端在开始时,您有两个用户账号和两个项目:
user1
是两个项目的“owner”user2
只是第一个项目的“viewer”。第一个项目中运行了一个 Linux 虚拟机 (vm)。
Google Cloud 提供了 Cloud Identity and Access Management (IAM),可帮助您定义谁(身份)对什么资源具有哪种访问权限(角色),从而管理访问权限控制。
在 IAM 中,不会直接向最终用户授予资源访问权限,而是会将权限分组到各个角色中,然后将这些角色授予经过身份验证的主账号。(过去,IAM 通常将主账号称为成员。部分 API 仍在使用这一术语。)
在 Cloud IAM 中,您向主账号授予访问权限。主账号可以是以下任一类型:
如需详细了解这些身份类型,请参阅与身份相关的概念指南。
在本实验中,您将会用到 Google 账号、服务账号及 Cloud Identity 网域群组。
角色是一组权限的集合。您不能直接为用户分配权限,只能为其授予角色。为用户授予角色,就是将该角色包含的所有权限都授予用户。
如需详细了解角色,请参阅角色指南。
gcloud CLI 是 Cloud SDK 的一部分。您必须在系统上下载并安装此 SDK 并对其进行初始化,然后才能使用 gcloud 命令行工具。借助此工具,您可以通过命令行或使用脚本和其他自动化功能执行多项常见平台任务。
如需详细了解有关 gcloud 的信息,请参阅 gcloud CLI 概览指南。
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
您也可以在“实验详细信息”窗格中找到“用户名”。
点击下一步。
复制下面的密码,然后将其粘贴到欢迎对话框中。
您也可以在“实验详细信息”窗格中找到“密码”。
点击下一步。
继续在后续页面中点击以完成相应操作:
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
本实验中已有一个名为 debian-clean 的 Compute Engine 实例,它模拟了尚未安装 gcloud
的环境。您可以通过 Google Cloud 控制台连接到此实例。
依次选择导航菜单 > Compute Engine > 虚拟机实例,打开计算实例列表。
在包含 debian-clean 计算实例的行中,点击 SSH。
gcloud
版本来确认它已成功安装。在 SSH 会话中,运行以下命令:在验证已安装 gcloud
命令行工具后,可以创建一个计算实例来进行一些更改。
在看到提示“Do you want to continue (Y/n)?”时,按 Enter 键。
点击新标签页中显示的链接。
点击您当前正在使用的用户名
在看到提示 Enter the following verification code in gcloud CLI on the machine you want to log into 时,点击“复制”按钮并返回到 SSH 会话,然后将验证码粘贴到 Enter authorization code: 提示处。
在 SSH 会话中,设置区域和可用区:
如果前面的设置正确无误,此命令将创建一个实例。
但实例的大小如何?存储在何处?使用了什么映像?
服务使用了很多默认设置。有些可以通过 gcloud
配置来控制。例如,可以通过可用区设置来控制实例的位置。
现在,您会看到 compute
、core
和 active configuration
三个部分。它们都可以更改,但在本实验中只更改可用区。查看您创建的虚拟机所在的可用区。
从您的可用区所属的区域中选择另一个可用区。例如,如果您当前的可用区是 us-west2-a
,则可选择 us-west2-b
。
将您当前的可用区改为同一区域中的另一个可用区。在 SSH 会话中运行以下命令,将 ZONE
替换为所选择的可用区:
可以看到,列出的可用区反映了您所做的更改。
您可以使用 gcloud config set
命令更改其他设置。这些更改是永久性的,将写入您的主目录中。
默认配置存储在以下配置文件中:~/.config/gcloud/configurations/config_default。
创建实例时,如果要使用非默认可用区,您可以使用 --zone 开关。例如,gcloud compute instances create lab-1 --zone us-central1-f
您会看到该配置已存储为文本,并且可以对其进行备份或复制。
现在,您已经设置了一个账号。如果您需要在不同的团队工作,或要使用不同的账号,还可以使用 gcloud config
来进行管理。
在下一个任务中,您将学习如何再创建一个配置并在两个配置之间切换。
在本实验中,您还有另一个可以登录并使用的 Google 账号。此账号具有第一个项目的只读 (viewer) 权限。下面来为该用户创建一个新配置。
gcloud
配置。在 SSH 会话中,运行以下命令:选择选项 2:“Create a new configuration”。
在“configuration name”中,输入 user2。
在“Log in with a new account”中,选择选项 3:“you're logging in with the other provided user name”。
在看到提示“Do you want to continue (Y/n)?”时,按 Enter 键。
点击新标签页中显示的链接。
点击“Use another account”。
复制第二个用户账号 (
复制您开始进行本实验时使用的密码,并将其粘贴到“enter your password”提示处。
点击我了解。
对于登录 Google Cloud SDK,点击继续,然后点击允许。
以上操作表示您允许 Cloud SDK 与您的 Google 账号拥有相同的访问权限。
在看到提示 Enter the following verification code in gcloud CLI on the machine you want to log into 时,点击“复制”按钮并返回到 SSH 会话,然后将验证码粘贴到 Enter authorization code: 提示处。
对于 Pick cloud project to use:,找到当前项目 (
初始化完成后,您会看到已经设置好了可用区和区域。
此新账号只有项目的“viewer”访问权限,因此您可以试着查看项目信息和创建一些资源,测试一下您正在使用的是否确实是该账号。
第二个用户账号具有 viewer 访问权限,因此您应该会看到系统列出 debian-clean
和 lab-1
实例。
第二个用户账号只具有“viewer”访问权限,无权创建实例,因此上述命令会运行失败。此过程可能会花点时间。
现在,您将重新使用初始用户账号凭据。在后面学习有关角色和权限的内容时,您可以在这两个账号之间进行切换。
在此项目中,您有两个用户账号。第一个用户账号可以完全控制两个项目,可将其视为管理员账号。而第二个用户账号只具有两个项目的“viewer”访问权限。您可以将其视为开发者用户,其用户身份代表典型的开发者级别用户。
接下来,您需要使用 gcloud
为开发者用户配置对一个项目的访问权限,具体方法是为该项目创建一个自定义角色,该角色具备创建存储桶和实例的权限。
系统将返回角色列表。在命令中添加 grep "name:"
是为了减少返回的数据量,让系统仅返回角色的名称。
检查其中任一角色,查看分配给该角色的权限。查看权限时,请使用 gcloud iam roles describe
命令。可以试试查看简单的角色 roles/compute.instanceAdmin。
compute.instanceAdmin
。在 SSH 会话中,运行以下命令:您会看到 roles/compute.instanceAdmin 具有多项权限,但这些只是后续操作所需的最低权限:
如需查看角色及其权限的完整列表,请参阅 IAM 权限参考指南。
现在,您已经知道角色包含了哪些权限,那么如何向用户账号分配角色及其所有关联的权限呢?
关联角色的方式有两种:
下面,将基本角色“viewer”与第二个用户和第二个项目相关联。
gcloud
配置切换回第二个用户 (user2)。在 SSH 会话中,运行以下命令:现在,您切换回了 user2
。
PROJECTID2
设置为第二个项目。在 SSH 会话中,运行以下命令:bashrc
文件,请谨慎使用。您会收到一则警告:WARNING: You do not appear to have access to project [your 2nd project id] or it does not exist.
(警告:您似乎没有对 [您的第二个项目的 ID] 项目的访问权限,或该项目不存在)
这意味着 user2 确实不具有对 PROJECTID2 项目的访问权限,您可以在下一部分中解决此问题。
jq
:下面,将 USERID2
的值设置为第二个用户的用户名,并将 viewer 角色绑定到第二个用户和第二个项目。
运行此命令后,屏幕上将出现类似如下片段的文本(可能需要向上滚动查看):
这次应该不会看到错误消息。
现在,您会看到此项目中有 0 个实例。
此命令将运行失败,因为 user2 只具有该项目的 viewer 访问权限。
现在,您将重新使用初始用户账号凭据。
下面来创建一个具有开发者团队所需权限的新角色。
devops
且具有实例创建权限的自定义角色。在 SSH 会话中,运行以下命令:此命令将在项目中创建一个名为 devops
的自定义角色,并且该角色具有创建和管理实例的权限。
系统会列出该角色的完整名称。请注意,该角色包含在项目中,因此对应的路径将采用如下模式:projects/PROJECT/roles/ROLENAME
。
您已经创建了角色,现在需要将用户和角色绑定到项目。使用 gcloud projects add-iam-policy-binding
命令执行绑定。为了让此命令更易于执行,可以先设置几个环境变量:项目 ID 和用户账号。
iam.serviceAccountUser
角色绑定到第二个用户和第二个项目。在 SSH 会话中,运行以下命令:您需要相关权限才能使用关联的服务账号来创建实例。iam.serviceAccountUser
角色具有这些权限,因此您可以使用此预定义角色。
devops
绑定到第二个用户和第二个项目。您可以在此页面的左侧找到第二个用户账号。确保您已将 USERID 设置为第二个用户账号。在 SSH 会话中,运行以下命令:
运行此命令后,屏幕上将出现类似如下片段的文本(可能需要向上滚动查看):
现在,您切换回了 user2。
user2 现在可以创建实例了。
在完成上述更改后,您的环境如下:
您已经了解如何进行身份验证,以及如何通过 gcloud
使用不同角色来访问 Google Cloud 服务。现在来看一种典型方法。
您有一个应用,它使用应用编程接口 (API) 来对 Cloud Storage 存储桶执行读写操作。您不想每次启动新服务器时都进行身份验证,这不但让人很头疼,也不符合使用云技术的初衷!所以,您可以使用服务账号。
服务账号是一种特殊的 Google 账号,它属于您的应用或虚拟机,不属于最终用户个人。您的应用使用服务账号来调用服务的 Google API,这样用户就不必直接参与其中。
如需详细了解有关服务账号的信息,请参阅服务账号指南。
下面,您需要创建一个服务账号,将该服务账号与计算实例结合使用,然后测试该账号是否允许执行所需的访问。
user2
无权设置和配置服务账号。在 SSH 会话中,运行以下命令:PROJECTID2
。在 SSH 会话中,运行以下命令:确保您设置的是正确的项目。
SA
的局部变量中。在 SSH 会话中,运行以下命令:此命令会将该 SA 局部变量设置为服务账号的电子邮件地址。是不是很实用?
iam.serviceAccountUser
角色授予此服务账号。在 SSH 会话中,运行以下命令:此角色允许服务账号为计算实例分配服务账号。
compute.instanceAdmin
角色授予服务账号。在 SSH 会话中,运行以下命令:此角色允许服务账号管理计算实例。
访问权限范围是为实例指定权限的传统方法。访问权限范围不是安全机制,而是用于定义来自 gcloud
工具或客户端库的请求中使用的默认 OAuth 范围。在发出未通过 OAuth 进行身份验证的请求(例如 gRPC 或 SignBlob API)时,访问权限范围不起作用。
在配置要以服务账号身份运行的实例时,您必须设置访问权限范围。
最佳实践是在实例上设置完整的云平台访问权限范围,然后使用 IAM 角色安全地限制服务账号的 API 访问权限。
访问权限范围作用于单个实例。您可以在创建实例时设置访问权限范围,此访问权限范围只会在该实例的生命周期内保留。
如果您未对该服务账号所属的项目启用相关 API,那么访问权限范围将不起作用。例如,在虚拟机实例上授予 Cloud Storage 的访问权限范围后,只有对项目启用了 Cloud Storage API 时,实例才能调用 Cloud Storage API。
gcloud compute ssh
连接到新创建的实例。在 SSH 会话中,运行以下命令:在系统询问您是否要继续时,按 Enter 键。
按两次 Enter 键跳过创建密码的步骤。
gcloud
配置。在 SSH 会话中,运行以下命令:服务账号现在已包含在配置中
您可以按 Enter 键为此虚拟机接受默认可用区。
由于服务账号具有必要的权限,您会看到系统列出相关实例。
您已利用 Cloud SDK 工具 (gcloud
),成功安装和配置 gcloud 客户端、管理多个 IAM 配置、分配适当的 IAM 权限,并使用了服务账号。这些任务演示了在使用命令行工具进行访问权限控制时,Google Cloud IAM 和 AWS IAM 之间的相似之处。您可以通过这两个界面配置账号/角色、创建服务账号/角色以及切换用户。您为 gcloud 中的用户应用了权限,这与在 AWS 中分配角色和政策的方式类似;并探索了在使用 Google Cloud IAM 管理访问权限时,Google Cloud 项目相较于 AWS 账号是如何运作的。
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 8 月 1 日
上次测试实验的时间:2024 年 8 月 1 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验