需先创建初始管理员账号并启用企业级权限模块,再配置全局策略禁止非管理员导出训练数据:执行create_admin命令生成system_admin角色,修改config.py启用RLS、资源策略及认证提供者,重启服务后通过rules.yaml定义并加载deny策略。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要为新上线的 Dify 私有化实例配置首个管理员账号,并同步启用细粒度权限策略,确保后续团队成员加入时能立即遵循预设的访问控制规则,而不是沿用默认开放状态。
创建初始管理员账号
登录 Dify 安装服务器,切换至部署目录(如 /opt/dify),执行初始化命令:python manage.py create_admin --email admin@company.com --password "StrongPass123!"。该命令会绕过 Web 表单校验,直接写入数据库,避免因前端未就绪导致无法登录。
执行后系统将输出 Admin user created successfully,并自动分配 【role: system_admin】 角色。此角色不可删除、不可降级,是整个权限体系的根节点。
若提示 User already exists,说明已有管理员账户,此时请改用 python manage.py reset_password --email admin@company.com 重置密码,不要重复创建。
启用企业级权限模块
编辑 dify/config.py 文件,将以下三项配置值由 False 改为 True:
ENABLE_RLS = True → 启用行级安全,使数据集标签过滤生效
ENABLE_RESOURCE_POLICY = True → 启用资源策略绑定,支持按应用/数据集/模型网关分级控制
AUTH_PROVIDER = "ldap" → 若使用本地账号则改为 "local";此项必须显式声明,否则策略引擎不会加载上下文注入器
【修改后必须重启服务】:运行 docker-compose down && docker-compose up -d(Docker 部署)或 systemctl restart dify-web(Systemd 部署)。不重启会导致 /admin/permissions 页面空白且 API 返回 404。
配置首个全局策略:禁止非管理员导出训练数据
第一步:在 policy/rules.yaml 中新增如下策略块(注意缩进必须为两个空格):
- id: "block_training_data_export"
description: "阻止非管理员用户导出标注数据集"
condition: user.role != 'system_admin'
resource: "dataset/export"
action: "deny"
第二步:通过 CLI 加载策略:dify-cli policy apply --file policy/rules.yaml。该命令会校验 YAML 语法并调用 Admin API 批量注册策略,失败时返回具体字段错误(如 resource 字段缺失)。
第三步:验证是否生效——用普通用户登录,进入任意数据集页面,点击「导出」按钮。页面应显示 403 Forbidden: Policy 'block_training_data_export' denied access,而非弹出下载框。


















