架构

共享账号

LayerT 将团队的共享登录信息密封保存,让合适的人在规定时间内使用它们,并为他们填写供应商的登录表单。任何人都不需要知道密码。

本文描述截至 2026年9月19日 已实现的 LayerT。尚未实现的内容均已标注。

存储密钥

密码、验证器(TOTP)设置密钥和保密的登录字段使用 AES-256-GCM 信封加密

  • 每个共享账号都有自己的随机 256 位数据密钥。每个密钥(secret)都在该数据密钥下使用各自的随机 nonce 加密。
  • 数据密钥本身由保存在 Google Cloud 密钥服务中的密钥加密密钥进行加密(“封装”)。该服务按请求解封,从不交出密钥加密密钥,并且每次使用都会在 Google 一侧留下记录。此功能已构建,随首次生产部署开启。开发环境中以本地密钥代替。
  • 只存储密文,保存在单独的表中,与账号设置分开。删除账号会同时删除其密钥。
  • 更改密码会在新的数据密钥下重新加密两个密钥,并被记录。
不是零知识. LayerT 的服务器能够解密共享账号的密码。为了让人登录,它们必须这样做。控制措施关注的是能触发解密以及何时触发,并且每一次都会被记录。

谁可以使用账号

控制项工作方式
访问权限授予目录组、角色或指定人员。组成员关系通过 SCIM 从您的目录获取
敏感级别低、中或高。默认情况下,中级和高级账号每次使用前都需要审批人批准。只有 IT 可以将账号标记为高级
审批请求在 30 分钟后过期。任何人都不能审批自己的请求。批准时会重新检查申请人是否仍在职、是否仍有权使用。如果两位审批人同时做出决定,只有一个决定有效
同一时间只有一人持有可选,按账号设置。第二个人会看到谁正在使用以及使用到何时
会话时长按账号设置,默认 1 小时。可以延长,但从批准起总计不超过 8 小时

让人员登录

  1. 浏览器选择人员从字段中的 LayerT 图标或工具栏启动器中选择账号。
  2. LayerT 云端检查会话必须处于活动状态,属于此人和这个已注册的浏览器,并且此人必须仍在职且仍有权使用。
  3. LayerT 云端解密只有这时,密码才会在内存中解密,并通过 HTTPS 返回一个授权。
  4. 浏览器匹配网站只有当页面正是该账号的确切网站时,扩展程序才会将授权交给页面。
  5. 页面填写扩展程序从 Chrome 的隔离环境中填写供应商自己的表单。LayerT 从不显示密码。
每一次授权都会连同人员、账号和设备一起记录。密码和验证码从不出现在日志中。

确切网站规则

共享账号绑定到确切的网站:协议、主机和端口必须完全匹配,不允许通配符。一个账号可以列出多个网站,但每一个都必须是确切的。必须使用 https。浏览器会检查页面,LayerT 的 Service Worker 会使用 Chrome 为发起请求的框架报告的地址再次检查,而不是依据页面自称的任何信息。仿冒域名什么也得不到。

保护账号菜单

账号列表是一个显示在封闭 Shadow Root 内的扩展程序页面,因此网站无法读取它或更改其样式。它只接受真实的点击,并且只在完全可见一小段时间之后才接受,以防范将菜单滑到光标下方的伎俩。这降低了点击劫持的风险,但并未消除风险。如果页面移动、遮挡或更改其样式,它会关闭。账号也可以设置为只能从工具栏启动,从而完全关闭页内菜单。

提交表单

自动提交默认关闭。只有在账号通过测试登录之后,账号负责人才能开启它;发布新的登录配方会再次将其关闭。即使开启,LayerT 也只在以下条件全部满足时才提交:人员明确选择了该账号、位于确切的网站、处于顶层框架、所有已填写的字段仍然可见,并且绝不会在页面加载时提交。遇到 CAPTCHA 时,LayerT 会暂停,并交由人员处理。

验证器代码

LayerT 在其服务器上生成验证器代码(RFC 6238)。只有当前的六位代码会在需要时发送到浏览器,并像密码一样被填写。审计日志记录的是使用了代码这一事实,从不记录代码本身。

如果代码未能填入,持有会话的人可以在 LayerT 工具栏弹出窗口中查看并复制当前代码。其他任何人都不能查看,并且每次查看都会被记录。

设置密钥(TOTP 种子)保存在 LayerT 的服务器上。查看它的唯一方式是提交一个由两人批准的密码请求,其中一人必须是所有者或合规官。它只显示一次(见密码请求)。

登录字段与备注

