服务账号是 Google Cloud 中的一种特殊账号,使系统的组件和应用可以彼此互动和与其他 API 互动。如需详细了解 Google Cloud,请参阅 Google Cloud 服务简介。
Apigee hybrid 使用 Google Cloud 服务账号执行各种任务,包括:
- 发送日志和指标数据
- 拉取跟踪记录请求
- 连接到 API 网关以发出管理 API 请求
- 执行备份
- 下载代理软件包
虽然一个服务账号可以执行所有这些操作,但对于生产环境,Apigee 建议您创建多个服务账号,将每个服务账号分配给特定任务,并且每个服务账号都有各自的一组权限。这可以通过划分访问权限和限制每个服务账号的范围和访问权限来增强安全性。与用户账号一样,通过为服务账号分配一个或多个角色,即可应用这些权限。
Hybrid 组件使用的服务账号和角色
为了正常运行,Apigee Hybrid 要求您创建多个服务账号。每个服务账号都需要一个或多个特定角色,才能执行其功能。
下表介绍了 Hybrid 组件的服务账号为每个服务账号指定的名称是默认名称您可以使用任何想要的名称,但该名称应易于识别,以便与每个账号一起使用。
组件* | 角色 | 基本安装的必须组件? | 说明 |
---|---|---|---|
apigee-cassandra |
Storage Object Adminroles/storage.objectAdmin |
允许将 Cassandra 备份到 Cloud Storage,如备份和恢复中所述。 | |
apigee-logger |
Logs Writerroles/logging.logWriter |
允许收集日志记录数据,如 Logging 中所述。只有在安装非 GKE 集群时才需要。 | |
apigee-mart |
Apigee Connect Agentroles/apigeeconnect.Agent |
允许 MART 服务身份验证。Apigee Connect Agent 角色允许其与 Apigee Connect 进程进行安全通信,如使用 Apigee Connect 中所述。 | |
apigee-metrics |
Monitoring Metric Writerroles/monitoring.metricWriter |
允许收集指标数据,如指标收集概览中所述 | |
apigee-runtime |
无需角色 | 允许 Apigee Hybrid 运行时连接到 Google 服务和 Google Cloud 上的自定义服务,例如 Google 身份验证、Google Cloud Trace 和 Jaeger。 | |
apigee-synchronizer |
Apigee Synchronizer Managerroles/apigee.synchronizerManager |
允许同步器下载代理软件包和环境配置数据。同时启用跟踪记录功能。 | |
apigee-udca |
Apigee Analytics Agentroles/apigee.analyticsAgent |
允许将跟踪记录、分析和部署状态数据转移到管理平面。 | |
apigee-watcher |
Apigee Runtime Agentroles/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 控制台创建服务账号。
如需使用 Google Cloud 控制台创建服务账号并为服务账号生成密钥,请执行以下操作:
-
创建服务账号:
-
在 Cloud 控制台中,前往服务账号页面。
- 选择您的项目。
- 点击 创建服务账号。
-
在服务账号名称字段中,输入一个名称。Cloud 控制台会根据此名称填充服务账号 ID 字段。
Apigee 建议您使用反映服务账号角色的名称;您可以将服务账号的名称设置为与使用该服务的组件的名称相同。例如,设置 Logs Writer 服务账号
apigee-logger
的名称。如需详细了解服务账号名称和角色,请参阅 Hybrid 组件使用的服务账号和角色。
- 可选:在服务账号说明字段中,输入服务账号的说明。说明可提醒您特定服务账号的用途。
- 点击创建并继续。
-
点击选择角色字段,然后选择一个角色,如 Hybrid 组件使用的服务账号和角色中所述。如果 Apigee 角色未显示在下拉列表中,请刷新页面。
例如,对于日志记录组件,请选择 Logs Writer 角色。
如有必要,请输入文本,按名称过滤角色列表。例如,如需仅列出 Apigee 角色,请在过滤条件字段中输入
Apigee
。您可以向服务账号添加多个角色,但 Apigee 建议您只为每个建议的服务账号使用一个角色。如需在创建服务账号后更改其角色,请使用 Cloud 控制台中的 IAM 页面。
- 点击继续。
Google Cloud 会显示向用户授予访问此服务账号的权限视图:
- 在创建密钥(可选)下,点击创建密钥。
Google Cloud 为您提供了下载 JSON 或 P12 密钥的选项:
- 选择 JSON(默认值),然后点击创建。
Google Cloud 会将 JSON 格式的密钥文件保存到您的本地机器上,并在成功后显示确认信息,如以下示例所示:
稍后您将使用某些服务账号密钥来配置 Hybrid 运行时服务。例如,在配置 Hybrid 运行时时,您将使用 SERVICE_NAME
.serviceAccountPath
属性指定服务账号密钥的位置。这些密钥由服务账号使用,以获取访问令牌,然后服务账号使用这些访问令牌代表您针对 Apigee API 发出请求。(但目前还不能;现在只需记住其保存位置。)
- 针对Hybrid 组件使用的服务账号和角色中列出的每个服务账号重复第 4 步到第 11 步(
apigee-mart
账号除外,因为没有关联任何角色,所以不为其分配角色)。完成上述操作后,您除了使用默认账号(如有)外,还应获得以下服务账号:
在 Google Cloud 控制台中,服务账号标有 图标。
创建服务账号后,如果您要添加或移除其角色,则必须使用 IAM 和管理视图。您无法在服务账号视图中管理服务账号的角色。
使用 gcloud 服务账号创建 API
您可以使用 Cloud Identity and Access Management API 创建和管理服务账号。
如需了解详情,请参阅创建和管理服务账号。
问题排查
-