LayerT 白皮书

共享访问权限,而不是密码

版本
1.0
发布日期
2026年9月19日
读者对象
安全与 IT 工程师
阅读时长
12 分钟
作者
LayerT 团队
摘要LayerT 如何代理共享账号:密封存储、需经审批的授权、在不显示密码的情况下填写供应商的表单,以及按时结束会话。

大多数公司都有几个人共用的登录信息:社交媒体账号、银行门户、薪资服务、某个没人为其设置单点登录的工具的管理控制台。它们的密码最终出现在电子表格或聊天记录里。每个曾经需要使用该账号的人都知道这些密码。有人离职时,按理应当有人把它们全部更改一遍。

LayerT 的答案是共享访问权限,而不是密码。本文说明这一机制如何运作、每一步为何这样构建,以及这种方法的边界在哪里。

模型

LayerT 中的共享账号由四部分组成。

  1. 密封的密钥。 密码,以及(如果供应商使用的话)验证器设置密钥和任何保密登录字段(例如 PIN),由 LayerT 加密并存储。
  2. 策略。 谁可以使用它、是否每次都需要审批人批准、是否同一时间只有一人持有,以及会话持续多久。
  3. 登录配方。 登录字段在供应商网站上的位置,由自动检测得出,或由账号负责人录制一次。它从不包含任何值。
  4. 记录。 每一次请求、批准、登录、延期和退出登录,都归属于具体的人。

人员从不会拿到账号本身。他们拿到的是一个会话:一种有时限、会被记录的登录许可,由 LayerT 替他们完成登录。

密封存储

密钥(secret)使用 AES-256-GCM 信封加密。每个共享账号都有自己的随机 256 位数据密钥。每个密钥(secret)都在该数据密钥下使用一个新的随机 nonce 加密,而数据密钥本身由密钥加密密钥进行加密(“封装”)。数据库只存储密文,保存在单独的表中,与账号设置分开。

更改密码会在一个全新的数据密钥下重新加密该账号的密钥(secret),并被记录。删除账号会同时删除其密钥(secret)。

在生产环境中,密钥加密密钥位于 Google Cloud 在欧盟的密钥服务中,在那里它可以被使用,但无法被提取,并且每次使用都会在 Google 一侧留下记录。此功能已构建,并将随 LayerT 的首次生产部署开启。开发环境中以本地密钥代替。

从请求到会话

  1. 浏览器申请或选择从登录字段中的 LayerT 图标或工具栏启动器发起。一键式账号无需审批。
  2. 控制台或弹出窗口批准适用于中、高敏感级别。任何人都不能审批自己的请求,批准时会重新检查申请人是否在职且有权使用。
  3. LayerT 云端会话开启绑定到该人员及其已注册的浏览器,并设有结束时间。如已设置,同一时间只有一人持有。
  4. 浏览器已登录LayerT 填写供应商的表单。会话标签显示这是一个 LayerT 会话以及剩余时间。
  5. 浏览器会话结束按时结束、由管理员结束,或在人员离职时结束。LayerT 使人员退出该网站的登录。

无人处理的请求会在 30 分钟后过期。如果两位审批人同时做出决定,只有一个决定有效。会话默认持续一小时,从批准起总计最多可延长至八小时。

授权

关键时刻是密码离开存储的那一刻。只有当以下条件全部满足时,LayerT 才会解密密钥(secret):

  • 会话处于活动状态且尚未过期;
  • 它属于提出请求的人以及其已注册的浏览器
  • 该人员在您的目录中仍然在职,并且仍然有权使用该账号;以及
  • 该账号未被禁用。

只有这时,服务器才会在内存中解密密码,并通过 HTTPS 在针对该会话的授权中返回它。每一次授权都会连同人员、账号和设备一起被记录。密码和任何验证器代码都从不出现在日志中。

填写而不显示

授权会交给 LayerT 的 Service Worker,只有当页面正是该账号的确切网站时,它才会将授权交给页面:协议、主机和端口相同,通过 HTTPS,不允许通配符。这项检查使用的是 Chrome 为发起请求的框架报告的地址,而不是页面对自身的任何描述。

填写操作在 Chrome 的隔离环境(isolated world)中运行,这是扩展程序脚本与页面并行运行的独立空间。LayerT 拒绝填写隐藏、透明、位于屏幕外或只读的字段,以防范诱饵字段。密码只会填入密码字段。

为人员完成登录时从不显示密码:它不会出现在启动器、菜单、通知或审计日志中。查看它的唯一方式是提交一个由两人批准的密码请求(见紧急访问)。在为人员完成登录时,LayerT 不会将密码写入浏览器的存储。

