服务账号是一种特殊类型的 Google 账号,它将权限授予虚拟机,而非最终用户。服务账号主要用于确保以安全、受管理的方式连接到 API 和 Google Cloud 服务。无论在怎样的 Google Cloud 项目中,授权允许建立可信连接、拒绝建立恶意连接都是必备的安全功能。在本实验中,您可以通过实际操作来了解服务账号的方方面面。
学习内容
在本实验中,您将学习如何完成以下操作:
创建和管理服务账号。
创建虚拟机,并将其与一个服务账号关联。
使用客户端库,通过服务账号访问 BigQuery。
从 Compute Engine 实例对 BigQuery 公共数据集运行查询。
前提条件
最好具备一定的 Cloud IAM 相关经验,但本实验假定您几乎没有服务账号方面的经验。如果您想参加这个主题领域中更高级的实操练习,请务必查看以下实验:
echo "
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='YOUR_SERVICE_ACCOUNT')
query = '''
SELECT
year,
COUNT(1) as num_babies
FROM
publicdata.samples.natality
WHERE
year > 2000
GROUP BY
year
'''
client = bigquery.Client(
project='{{{project_0.project_id | Your Project ID}}}',
credentials=credentials)
print(client.query(query).to_dataframe())
" > query.py
运行以下命令,将项目 ID 添加到 query.py:
sed -i -e "s/{{{project_0.project_id | Your Project ID}}}/$(gcloud config get-value project)/g" query.py
运行以下命令,确保 sed 命令成功更改了文件中的项目 ID:
cat query.py
示例输出(您的输出可能有所不同):
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='YOUR_SERVICE_ACCOUNT')
query = '''
SELECT
year,
COUNT(1) as num_babies
FROM
publicdata.samples.natality
WHERE
year > 2000
GROUP BY
year
'''
client = bigquery.Client(
project={{{ project_0.project_id }}},
credentials=credentials)
print(client.query(query).to_dataframe())
运行以下命令,将服务账号电子邮件地址添加到 query.py:
sed -i -e "s/YOUR_SERVICE_ACCOUNT/bigquery-qwiklab@$(gcloud config get-value project).iam.gserviceaccount.com/g" query.py
运行以下命令,确保 sed 命令成功更改了文件中的服务账号电子邮件:
cat query.py
示例输出(您的输出可能有所不同):
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='bigquery-qwiklab@{{{ project_0.project_id }}}.iam.gserviceaccount.com')
query = '''
SELECT
year,
COUNT(1) as num_babies
FROM
publicdata.samples.natality
WHERE
year > 2000
GROUP BY
year
'''
client = bigquery.Client(
project={{{ project_0.project_id }}},
credentials=credentials)
print(client.query(query).to_dataframe())
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 12 月 11 日
上次测试实验的时间:2024 年 10 月 22 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。