EKS部署的Node-RED多用户项目隔离配置方案问询
Node-RED多用户工作区隔离与Git同步方案
一、实现用户会话隔离的配置步骤
1. 配置基于用户的独立工作目录
Node-RED默认使用全局共享工作目录,要实现隔离,需为每个用户分配专属目录。修改settings.js,通过动态逻辑指定用户专属的工作目录和项目根路径:
module.exports = { // 动态映射用户专属工作目录,关联EFS上的独立子目录 userDir: function(user) { if (user) { return `/data/node-red/users/${user.username}`; } return '/data/node-red/default'; }, projects: { enabled: true, workflow: { mode: "manual" }, // 关闭全局项目展示,仅显示当前用户的私有项目 globalProjects: false, // 指定每个用户的项目存储根路径 userProjectsRoot: function(user) { return `/data/node-red/users/${user.username}/projects`; } }, adminAuth: { type: "credentials", users: [{ username: "admin", password: "$2b$08$hashedPassword1", permissions: "*" }, { username: "test", password: "$2b$08$hashedPassword2", permissions: "*" }] }, functionGlobalContext: { fs: require('fs'), path: require('path') } }
2. 配置EFS目录权限
在EFS挂载的根目录下,提前创建用户专属目录并设置Node-RED进程可读写的权限(Node-RED默认以uid 1000运行):
# 登录Node-RED Pod或EFS挂载节点执行 mkdir -p /data/node-red/users/admin /data/node-red/users/test chown -R 1000:1000 /data/node-red/users
3. 验证隔离效果
重启Node-RED实例后,admin与test用户登录后将仅能查看、操作自己目录下的项目,彼此的流与项目完全独立。
二、团队环境结合Git同步的隔离方案
方案1:独立Git仓库隔离(完全隔离)
- 为每个用户在Bitbucket创建独立仓库,用户创建Node-RED项目时,关联自己的Bitbucket仓库地址。
- 依托Bitbucket的仓库权限体系,控制不同用户的仓库访问权限,比如admin的仓库仅对admin开放,test的仓库仅对test开放。
- 优势:完全隔离,权限边界清晰,避免误操作他人代码。
方案2:同一仓库分支隔离(半共享场景)
- 若团队需要共享基础流模板,可使用同一Bitbucket仓库,为每个用户分配专属开发分支。
- 用户拉取主分支的基础代码后,在自己的分支上开发,提交至专属分支;合并主分支需管理员审批。
- 配合Bitbucket的分支权限规则,限制用户仅能操作自己的分支,主分支仅允许管理员合并。
方案3:自定义权限过滤(进阶)
- 若需要更细粒度的项目访问控制,可扩展
adminAuth的onAuth回调函数,根据用户名过滤可见项目。示例:
adminAuth: { type: "credentials", users: [...], onAuth: function(user) { return { permissions: user.permissions, projects: { filter: function(project) { // 仅允许用户访问名称包含自身用户名的项目 return project.name.includes(user.username); } } }; } }
- 此方案需自定义开发,适合有特定权限需求的场景。
内容的提问来源于stack exchange,提问作者Shuaib Shaikh
相关产品推荐
相关产品推荐