密码最终去了哪里. 要完成登录,密码必须填入供应商自己的密码字段。与任何密码管理器一样,这意味着在提交表单时,该值存在于页面中,一个执意而为的人可以使用开发者工具读取它。LayerT 不会假装并非如此。它提供的保护在于:人员从不需要知道密码,只有在获得批准时、在有限的时间内、在正确的网站上才能使用它,并且一切都会被记录。而且在他们离职的那一刻,就会失去访问权限。

为了防止 Chrome 本身提示将共享密码保存到某人的配置文件中,请通过策略关闭 Chrome 内置的密码管理器。LayerT 的部署模板包含这项设置。

谨慎地提交

填写并不等于提交。自动提交默认关闭,只有在账号通过测试登录之后,负责人才能开启它。即使开启,LayerT 也只在以下情况下提交:

  • 人员明确选择了该账号;
  • 页面是确切的网站和路径,并位于顶层框架中;
  • LayerT 填写的每个字段都仍然可见;并且
  • LayerT 无需猜测就找到了提交按钮。

它从不在页面加载时提交。遇到 CAPTCHA 时,LayerT 会暂停,并交由人员处理。

验证器代码

许多供应商账号使用验证器代码。LayerT 将设置密钥保存在其服务器上,并在服务器上生成代码(RFC 6238)。只有当前的六位代码会在需要时传送到浏览器,并像密码一样被填写。如果填写失败,持有会话的人可以在 LayerT 工具栏弹出窗口中查看并复制当前代码;每次查看都会被记录。泄露的代码几秒钟内就会失效。

设置密钥本身只能通过密码请求离开服务器,需经两人批准,并且只显示一次。

按时结束

不会结束的访问称不上治理。LayerT 通过三种方式结束会话:

  • 按计划结束。 在结束前一分钟,人员可以延长或退出登录。到时后,LayerT 会清除该网站的 Cookie 和该标签页的网站存储。
  • 由管理员结束。 所有者或 IT 管理员可以在控制台中结束正在进行的会话,并注明原因。服务器会立即停止认可该会话,浏览器会在大约一分钟内退出登录。
  • 在人员离职时。 当您的目录停用某人或将其从某个组中移除时,LayerT 会在所有地方吊销其会话和请求。
退出登录作用于整个网站. LayerT 通过清除网站的 Cookie 来退出登录,这也会结束人员本人在该网站上的独立会话(如果有的话)。

紧急访问

有时,人员确实需要密码本身,例如要将其提供给供应商的支持团队。LayerT 有意让这件事变得不容易:

  • 密码请求可以针对密码、验证器设置密钥或某一个保密字段。人员提出申请并说明原因:所有者和 IT 管理员可以针对任何账号提出申请,其他人只能针对自己可以使用或负责的账号提出申请。
  • 由两个人批准,两人都不能是申请人,并且其中一人必须是所有者或合规官。它只能在控制台中做出决定,从不通过 Slack 或电子邮件链接做出。
  • 申请人只能查看一次,须在批准后一小时内查看;如果其上次登录已超过 10 分钟,需要先重新登录。第二次查看会被拒绝。
  • 随后它会被标记为已查看。 所有者、合规官和账号负责人会收到警报,账号负责人会被要求在供应商处更改它。每一步都会被记录;值本身从不记录。
  • 用于灾难恢复的离线导出是加密的,并由两名保管人分别掌握,每人各有自己的密码短语。任何一人都无法单独打开它。生成导出会被记录。

对比

共享电子表格通过密码管理器共享LayerT
人员能看到密码通常是,并且可以复制否。由 LayerT 填写。查看密码需要两人批准
使用前需审批很少可选,按账号设置
时间限制每个会话都有
同一时间只有一人持有可选
谁在何时使用过部分每一次请求、批准和会话
离职时终止访问只有在更改每个密码后只有在取消共享并更换密码后根据您的目录自动终止

局限

  • 如上所述,获得授权的人可以使用开发者工具读取已填写的密码。
  • 位于该账号另一个网站所属框架内的登录表单不会显示页内菜单;请从工具栏启动器中选择账号,LayerT 会填写该框架,但不会自动提交。不支持绘制在 canvas 上的表单。
  • 自动轮换密码尚未构建。
  • 通过请求查看密码会立即发送警报。导出目前还不会发送警报 提议中;它们记录在审计日志中。

想在您自己的供应商门户上看看效果吗?请申请演示,并带上您最棘手的共享账号。