SSP Enterprise 中的角色与权限

·阅读 6 分钟·作者:SSP Editorial Team
SSP Academy 封面:SSP Enterprise 中的角色与权限

SSP Enterprise 中的角色与权限

决定共享保管是否真正可行的那个问题,不是「谁说话管用?」,而是「谁能把钱转走?」——而在一个构造良好的系统里,这是两个不同的问题,答案也不同。

SSP Enterprise 在两个彼此分离的地方回答它们。行政权限住在组织的记录里,在那里它可以像任何其他权限一样被授予和撤销。花费权限住在金库地址里,在那里它不能。本文是这两者的完整地图,也包括人们最常感到意外的那些情形。

如果你还没读过关于组织与金库如何拼合的总览,SSP Enterprise:面向团队的多签金库是本文之前的那一篇。

两套系统,刻意为之

组织角色治理工作空间:邀请人、创建金库、更改设置、阅读审计日志。它是一条数据库记录。改动它,改动立即生效。

金库角色治理某一个具体金库,而它三个取值之一——签名人——意味着你的公钥是该金库地址派生方式的一部分。这一点无法通过编辑任何东西来改变。它只能通过在另一个地址上创建另一个金库并转移资金来改变。

两套角色系统,同一个人

实际后果,也是本文最重要的一句话:一位不是某金库签名人的组织所有者,无法从该金库花钱。 拿到面板访问权不行,拿到数据库访问权不行,有 SSP 配合也不行。地址不知道「所有者」是什么。

组织角色,精确地讲

四种角色,严格分级。

能力所有者管理员成员观察者
读取金库、活动、审计日志
邀请新成员仅当组织允许时
更改成员或观察者的角色
更改另一位管理员的角色
更改组织设置
转移所有权、删除组织
退出组织否——请先转移

那张表里有三个细节值得单独拎出来。

管理员动不了其他管理员。 管理员可以提升、降级并移除成员与观察者,但一旦目标是另一位管理员,操作就会被拒绝。这是刻意的:意味着单个被攻破的管理员账户,无法悄悄拆掉行政层的其余部分。

成员邀请是一个组织级开关。 默认情况下,邀请是管理员的能力。组织可以选择让成员也能邀请——对于入职不该排在两个人身后的较大团队很有用;若你想要一个收紧的边界,就该保持关闭。

所有者不能退出。 所有者恰好只有一位,退出的方式是先把所有权转移给别人。这避免了那种失效模式:组织最后没有任何人能执行仅限所有者的操作。

金库角色,精确地讲

三种角色,其作用范围是单个金库,而不是整个组织。

金库管理员管理该金库:它的策略、通知设置、它的观察者。金库管理员不一定是签名人,而不是签名人的金库管理员无法批准提案。

签名人持有该金库 M-of-N 中的一把密钥。签名人起草提案并批准提案。他们的公钥在地址里。

金库观察者能看到余额、提案与历史,但无法起草或批准任何东西。对审计人员、会计以及任何需要可见性而不需要权限的人都很有用。

由于金库角色是按金库授予的,同一个人可以是运营金库的签名人,而只是国库金库的观察者。这是正常且健康的安排:它把日常花费权限交给需要的人,同时把储备留在另一个更小的委员会背后。

邀请发往身份,而不是收件箱

SSP Enterprise 中的邀请是发给一个 WK 身份的——由某人的 SSP WalletSSP Key 派生出的 2-of-2 多签身份——而不是发给一个电子邮件地址。

这是一项安全性质,而不是不便。电子邮件地址可能被攻破、被转发,或者打错字之后落到别人手里。而 WK 身份只能由持有那个人两台设备的人来出示,这意味着一封邀请无法被恰好读到消息的人接受。

由此有两个后果。第一,你邀请的人必须先配置好 SSP 才能加入;按设计,不存在「从邀请邮件注册」的路径。第二,邀请具有电子邮件邀请所不具备的可审计性,因为接受是一个已签名的行为。

过期的邀请不会被删除。它们被无限期保留,因为「谁被邀请过却从未加入」正是审计在几个月后会问的那类问题。审计轨迹里没有任何东西带有生存期。

什么需要重新签名

有些操作的后果太重,不能仅凭一个会话 cookie 授权。其中十三项要求你在动作发生的那一刻用两台设备重新签名,包括:

  • 转移一个组织的所有权
  • 删除一个组织
  • 移除一位成员
  • 更改某个账户的企业邮箱

这里的机制很关键。待签名的挑战由服务器生成——绝不由客户端生成——而挑战与具体动作、具体目标以及一个时间戳绑定。从一次操作中截获的签名,无法被重放到另一次操作中。

每一次尝试都会被永久记录,包括失败的。一连串失败的关键操作尝试本身就是一个值得留档的信号。

角色变更记录在哪里

每一次权限变更都会写入组织的审计日志:角色的授予与撤销、发出、接受、拒绝与撤回的邀请、成员的加入与离开、移除,以及所有权转移。金库层面的变更有各自的事件——签名人与观察者的增删、策略编辑、金库状态变更。

审计记录是永久的。没有过期时间,也没有清理任务,因为审计轨迹的价值完全在于那些没人预料到会需要的部分。一个在十一月发现问题的组织,想要的是三月的记录。

设计你的角色布局

几个在实践中站得住的模式。

把管理员与签名人分开。 让一位运营负责人担任组织管理员,以便管理人员与金库设置,而不必把他的密钥放进国库地址。这样行政上的便利就不携带任何保管风险。

给财务职能大方地分配观察者角色。 读取权限很便宜,而且能让对账成为可能,同时不扩大可以花钱的人的集合。会计没有理由成为签名人。

让国库委员会比运营委员会更小。 3-of-5 的储备加 2-of-3 的运营金库,是一种常见且明智的划分:你每天都会碰的钱,其批准门槛低于你一年才碰一次的钱。2-of-2、2-of-3 与 m-of-n 的比较讲了如何权衡这些数字。

在有人离开之前就定好离职流程。 把某人从组织中移除是一次角色变更;把他从签名人中移除则是一个新金库加一次资金迁移。写清楚你会做哪一种,并确认剩下的签名人集合仍能达到阈值。如果你的一把密钥被攻破会怎样走过了相邻的情形。

不要把策略当成权限。 白名单、时间锁与批准规则塑造的是「什么会被提出来」,但阈值是链所强制的唯一一件事。设计角色时就当策略引擎不存在,然后再把策略作为流程改进叠加上去。

只要把一个问题放在脑子最前面,角色层级就很容易设计对:这些变更里哪些需要一个新地址,哪些只是记录?组织层里的一切都是记录。只有签名人集合才是地址。

分享本文

相关文章