有些网站需要的不只是用户名和密码,例如账户 ID、组织 ID 或 PIN。一个账号可以保存额外的登录字段。新字段默认为保密字段:保密字段像密码一样被密封,并且只会填入密码类型的输入框。显示字段(例如 AWS 账户 ID)对可以使用该账号的人可见。额外字段由账号的登录配方填写,从不靠猜测。

每个账号还有备注,用于记录人员需要了解的事项(“使用新加坡区域”、“不要勾选记住我”),每条备注都有作者和编辑历史。

人员能看到什么、不能看到什么

在登录过程中,LayerT 从不显示密码。它不会出现在启动器、菜单、通知或审计日志中,LayerT 也从不将其保存在浏览器中。唯一的例外是下文的密码请求。

坦诚的限制. 要完成登录,密码必须填入供应商自己的密码字段,任何密码管理器都是如此。一个执意而为、会使用开发者工具的人可以从该字段中读取密码。LayerT 在这方面的保护依靠治理:审批、时间限制、审计记录,以及按时结束、并在人员离职时终止的访问权限。
必需的设置. 请通过策略关闭 Chrome 内置的密码管理器,这样 Chrome 就无法提示将共享密码保存到某人的配置文件中。LayerT 的部署模板包含这项设置。

结束会话

  • 按时结束。 在结束前一分钟,LayerT 会提供延长立即退出登录选项。到时后,它会清除该网站的 Cookie 和该标签页的网站存储,从而使人员退出登录。
  • 由管理员结束。 所有者或 IT 管理员可以在控制台中结束正在进行的会话,并注明原因。LayerT 会立即拒绝该会话的后续授权,人员的浏览器会在大约一分钟内退出登录。他们会被告知会话已由管理员结束,但不会被告知是谁或原因。
  • 在人员离职时。 当您的目录停用某人或将其从某个组中移除时,LayerT 会在所有地方关闭其请求和会话。
退出登录会清除整个网站. 退出登录会清除该网站的所有 Cookie,包括人员本人在该网站上的独立会话(如果有的话)。

设置账号

  • 检测。 LayerT 会自动查找登录字段。在无法确定时,它会请人员指出字段,并将其保存为建议的修正,供账号负责人审核。它从不自动应用于其他任何人。
  • 录制配方。 对于多步骤登录,负责人只需录制一次步骤。配方存储的是字段的位置,从不存储输入的内容。
  • 测试登录。 仅限负责人执行、并会被记录的一次运行,用于在开启自动提交之前证明配方有效。
  • 签名配方。 每个配方在运行前都会进行签名检查。如果检查失败,LayerT 会退回到自动检测,绝不提交表单,并报告原因。
  • 登录健康状况。 控制台会按网站和账号,以文字形式显示过去 7 天、30 天或 90 天内哪些登录成功,以及其他登录在哪一步停止。
  • 导入。 管理员可以从 JumpCloud Password Manager 的导出文件中导入账号。文件在管理员的浏览器中读取;预览从不显示密码,所创建的账号随后会像其他账号一样在 LayerT 的服务器上密封保存。每次导入都会被记录。

密码请求

有时,某人确实需要查看密码、设置密钥或保密字段:例如交给供应商的支持团队,或设置一台新设备。

  1. 控制台申请人员提出申请并说明原因。所有者和 IT 管理员可以针对任何账号提出申请;其他人只能针对自己可以使用或负责的账号提出申请。
  2. 控制台两人批准由申请人以外的两个人批准,其中一人必须是所有者或合规官。这类请求不能在 Slack 中或通过电子邮件做出决定。
  3. 控制台查看一次在一小时内,如果申请人上次登录已超过 10 分钟,需要重新登录,然后可查看该值一次。第二次查看会被拒绝。
  4. LayerT 云端标记为已查看该值被标记为已查看。所有者、合规官和账号负责人会收到警报,账号负责人会被要求在供应商处更改该值。
每一步都记录在审计日志中。值本身从不记录。

紧急访问导出

用于灾难恢复的离线导出是加密的,需要两名保管人各自使用自己的密码短语才能打开。生成导出会被记录。

限制

  • 位于该账号另一个网站所属框架内的登录表单不会显示页内菜单。请从工具栏启动器中选择账号,LayerT 会填写该框架。它在那里从不自动提交。
  • 不支持绘制在 canvas 上的表单,或位于网站自身封闭 Shadow Root 内的表单。
  • LayerT 目前还不会自动轮换密码。
  • 密码请求会在值被查看后立即发送警报。导出目前还不会发送警报 提议中;它们记录在审计日志中。