在管理账号创建自定义数字员工,让其扮演业务账号中的 RAM 角色,查询、操作业务账号下的日志服务(SLS)与云监控资源,实现多账号之间的资源共享与权限收敛。阅读本文档前,请先阅读 权限配置,了解权限体系的基本概念、用户操作权限与数字员工访问权限的区别,以及各类权限策略的标准模板。
业务场景
企业通常统一在一个管理账号使用 STAROps 平台,而生产资源分散在多个业务账号。运维人员希望在管理账号的对话入口直接排查业务账号的日志与监控数据,但管理账号中的数字员工默认只能访问本账号资源,跨账号查询会因缺少目标账号的访问凭据而失败。本文以管理账号(账号 A)和业务账号(账号 B)两个账号为例,给出端到端的跨账号授权路径。
原理说明
STAROps 支持创建自定义数字员工,自定义数字员工基于配置的 RoleArn 工作。自定义数字员工支持配置多个连接器,阿里云相关的连接器支持配置跨账号 RoleArn。
数字员工在工作时,通过自身配置的 RoleArn 角色扮演跨账号的 Role,以此获取访问跨账号云资源的能力。
限制说明
为保证数字员工工作效果,建议一个数字员工配置的跨账号连接器数量不超过 10。
目标账号的角色必须配置数字员工 RoleArn 的信任策略,否则无法实现跨账号访问。
前提条件
已开通 STAROps。
已创建自定义数字员工并配置 RoleArn。
配置步骤
下述文档中的变量说明可参考下述表格:
变量 | 说明 | 示例 |
| 数字员工归属的主账号 ID | 1234567890 |
| 数字员工配置的角色 ID。
|
|
| 目标访问账号的主账号 ID | 1800000000 |
| 目标访问账号的角色 ID |
|
步骤 1: 账号 B 创建跨账号访问角色(数字员工角色)
在业务账号(账号 B)中创建 RAM 角色,允许账号 A 的角色扮演。
创建 RAM 角色
登录账号 B 的 RAM 控制台。
选择 身份管理 → 角色 → 创建角色。
选择角色类型:云账号。
信任主体名称:其他云账号,输入账号 A 的账号 ID
{uid-a}。填写角色名称:
{role-b},例如starops-cross-account-for-a。
配置信任策略
在信任策略页中编辑信任策略,参考如下示例将信任策略改为只信任 {role-a}。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"RAM": "acs:ram::{uid-a}:role/{role-a}"
},
"Action": "sts:AssumeRole"
}
]
}
为角色授权权限
阿里云支持多种角色授权策略,具体操作可参考:管理RAM角色的权限。请根据具体的任务类型,遵循最小化原则授予特定的权限。例如可通过内置权限策略,授予日志服务、云监控等产品的只读权限。
步骤 2: 账号 A 数字员工创建 Connector
STAROps 内置的云监控、日志服务、阿里云资源等均支持跨账号访问,下述以阿里云资源连接器为例,详细的数字员工 Connector 创建参考:系统连接器。
1. 点击 设置 > 连接器 > 资源。
2. 点击 添加资源连接,选择 阿里云资源。点击 下一步。
3. 配置连接:
连接器 ID:用于唯一标识连接器,创建后不可修改。规则:长度 1–64,仅小写字母、数字和短横线,以字母开头,以字母或数字结尾。
名称:用于在列表中区分连接,最多 128 个字符。
阿里云角色:选择跨账号角色,填写
Role ARN,格式为acs:ram::{uid-b}:role/{role-b}。然后点击 检查权限。
检查跨账号连接正确性
在配置完毕后,您可以通过下述方式验证跨账号连接是否生效:
方式 1:点击数字员工配置页面中的 Connector 可查看连接状态是否正常。
方式 2:直接在数字员工上发起会话,让数字员工尝试访问 Connector。例如:
帮我访问以下连接器 B,看看是否正常。
常见问题
跨账号访问沿数字员工 Role {role-a} 扮演目标 Role {role-b} 的策略工作。连接器上的 检查权限 走同一条链路。失败时建议先打开连接器详情,查看检查失败后的错误码和说明,再按下面条目处理。
提示 Role ARN 格式无效,或错误码 AUTH_ROLE_INVALID
建议在账号 B 的 RAM 角色详情页复制 Role ARN,粘贴到连接器的 Role ARN。格式为 acs:ram::{uid-b}:role/{role-b}:账号段是目标账号 ID,角色段是角色名称。
错误码 AUTH_TOKEN_UNAVAILABLE
报错原因通常为数字员工自身配置的 RoleArn 出现问题,排查路径建议:
确认当前员工是自定义数字员工,并且已配置 RoleArn。
在账号 A 确认
{role-a}存在。默认服务角色为acs:ram::{uid-a}:role/aliyunserviceroleforstarops。确认
{role-a}的信任策略允许 STAROps 相关服务扮演。当前 RAM 用户对
{role-a}具备ram:PassRole。
错误码 AUTH_ASSUME_ROLE_FAILED,或 sts:AssumeRole Forbidden
报错原因通常为数字员工已拿到 {role-a},但无法扮演 {role-b}。排查路径建议:
确认账号 B 中存在该角色,Role ARN 与连接器填写值完全一致。
{role-b}的信任策略 Principal 为acs:ram::{uid-a}:role/{role-a}。默认服务角色时{role-a}填aliyunserviceroleforstarops。数字员工当前 RoleArn 与信任策略中的
{role-a}一致。换 Role 后需要同步修改信任策略。{role-a}具备sts:AssumeRole。自定义角色可授予AliyunSTSAssumeRoleAccess。
连接器跨账号由数字员工 Role 扮演目标 Role。{role-b} 的信任主体填写为数字员工 Role ARN。
错误码 WORKSPACE_NOT_FOUND 或 PROJECT_NOT_FOUND
角色扮演已成功,但读不到所选 Workspace / Project。核对名称和地域属于账号 B,并为 {role-b} 授予对应产品读取权限后,重新 检查权限。