服务账号简介

服务账号是 Google Cloud 中的一种特殊账号,使系统的组件和应用可以彼此互动和与其他 API 互动。如需详细了解 Google Cloud,请参阅 Google Cloud 服务简介

Apigee hybrid 使用 Google Cloud 服务账号执行各种任务,包括:

  • 发送日志和指标数据
  • 拉取跟踪记录请求
  • 连接到 API 网关以发出管理 API 请求
  • 执行备份
  • 下载代理软件包

虽然一个服务账号可以执行所有这些操作,但对于生产环境,Apigee 建议您创建多个服务账号,将每个服务账号分配给特定任务,并且每个服务账号都有各自的一组权限。这可以通过划分访问权限和限制每个服务账号的范围和访问权限来增强安全性。与用户账号一样,通过为服务账号分配一个或多个角色,即可应用这些权限。

为了正常运行,Apigee Hybrid 要求您创建多个服务账号。每个服务账号都需要一个或多个特定角色,才能执行其功能。

下表介绍了 Hybrid 组件的服务账号为每个服务账号指定的名称是默认名称您可以使用任何想要的名称,但该名称应易于识别,以便与每个账号一起使用。

组件* 角色 基本安装的必须组件? 说明
apigee-cassandra Storage Object Admin
roles/storage.objectAdmin
允许将 Cassandra 备份到 Cloud Storage,如备份和恢复中所述。
apigee-distributed-trace Cloud Trace Agent
roles/cloudtrace.agent
允许 Hybrid 运行时层面使用与 Google Cloud TraceJaeger 等系统兼容的格式参与分布式请求跟踪。
apigee-logger Logs Writer
roles/logging.logWriter
允许收集日志记录数据,如 Logging 中所述。只有在安装非 GKE 集群时才需要。
apigee-mart Apigee Connect Agent
roles/apigeeconnect.Agent
允许 MART 服务身份验证。Apigee Connect Agent 角色允许其与 Apigee Connect 进程进行安全通信,如使用 Apigee Connect 中所述。
apigee-metrics Monitoring Metric Writer
roles/monitoring.metricWriter
允许收集指标数据,如指标收集概览中所述
apigee-synchronizer Apigee Synchronizer Manager
roles/apigee.synchronizerManager
允许同步器下载代理软件包和环境配置数据。同时启用跟踪记录功能。
apigee-udca Apigee Analytics Agent
roles/apigee.analyticsAgent
允许将跟踪记录、分析和部署状态数据转移到管理平面。
apigee-watcher Apigee Runtime Agent
roles/apigee.runtimeAgent
Apigee Watcher 会从同步器中拉取组织的虚拟主机相关更改,并进行必要更改以配置 Istio Ingress。
* 此名称在下载的服务账号密钥的文件名中使用。

或者,对于非生产、测试和演示环境,您可以使用单个服务账号并为其分配所有角色。对于生产环境,不建议这样做。

组件* 角色 基本安装的必须组件? 说明
apigee-non-prod Apigee Analytics Agent、Apigee Connect Agent、Apigee Organization Admin、Apigee Runtime Agent、Apigee Synchronizer Manager、Cloud Trace Agent、Logs Writer、Monitoring Metric Writer、Storage Object Admin 或以上所有必需的 SA 用于演示或测试环境的单个服务账号。请参阅安装,第 2 部分第 5 步:创建服务账号

除了创建此表中列出的服务账号之外,您还可以使用每个账号的私钥来生成访问令牌,以便您可以访问 Apigee API。create-service-account 工具会在创建或更新服务账号时自动将密钥文件下载到本地机器上的目录中。

创建服务账号

创建服务账号的方法有多种,包括:

下面各个部分介绍了其中每种方法。

使用 create-service-account 工具

您在 tools/ 目录中下载并展开 apigeectl 后,就可以使用 create-service-account 工具。它具有 Hybrid 组件服务账号,并为您分配所需的角色。该工具还会自动下载服务账号密钥并将其存储在本地机器上。

例如,以下命令将为生产环境创建所有单独的服务账号,为每个服务账号分配适当的 IAM 角色,并将每个账号的私钥文件下载到 ./service-accounts 目录:

./tools/create-service-account --env prod

以下命令将创建一个名为 apigee-non-prod 的服务账号,其中包含所有 Hybrid 组件的所有 IAM 角色,这些角色适用于演示和测试环境,但不适用于生产环境:

./tools/create-service-account --env non-prod

如需详细了解如何使用 create-service-account,请参阅 create-service-account 参考文档

使用 Google Cloud 控制台

您可以使用 Google Cloud 控制台创建服务账号。

针对 Hybrid 组件使用的服务账号和角色中列出的每个服务账号完成以下步骤。

如需使用 Google Cloud 控制台创建服务账号并为服务账号生成密钥,请执行以下操作

  1. 创建服务账号:

    1. 在 Cloud 控制台中,前往服务账号页面。

      转到“服务账号”

    2. 选择您的项目。
    3. 点击创建服务账号
    4. 服务账号名称字段中,输入一个名称。Cloud 控制台会根据此名称填充服务账号 ID 字段。

      Apigee 建议您使用反映服务账号角色的名称;您可以将服务账号的名称设置为与使用该服务的组件的名称相同。例如,设置 Logs Writer 服务账号 apigee-logger 的名称。

      如需详细了解服务账号名称和角色,请参阅 Hybrid 组件使用的服务账号和角色

    5. 可选:在服务账号说明字段中,输入服务账号的说明。说明可提醒您特定服务账号的用途。
    6. 点击创建并继续
    7. 点击选择角色字段,然后选择一个角色,如 Hybrid 组件使用的服务账号和角色中所述。如果 Apigee 角色未显示在下拉列表中,请刷新页面。

      例如,对于日志记录组件,请选择 Logs Writer 角色。

      如有必要,请输入文本,按名称过滤角色列表。例如,如需仅列出 Apigee 角色,请在过滤条件字段中输入 Apigee

      您可以向服务账号添加多个角色,但 Apigee 建议您只为每个建议的服务账号使用一个角色。如需在创建服务账号后更改其角色,请使用 Cloud 控制台中的 IAM 页面。

    8. 点击完成以完成服务账号的创建。

      不要关闭浏览器窗口。您将在下一步骤中用到它。

  2. 下载刚刚创建的服务账号的 JSON 密钥:

    1. 在 Cloud 控制台中,点击您创建的服务账号的电子邮件地址。
    2. 点击密钥
    3. 依次点击添加密钥创建新密钥
    4. 点击创建。JSON 密钥文件将下载到您的计算机上。

      务必要安全存储密钥文件,因为它能够以服务账号的身份进行身份验证。您可以根据需要移动并重命名此文件。

      稍后您将使用某些服务账号密钥来配置 Hybrid 运行时服务。 例如,在配置 Hybrid 运行时时,您将使用 SERVICE_NAME.serviceAccountPath 属性指定服务账号密钥的位置。

      这些密钥由服务账号使用,以获取访问令牌,然后服务账号使用这些访问令牌代表您针对 Apigee API 发出请求。(但目前还不能;现在只需记住其保存位置。)

    5. 点击关闭

创建服务账号后,如果您要添加或移除其角色,则必须使用 Cloud 控制台中的 IAM 页面。您无法在服务账号视图中管理服务账号的角色。

使用 gcloud 服务账号创建 API

您可以使用 Cloud Identity and Access Management API 创建和管理服务账号。

如需了解详情,请参阅创建和管理服务账号

问题排查