在Dify中增加工作空间(租户)
本文主要介绍了如何在Dify中增加工作空间(租户),大概思路是在tenants、tenant_account_joins和accounts数据表中新增相应记录,然后生成生成私钥和公钥,更新租户数据表中的公钥,最后把私钥放入指定位置。
一.新增tenants和tenant_account_joins记录
insert into tenants(name, plan, status, created_at, updated_at) values(); insert into tenant_account_joins(tenant_id, account_id, role, created_at, updated_at) values()
1.tenants数据表结构

2.tenant_account_joins数据表结构

3.account_id获取
account_id是uuid_generate_v4() 函数生成 UUID,长度为128位(二进制),对应36个字符(字符串表示),格式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。

4.租户账号角色
| 角色 | 解释 |
|---|---|
| OWNER | 拥有最高权限的租户所有者,可以管理所有资源和用户 |
| ADMIN | 管理员,拥有特权权限,可以管理大部分资源但权限低于所有者 |
| EDITOR | 编辑者,拥有内容编辑权限,可以修改资源但无管理权限 |
| NORMAL | 普通用户,具有基本访问权限,但不能编辑或管理关键资源 |
| DATASET_OPERATOR | 数据集操作员,专门负责数据集的操作和管理 |
5.账号状态
这些状态用于跟踪系统中用户账号的生命周期和当前可用性。
| 状态 | 枚举值 | 说明 |
|---|---|---|
| PENDING | “pending” | 账号已创建但尚未完成验证流程 |
| UNINITIALIZED | “uninitialized” | 账号已创建但用户尚未完成初始设置 |
| ACTIVE | “active” | 账号处于正常活跃状态,拥有完整访问权限 |
| BANNED | “banned” | 账号因违反规则被管理员禁用 |
| CLOSED | “closed” | 账号已被关闭(可能是用户主动关闭或系统关闭) |
二.生成私钥和公钥
1.生成私钥
sudo openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048Copy
该命令的作用是以 RSA 算法生成一把 2048 位私钥,并保存为 private.pem:
| 命令 | 作用 |
|---|---|
| sudo | 以 root 权限执行命令,确保能在受限目录(如 /etc/ssl/private)写文件或满足系统安全策略。若当前目录可写且无特殊限制,可去掉。 |
| openssl | 调用 OpenSSL 命令行工具(标准的加密库与工具集合)。 |
| genpkey | “generate private key” 的缩写:OpenSSL 3.0 之后推荐的私钥生成子命令,取代旧的 genrsa、gendsa 等专用命令。 |
| -algorithm RSA | 指定密钥算法为 RSA。可替换为 EC、ED25519、SM2 等。 |
| -out private.pem | 将生成的 PKCS#8 私钥(含算法参数)保存到文件 private.pem(PEM 格式,Base-64 带头尾 —–BEGIN PRIVATE KEY—–)。 |
| -pkeyopt rsa_keygen_bits:2048 | 通过 pkeyopt 传入算法生成参数:rsa_keygen_bits 设置密钥长度为 2048 位(常见最小安全位数)。也可以改为 3072 或 4096 提高安全强度。 |
2.生成公钥
sudo openssl rsa -pubout -in private.pem -out public.pem
该命令的作用是根据现有 RSA私钥private.pem导出对应的公钥,并保存为public.pem:
| 命令 | 含义 |
|---|---|
| sudo | 以root权限运行,便于读取受限目录中的密钥或把公钥写入系统路径;如果当前用户已有足够权限,可省略。 |
| openssl | 调用 OpenSSL 命令行工具。 |
| rsa | OpenSSL的RSA专用子命令,用于查看、转换或导出 RSA 密钥(与 genpkey 的”生成”功能相对)。 |
| -pubout | 表示”public out”:不要输出私钥,而是从输入的私钥中推导并输出 公钥。 |
| -in private.pem | 指定输入文件为private.pem,里面应是PEM编码的RSA私钥;若私钥加密,执行时会提示输入口令。 |
| -out public.pem | 将导出的公钥写入 public.pem(PEM 格式,文件头为 -----BEGIN PUBLIC KEY-----)。 |
三.更新租户数据表中的公钥
更新租户数据表中的公钥,如下所示:
update tenants set encrypt_public_key='' where id='';
四.私钥放入指定位置
私钥放入dify/api/privkeys/{tenant_id},文件名为private.pem。
参考文献
[0] 在Dify中增加工作空间(租户):https://z0yrmerhgi8.feishu.cn/wiki/Kk5ywxSpqiXJN8knOK9c2Zl5ned
[1] 本地部署相关问题:https://docs.dify.ai/zh-hans/learn-more/faq/install-faq
知识星球:Dify源码剖析及答疑,Dify扩展系统源码,AI书籍课程|AI报告论文,公众号付费资料。加微信buxingtianxia21进NLP工程化资料群,以及Dify交流群。
(文:NLP工程化)
在Dify中增加工作空间(租户)最先出现在每时AI。