服务账号简介

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

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-org-admin Apigee Organization Admin
roles/apigee.admin
允许您调用 getSyncAuthorization APIsetSyncAuthorization API。由于 Apigee Organization Admin 是运行时层面的外部角色,因此您无法使用 create-service-account 工具将此角色分配给服务账号。
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 API。

创建服务账号

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

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

使用服务账号创建工具

create-service-account 工具(在下载并展开 apigeectl 后可用)会创建 Hybrid 组件服务账号,并为您分配所需的角色。该工具还会自动下载服务账号密钥并将其存储在本地机器的指定目录上。

如需使用 create-service-account 工具创建服务账号,请执行以下操作:

  1. 下载并展开 apigeectl(如果您尚未执行此操作,如下载并安装 apigeectl 中所述。
  2. 创建一个用于存储您的服务账号密钥的目录。例如:
    mkdir ./service-accounts
  3. 执行以下命令:
    ./tools/create-service-account apigee-metrics ./service-accounts
    ./tools/create-service-account apigee-synchronizer ./service-accounts
    ./tools/create-service-account apigee-distributed-trace ./service-accounts
    ./tools/create-service-account apigee-udca ./service-accounts
    ./tools/create-service-account apigee-mart ./service-accounts
    ./tools/create-service-account apigee-cassandra ./service-accounts
    ./tools/create-service-account apigee-logger ./service-accounts

    这些命令会创建大多数必需的账号并将其密钥存储在 ./service-accounts 目录中。

    如果这些命令失败,请确保您引用了用于存储密钥文件的现有目录。

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

使用 Google Cloud 控制台

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

如需使用 Google Cloud 控制台创建服务账号,请执行以下操作

  1. 打开 Google Cloud 控制台,然后使用您在第 1 步:创建 Google Cloud 账号中创建的用户账号进行登录。
  2. 选择您在第 2 步:创建 Google Cloud 项目中创建的项目。
  3. 选择 IAM 和管理 > 服务账号

    控制台会显示服务账号视图。此视图会显示项目的服务账号的列表。(在大多数情况下,尚未列出任何账号,但列表中可能会有默认服务账号,具体取决于您创建项目的方式。)

  4. 如需创建新的服务账号,请点击视图顶部的 +创建服务账号

    此时会显示服务账号详细信息视图。

  5. 服务账号名称字段中,输入服务账号的名称。

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

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

    在您输入名称时,Google Cloud 会为您生成一个唯一的服务账号 ID,其结构类似于电子邮件地址,如以下示例所示:

    apigee-logger@hybrid-42.iam.gserviceaccount.com 的示例 ID

    您可以选择在服务账号说明字段中添加说明。说明可提醒您特定服务账号的用途。

  6. 点击创建

    Google Cloud 会创建一个新的服务账号,并显示服务账号权限视图,如以下示例所示:

    创建服务账号,并且未选择权限

    使用此视图为新服务账号分配角色。

  7. 点击选择角色下拉列表。
  8. 按照 Hybrid 组件使用的服务账号和角色中所述,为服务账号选择角色。如果 Apigee 角色未显示在下拉列表中,请刷新页面。

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

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

    与 Apigee 匹配的服务账号权限列表

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

  9. 点击继续

    Google Cloud 会显示向用户授予访问此服务账号的权限视图:

    服务账号用户角色和服务账号管理员角色字段,用于创建密钥的按钮

  10. 创建密钥(可选)下,点击创建密钥

    Google Cloud 为您提供了下载 JSON 或 P12 密钥的选项:

    选择 JSON 或 P12 密钥类型

  11. 选择 JSON(默认值),然后点击创建

    Google Cloud 会将 JSON 格式的密钥文件保存到您的本地机器上,并在成功后显示确认信息,如以下示例所示:

    filename.json 示例

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

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

  12. 针对Hybrid 组件使用的服务账号和角色中列出的每个服务账号重复第 4 步到第 11 步(apigee-mart 账号除外,因为没有关联任何角色,所以不为其分配角色)。

    完成上述操作后,您除了使用默认账号(如有)外,还应获得以下服务账号:

    服务账号列表。第 1 列选择框,第 2 列电子邮件,第 3 列状态,第 4 列服务账号名称

    在 Google Cloud 控制台中,服务账号标有 左侧为密钥,右侧为半个矩形,均带下划线 图标。

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

使用 gcloud 服务账号创建 API

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

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

问题排查