NocoBase 安全指南
NocoBase 从功能设计到系统实现都注重数据和应用的安全性。平台内置了用户认证、访问控制、数据加密等多项安全功能,同时允许根据实际需求灵活配置安全策略。无论是保护用户数据、管理访问权限,还是隔离开发和生产环境,NocoBase 都提供了实用的工具和方案。本指南旨在为安全地使用 NocoBase 提供指导,帮助用户保护数据、应用和环境的安全,确保用户安全的前提下高效使用系统功能。
用户认证
用户认证用于识别用户身份,防止用户在未授权的情况下进入系统,并确保用户身份不被滥用。
Token 密钥
默认情况下,NocoBase 使用 JWT (JSON Web Token) 对服务端 API 进行鉴权。用户可以 通过系统环境变量 APP_KEY 设置 Token 的密钥,请妥善管理应用的 Token 密钥,防止对外泄漏。需要注意的是,如果 APP_KEY 修改了,旧的 Token 也会随之失效。
Token 策略
NocoBase 支持对用户 Token 设置以下安全策略:
通常情况下,我们建议管理员:
- 设置一个较短的 Token 有效期来限制 Token 的暴露时间。
- 设置一个合理的会话有效期,比 Token 有效期长但不宜过长,以平衡用户体验和安全性。利用 Token 自动刷新的机制保证活跃用户会话不中断的同时,减少长期会话被滥用的风险。
- 设置一个合理的过期 Token 刷新时限,使用户长时间不活跃的情况下 Token 自然过期而不签发新的 Token, 降低用户闲置会话被滥用的风险。
Token 客户端存储
默认情况下,用户 Token 存储在浏览器的 LocalStorage 中。关闭浏览器页面后再次打开,如果 Token 还在 有效期内,用户不需要重新登录。
如果你希望用户每次进入页面都需要重新登录,可以设置环境变量 API_CLIENT_STORAGE_TYPE=sessionStorage, 将用户 Token 保存到浏览器的 SessionStorage 中,以达到用户每次打开页面重新登录的目的。
密码策略
专业版及以上
NocoBase 支持为所有用户设置密码规则和密码登录尝试锁定策略,来增强启用了密码登录的 NocoBase 应用的安全性。你可以参考密码策略了解每一个配置项。
密码规则
密码过期配置
密码登录安全
通常情况下,我们建议:
- 设置强度较高的密码规则,以降低密码被关联性猜测、暴力破解的风险。
- 设置合理的密码有效期,以强制用户定期更换密码。
- 结合无效密码登录次数和时间配置,限制短时间内高频的密码登录尝试,防止暴力破解密码的行为。
- 如果在安全要求比较严格的场景下,可以设置一个合理的超过登录限制锁定用户的时间。但需要注意的是,锁定时间设置可能被恶意利用,攻击者可能针对目标账号故意多次输入错误密码,迫使账号被锁定,无法正常使用。实际使用过程中,可以结合 IP 限制,API 频率限制等手段来防范这类攻击。
- 修改 NocoBase 默认的 root 用户名、邮箱、密码,避免被恶意利用。
- 由于密码过期或账号锁定都将无法进入系统,包括管理员账号,建议在系统中设置多个有权限重置密码、解锁用户的账号。

用户锁定
专业版及以上,包含在密码策略插件中
管理因为超过无效密码登录限制而被锁定的用户,可以主动解锁,也可以主动将异常用户添加到锁定列表。用户被锁定后,将禁止以任何认证方式访问系统,包括 API keys.

API 密钥
NocoBase 支持通过 API 密钥的方式调用系统 API, 用户可以在 API 密钥插件配置中添加 API 密钥。
- 请为 API 密钥绑定正确的角色,并确保与角色相关联的权限正确配置。
- 在使用 API 密钥的过程中,防止 API 密钥对外泄漏。
- 通常情况下,我们建议用户为 API 密钥设置一个有效期限,不使用“永不过期”选项。
- 如果发现 API 密钥被异常使用,可能有泄漏风险,用户可以删除对应的 API 密钥,使其失效。

单点登录 (Single Sign-On)
商业插件
NocoBase 提供了丰富的 SSO 认证插件,支持 OIDC, SAML 2.0, LDAP, CAS 等多种主流协议。同时,NocoBase 也有完备的认证方式扩展接口,可以支持快速开发和接入其他认证类型。可以简单地将已有 IdP 和 NocoBase 对接,在 IdP 上集中管理用户身份,提高安全性。

双因素身份认证 (Two-factor authentication)
企业版
双因素身份认证要求用户在使用密码登录的时候,提供第二种证明身份的有效信息,例如通过向用户的可信设备发送一次性动态验证码,以验证用户身份,确保用户身份不被滥用,降低密码泄露产生的风险。
IP 访问控制
企业版
NocoBase 支持对用户访问 IP 设置黑名单或白名单。
- 在安全要求严格的环境中,可以设置 IP 白名单,仅允许特定 IP 或 IP 段访问系统,以限制未授权的外部网络连接,从源头降低安全风险。
- 在公开的网络访问条件下,如果管理员发现访问异常,可以设置 IP 黑名单,阻止已知的恶意 IP 地址,或可疑来源的访问,减少恶意扫描、暴力破解等安全威胁。
- 对被拒绝的访问请求,保留日志记录。
权限控制
通过在系统中设置不同的角色,以及对角色设置相应的权限,可以精细化地控制用户访问资源的权限。管理员需要结合实际场景需要,合理配置,以降低系统资源泄漏的风险。
Root 用户
在初次安装 NocoBase 的时候,应用会初始化一个 root 用户。建议用户通过设置系统环境变量修改 root 用户的相关信息,避免被恶意利用。
INIT_ROOT_USERNAME- root 用户名INIT_ROOT_EMAIL- root 用户邮箱INIT_ROOT_PASSWORD- root 用户密码,请设置一个高强度的密码。
在后续使用系统的过程中,建议用户设置并使用其他管理员账号,尽量避免直接使用 root 用户操作应用。
角色和权限
NocoBase 通过在系统中设置角色,对不同角色授权,并将用户绑定到对应的角色上来控制用户访问资源的权限。每个用户可以拥有多个角色,用户可以通过切换角色,以不同的视角来操作资源。如果安装了部门插件,还可以将角色和部门绑定,用户就可以拥有所属部门上绑定的角色。

系统配置权限
系统配置权限包含了以下设置:
- 是否允许配置界面
- 是否允许安装、启用、禁用插件
- 是否允许配置插件
- 是否允许清除缓存、重启应用
- 各个插件的配置权限
菜单权限
菜单权限用于控制用户进入不同菜单页面的权限,包括桌面端和移动端。


