检查点
Creating and Managing Service Accounts
/ 30
Access BigQuery from a Service Account
/ 70
服务账号和角色:基础知识
GSP199
概览
服务账号是一种特殊类型的 Google 账号,它将权限授予虚拟机,而非最终用户。服务账号主要用于确保以安全、受管理的方式连接到 API 和 Google Cloud 服务。无论在怎样的 Google Cloud 项目中,授权允许建立可信连接、拒绝建立恶意连接都是必备的安全功能。在本实验中,您可以通过实际操作来了解服务账号的方方面面。
学习内容
在本实验中,您将学习如何完成以下操作:
- 创建和管理服务账号。
- 创建虚拟机,并将其与一个服务账号关联。
- 使用客户端库,通过服务账号访问 BigQuery。
- 从 Compute Engine 实例对 BigQuery 公共数据集运行查询。
前提条件
最好具备一定的 Cloud IAM 相关经验,但本实验假定您几乎没有服务账号方面的经验。如果您想参加这个主题领域中更高级的实操练习,请务必查看以下实验:
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
- 完成实验的时间 - 请注意,实验开始后无法暂停。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
- 打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
- 点击 Google Cloud 控制台顶部的激活 Cloud Shell 。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
- (可选)您可以通过此命令列出项目 ID:
输出:
输出示例:
gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
为项目设置区域
运行以下命令,为项目设置区域:
什么是服务账号?
服务账号是一种特殊的 Google 账号,它属于您的应用或虚拟机(而非个别最终用户)。您的应用使用服务账号来调用服务的 Google API,这样用户就不必直接参与其中。
例如,Compute Engine 虚拟机可使用服务账号的身份运行,您可向该账号授予访问其所需资源的权限。这样,服务账号就是相应服务的身份,服务账号的权限用于控制该服务可以访问的资源。
服务账号由其(专属的)电子邮件地址标识。
服务账号的类型
用户管理的服务账号
在您使用 Google Cloud 控制台创建新的 Cloud 项目时,如果为您的项目启用了 Compute Engine API,则系统默认会为您创建一个 Compute Engine 服务账号。它使用电子邮件进行标识:
如果您的项目包含 App Engine 应用,则在默认情况下,系统会在您的项目中创建默认 App Engine 服务账号。它使用电子邮件进行标识:
Google 管理的服务账号
除了用户管理的服务账号,您可能会在项目的 IAM 政策中或控制台中看到其他一些服务账号。这些服务账号由 Google 创建和拥有。这些账号代表不同的 Google 服务,每个账号都会自动获得可访问您的 Google Cloud 项目的 IAM 角色。
Google API 服务账号
例如,使用以下电子邮件地址进行标识的 Google API 服务账号就属于 Google 管理的服务账号:
该服务账号专门用于代表您运行内部 Google 进程,不会在控制台的服务账号部分中列出。默认情况下,此账号自动获得项目的 Editor 角色,并列在控制台的 IAM 部分中。只有在删除该项目后,才会删除此服务账号。
了解 IAM 角色
当某个身份调用 Google Cloud API 时,Google Cloud Identity and Access Management 会要求该身份必须具有使用相应资源的适当权限。您可以通过为用户、群组或服务账号授予角色来提供权限。
角色类型
Cloud IAM 中有三种类型的角色:
- 原初角色:包括在引入 Cloud IAM 之前已存在的 Owner、Editor 和 Viewer 角色。
- 预定义角色:针对特定服务提供精细访问权限,并由 Google Cloud 管理。
- 自定义角色:根据用户指定的权限列表提供精细访问权限。
如需详细了解角色,请参阅可帮您了解角色的指南。
任务 1. 创建和管理服务账号
当您创建新的 Cloud 项目时,Google Cloud 会自动在该项目下创建一个 Compute Engine 服务账号和一个 App Engine 服务账号。您最多可以为项目创建 98 个额外的服务账号,以控制对资源的访问权限。
创建服务账号
创建服务账号与为项目添加成员类似,只不过服务账号为您的应用所有,而非属于某个最终用户。
- 如需创建服务账号,请在 Cloud Shell 中运行以下命令:
此命令的输出是类似于以下形式的服务账号:
将角色授予服务账号
您的应用使用服务账号作为身份来向 Google Cloud 服务进行身份验证。举例来说,如果您以服务账号的身份运行 Compute Engine 虚拟机,则可以为该服务账号(身份)授予项目(资源)的 Editor 角色。
同时,您可能还需要控制谁可以启动虚拟机。为此,您只需为用户(身份)授予服务账号(资源)的 serviceAccountUser 角色即可。
为服务账号授予特定资源的角色
您可以为服务账号授予角色,让该服务账号有权对 Cloud Platform 项目中的资源执行特定操作。例如,您可以为服务账号授予 storage.admin
角色,以便它可以控制 Cloud Storage 中的对象和存储桶。
- 在 Cloud Shell 中运行以下代码,为您刚刚创建的服务账号授予角色:
输出会显示该服务账号现在具有的角色列表:
点击“检查我的进度”,验证已完成以下目标:
任务 2. 通过服务账号,使用客户端库访问 BigQuery
在本部分中,您要借助具有必要角色的服务账号,从一个实例中查询 BigQuery 公共数据集。
创建服务账号
首先从控制台创建一个新的服务账号。
-
依次点击导航菜单 > IAM 和管理,选择服务账号并点击 + 创建服务账号。
-
填写如下必要的详细信息:
- 服务账号名称:bigquery-qwiklab
-
现在,点击创建并继续,随后添加以下角色:
-
BigQuery > BigQuery Data Viewer
-
BigQuery > BigQuery User
-
此时控制台应该如下所示:
- 点击继续,然后点击完成。
创建虚拟机实例
-
在控制台中,前往 Compute Engine > 虚拟机实例,然后点击创建实例。
-
使用以下信息创建虚拟机:
配置 | 值 |
---|---|
名称 | bigquery-instance |
区域 | |
可用区 | |
系列 | E2 |
机器类型 | e2-medium |
启动磁盘 | Debian GNU/Linux 11 (bullseye) x86/64 |
服务账号 | bigquery-qwiklab |
访问权限范围 | 针对每个 API 设置访问权限 |
BigQuery | 已启用 |
bigquery-qwiklab
服务账号没有出现在下拉列表中,请尝试在“过滤”部分下输入其名称。- 点击创建。
将示例代码存放到 Compute Engine 实例上
- 在控制台中,前往 Compute Engine > 虚拟机实例。
- 点击 SSH 按钮,通过 SSH 连接到
bigquery-instance
。
在 SSH 窗口中,运行以下命令安装必要的依赖项:
现在创建示例 Python 文件:
运行以下命令,将项目 ID 添加到 query.py
:
运行以下命令,确保 sed
命令成功更改了文件中的项目 ID:
示例输出(您的输出可能有所不同):
运行以下命令,将服务账号电子邮件地址添加到 query.py
:
运行以下命令,确保 sed 命令成功更改了文件中的服务账号电子邮件:
示例输出(您的输出可能有所不同):
现在,应用将获得与此服务账号关联的权限。 通过以下 Python 命令来运行查询:
查询应该返回以下输出(您的输出中的数字可能有所不同):
太棒了!您使用 bigquery-qwiklab
服务账号,向一个 BigQuery 公共数据集发出了请求。
点击“检查我的进度”,验证已完成以下目标:
恭喜!
在本实验中,您学习了如何使用服务账号。
后续步骤/了解详情
- 如需了解服务账号的创建和管理,请参阅创建和管理服务账号指南。
- 请参阅相关实验:
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 7 月 17 日
上次测试实验的时间:2024 年 7 月 17 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。