Skip to Content
账户与组织组织、项目与 RBAC

组织、项目与 RBAC

组织(Organization)是团队协作与计费的主体;项目(Project)是数据隔离的单位;你在组织中的 **角色(Role)**决定你能做什么。三层模型总览见 账户与组织概览

四种角色

基于角色的访问控制(RBAC)采用四级递进角色,等级从低到高:

角色定位
VIEWER只读:查看项目数据与组织基本信息
MEMBER日常使用:在 VIEWER 基础上可读写项目数据
ADMIN组织管理:管理成员、项目、计费,几乎全权
OWNER组织所有者:全权;每个组织任意时刻至少保留 1 个 OWNER

权限判定按「等级 ≥ 要求」放行(例如要求 ADMIN 的操作,OWNER 同样可做)。创建组织的人自动成为 OWNER

角色 × 操作权限矩阵

以下操作与角色要求均以当前实现为准(🔐 = 额外要求 step-up 二次验证):

操作OWNERADMINMEMBERVIEWER
查看项目 / 成员 / DSN key 列表
查看订阅与用量(/settings/billing/usage
查看项目数据(日志 / 崩溃 / APM / 埋点 / Trace)
创建项目
轮换 DSN key✅ 🔐✅ 🔐
邀请成员
修改成员角色 / 移除成员✅ 🔐✅ 🔐
查看组织审计日志
升级套餐 / Stripe Portal / 查看发票
提交数据删除请求(GDPR)✅ 🔐✅ 🔐✅ 🔐✅ 🔐
创建 / 吊销自己的 PAT✅ 🔐✅ 🔐✅ 🔐✅ 🔐

配套的保护机制:

  • 最后一个 OWNER 保护:把组织中最后一个 OWNER 降级或移除会被拒绝 (409 org.last_owner_protected)——先给其他成员授予 OWNER 再操作。
  • 跨租户防枚举:访问不属于你的组织 / 项目统一返回 404(而非 403),不暴露资源存在性。
  • 配额拦截:创建项目、发送邀请会分别校验套餐的项目数 / 席位配额,超限返回 402, 详见 套餐、配额与计费

更细的项目级成员、自定义角色(EE)等仍在规划中;当前角色作用于整个组织

邀请成员

发送邀请(Console:/org/invitations

填写受邀邮箱、选择角色(VIEWER / MEMBER / ADMIN / OWNER,默认 MEMBER)后 Send。 需要 ADMIN 及以上角色;若「现有成员 + 待处理邀请」已达套餐席位数,会被拦截并提示升级。

受邀人接受

受邀人收到带链接的邮件(/onboarding/accept-invitation/{token}),邀请 48 小时内有效。 接受时必须以受邀邮箱对应的账号登录(未注册先注册),邮箱不一致会被拒绝 (403 email_mismatch)。拒绝邀请无需登录。

查看待处理邀请

/org/invitations 列表展示 Email / Role / Sent / Expires。同一邮箱在同一组织只能有一条邀请。

项目管理

创建项目(Console:/org/projects

左栏点 + 新建,填:

  • Slug:3-64 位小写字母 / 数字 / 连字符,组织内唯一;
  • Name:显示名称;
  • Platformweb / ios / android / flutter / react-native

创建成功即自动颁发一把默认 DSN key,并弹窗展示完整 DSN(含 secret,仅此一次)——请立即复制。 项目数量受套餐配额限制,配额已满时按钮禁用并提示升级。

DSN keys 管理

每个项目持有一或多把客户端密钥(DSN key),是 SDK 上报的唯一凭证。签名机制见 DSN 与 HMAC 签名

  • 格式:公钥 argus_pk_ + 32 位十六进制;密钥 argus_sk_ + 64 位十六进制。完整 DSN 形如 argus://<public_key>:<secret_key>@<host>/<project_id>(以 <> 表示占位)。
  • 查看/org/projects 右栏 DSN keys 表格(Name / Public / Secret hint / Status)。 secret 服务端加密存储(AES-256-GCM),任何页面都不再显示明文,只保留末位提示。
  • 轮换(Rotate):右栏 Rotate DSN 按钮,需 OWNER / ADMIN + step-up。行为是 先颁发新 key、再吊销全部旧 active key;旧 secret 仅在上报网关的短暂缓存窗口 (约 60 秒)内仍可用,请把轮换视为「即时失效」,轮换后立刻更新所有客户端配置。
  • 吊销(Revoke)DELETE /v1/keys/{keyID}(需 step-up)。被吊销的 key 上报一律被拒 (401 revoked_dsn)。

丢失 secret 无法找回,只能 Rotate 重发。怀疑 DSN 泄露时应立即轮换,并在 审计日志 中核对相关操作记录。

Console 使用速查

想做什么去哪里
切换当前组织 / 项目左上角 Project Switcher
查看 / 管理成员角色/org/members
邀请成员/org/invitations
创建项目、查看 / 轮换 DSN keys/org/projects
组织审计日志/org/audit

FAQ

ADMIN 和 OWNER 差在哪? 日常管理(成员、项目、计费、邀请)两者相同。差异在组织命运级操作:只有 OWNER 不受「最后一个 OWNER 保护」约束之外的降级限制,且组织必须始终保有至少一个 OWNER

能把某个成员限制到单个项目吗? 目前角色作用于整个组织,项目级授权在规划中。可以用独立组织做硬隔离。

邀请过期了怎么办? 邀请 48 小时后过期,直接在 /org/invitations 重新发送一条新邀请即可。

轮换 DSN 会丢数据吗? 轮换期间客户端若仍持旧 secret,超出缓存窗口后的上报会被拒绝(SDK 会本地缓存降级队列,恢复后 重传,具体能力视各端 SDK 而定,见 SDK 统一框架)。建议在发布窗口内 完成轮换与配置更新。

移除成员会删掉 TA 产生的数据吗? 不会。项目数据归属项目本身;移除成员只回收访问权限。