打开WebUI+雪花MCP集成演示
使用的完整演示 开放网络用户界面 作为一个统一的人工智能前端,通过 模型上下文协议(MCP)。此演示展示了企业级安全模式,包括 行级安全(RLS) 和 数据脱敏 由Snowflake自动执行。
这个演示证明了什么
- 统一AI接口:单个聊天UI将用户路由到不同的AI后端(RAG聊天机器人、Snowflake Cortex Analyst)
- 每个用户RBAC:不同的用户根据他们的雪花角色看到不同的数据
- 安全通行证:Snowflake的RLS和屏蔽策略会自动执行
- MCP协议:AI到数据连接的行业标准协议
演示场景
| 用户 | 雪花角色 | 他们看到了什么 |
|---|---|---|
| 西方用户 | WEST_MANAGER | 4名西部地区司机,电话号码被屏蔽 |
| east_user | EAST_MANAGER | 4名东部地区司机,电话号码被屏蔽 |
| 管理员 | ACCOUNTADMIN | 所有8名司机,电话号码可见 |
| webuser | (无) | 仅RAG文档,无数据库访问权限 |
______________________________________________________________________
先决条件
- 雪花账户 (企业版或试用版)
- Docker 桌面版 已安装并正在运行
- 大语言模型提供商 -要么 奥拉玛 (免费)或OpenAI API密钥
- 30-45分钟 用于设置
______________________________________________________________________
设置流程
______________________________________________________________________
快速开始
步骤1:克隆此存储库
git clone https://github.com/azbarbarian2020/openwebui-snowflake-mcp-demo.git
cd openwebui-snowflake-mcp-demo______________________________________________________________________
步骤2:运行雪花设置(5分钟)
- 登录 雪景 作为会计管理员
- 打开一个新的SQL工作表
- 复制以下内容的全部内容
snowflake_setup.sql来自此存储库 - 粘贴并运行(单击“全部运行”或Ctrl+Shift+Enter)
预期结果:末尾的所有验证查询应显示:
- 账户管理员:8个司机,真实电话号码
- WEST_MANAGER:4名司机,“戴口罩”的电话
- EAST_MANAGER:4名司机,“戴口罩”的手机
______________________________________________________________________
步骤3:生成个人访问令牌(10分钟)
您需要三个用户的PAT: 西方用户, EAST_USER,和你的 管理用户.
对于WEST_USER和EAST_USER:
- 在Snowsight中,单击用户菜单(左下角)→ 交换机角色 → 负有责任的。
- 首选 管理员 → 用户和角色 → 用户
- 点击 西方用户 → 认证 标签
- 在“程序化访问令牌”下,单击 +生成新令牌
- 姓名:
openwebui-demo,有效期:30天 - 点击 生成 和 立即复制令牌 (你不会再看到它了)
- 重复以下步骤 EAST_USER
对于管理员用户:
- 单击用户菜单→ 我的资料
- 首选 认证 标签
- 以相同的方式生成PAT
保存所有三个PAT -在步骤5中,您将需要它们。
______________________________________________________________________
步骤4:获取您的帐户标识符
您的Snowflake帐户标识符位于您的URL中:
- 试用账户:
https://abc12345.snowflakecomputing.com→ 标识符是abc12345 - 企业帐户:
https://orgname-accountname.snowflakecomputing.com→ 标识符是orgname-accountname
______________________________________________________________________
步骤5:配置凭据(5分钟)
重要:在步骤7中启动Docker之前,必须完成此步骤。
- 复制模板:
cp config/user_credentials.template.json config/user_credentials.json- 编辑
config/user_credentials.json:
{
"snowflake_account": "YOUR_ACCOUNT_IDENTIFIER",
"semantic_view": "SECURITY_WORKSHOP.TRUCKING.TRUCKING_SEMANTIC_VIEW",
"users": {
"web_user": {
"snowflake_user": null,
"pat": null,
"has_analyst_access": false,
"has_rag_access": true
},
"west_user": {
"snowflake_user": "WEST_USER",
"pat": "PASTE_WEST_USER_PAT_HERE",
"has_analyst_access": true,
"has_rag_access": false
},
"east_user": {
"snowflake_user": "EAST_USER",
"pat": "PASTE_EAST_USER_PAT_HERE",
"has_analyst_access": true,
"has_rag_access": false
},
"admin": {
"snowflake_user": "YOUR_ADMIN_USERNAME",
"pat": "PASTE_ADMIN_PAT_HERE",
"has_analyst_access": true,
"has_rag_access": true
}
}
}- 验证文件是否存在 在继续之前:
ls -la config/user_credentials.json您应该看到一个文件(而不是目录)。如果你看到 d 在权限开始时,出现了一些问题。
______________________________________________________________________
步骤6:安装并启动Ollama(5分钟)
Open WebUI需要一个语言模型。 奥拉玛 在本地免费运行开源LLM。
- 安装Ollama:
- 苹果电脑: brew install ollama 或从以下网址下载 奥拉玛 - Windows/Linux:从下载 奥拉玛
- 启动Ollama并下载模型 (从任何终端运行):
ollama serve # Start the Ollama server (keep this running)在一个 新终端:
ollama pull llama3.2 # Download a capable, lightweight model (~2GB)______________________________________________________________________
步骤7:开始打开WebUI(2分钟)
从仓库目录启动Docker容器:
docker-compose up -d这将下载并启动Open WebUI。等待约30秒启动,然后打开: http://localhost:3002
首次设置:
- 点击 开始使用
- 系统将提示您创建 管理员账户
- 使用
admin@demo.local作为电子邮件(admin零件必须与键入的密钥匹配user_credentials.json) - 输入任何名称和密码(例如。,
Admin User/admin123) - 点击 创建管理员帐户
重要:用户名(前面的部分 @)确定使用哪些Snowflake凭据。使用 admin@demo.local 地图到 admin 报关进口 user_credentials.json,提供完整的雪花访问权限+RAG访问权限。
现在,您应该看到Open WebUI聊天界面。
稍后停止: docker-compose down
验证Ollama连接:
- 单击顶部的模型下拉列表-您应该看到
llama3.2 - 如果不可见,请转到管理面板→ 设置→ 连接
- 验证Ollama URL是否
http://host.docker.internal:11434 - 单击保存并刷新
______________________________________________________________________
步骤8:安装过滤功能(5分钟)
- 在打开WebUI中,单击 你的头像 (右上)→ 管理面板
- 首选 函数 标签
- 点击 +创建函数
- 复制以下内容的全部内容
functions/mcp_analyst_router.py - 粘贴到代码编辑器中
- 点击 保存
- 重要:单击 全球 切换以对所有用户启用它
- 功能状态应显示为启用(绿色)
______________________________________________________________________
第9步:为RAG创建知识库(5分钟)
- 首选 工作区 → 知识
- 点击 +创建知识库
- 姓名:
Technician Reviews - 点击 创建
- 点击 +添加内容 → 上传文件
- 上传
docs/Technician_Reviews_2025.pdf - 等待处理完成(单击PDF内容时,您应该能够看到它)
- 复制知识库ID 从URL:
http://localhost:3002/workspace/knowledge/{THIS-ID}
使用知识库ID更新筛选函数:
- 回到 管理面板 → 函数
- 点击您的 MCP分析路由器 函数
- 找到
knowledge_id阀门并粘贴您的知识库ID(仅UUID,例如。,67156cd0-97ca-4df1-9d44-a3dd6c47d35b) - 点击 保存
- 重新启动容器 要重新加载该函数,请执行以下操作:
docker-compose restart______________________________________________________________________
步骤10:创建测试用户(5分钟)
- 首选 管理面板 → 用户
- 创建这些用户(密码可以是任何演示密码):
| 电子邮件 | 姓名 | 角色 |
|---|---|---|
west_user@demo.local | west_user | 用户 |
east_user@demo.local | east_user | 用户 |
web_user@demo.local | web_user | 用户 |
重要:用户名(@之前)必须与中的键匹配 user_credentials.json
授予web_user访问知识库的权限:
这 web_user 需要明确访问以查询知识库:
- 首选 工作区 → 知识
- 点击 技术人员评审
- 点击 分享 或 访问 按钮(齿轮图标或共享图标)
- 添加
web_user@demo.local访问列表 - 保存
向所有用户授予模型访问权限:
默认情况下,模型对非管理员用户不可见。您必须明确授予访问权限:
- 作为管理员,请访问 管理面板 → 设置 → 模型
- 找到
llama3.2在模型列表中单击它 - 在...之下 访问,或者:
- 切换 公共 为了使其对所有用户可用, 或 - 单独添加每个用户(west_user、east_user、web_user)
- 点击 保存
默认模型已设置为 llama3.2:latest 通过 DEFAULT_MODELS 环境变量 docker-compose.yml,因此不需要额外的配置。
______________________________________________________________________
步骤11:测试演示(5分钟)
测试1:行级安全
以每个用户的身份登录并询问: “显示所有司机及其所在地区和电话号码”
| 用户 | 预期结果 |
|---|---|
| west_user | 4名西部司机,手机显示“戴口罩” |
| east_user | 4名east司机,手机显示“戴口罩” |
| admin | 8个司机(全部),手机显示真实数字 |
测试2:RAG接入
问: “跟我说说陈的绩效评估”
| 用户 | 预期结果 |
|---|---|
| web_user | 来自知识库的完整评论 |
| west_user | “您无权访问知识库” |
| admin | 全面审查(同时具有RAG和Analyst访问权限) |
______________________________________________________________________
故障排除
“我不能那样做”的回答
- 检查一下 全球 过滤器功能已启用切换
- 验证功能是否显示为活动状态(无错误)
Snowflake未返回任何数据
- 验证PAT是否有效(未过期)
- 检查帐户标识符是否正确
user_credentials.json - 确保已创建MCP服务器:
SHOW MCP SERVERS IN SECURITY_WORKSHOP.TRUCKING;
401未经授权的错误(API访问被阻止)
- 试用账户:需要网络策略。在中运行步骤15
snowflake_setup.sql - 内部雪花账户:使用检查现有网络策略
SHOW NETWORK POLICIES; - 跑
SHOW PARAMETERS LIKE 'NETWORK_POLICY' IN ACCOUNT;查看当前政策
RAG不工作
- 验证功能阀中的知识库ID是否正确(只有UUID,没有前导斜线)
- 点击进入知识库,验证您是否可以看到PDF内容
- 更新knowledge_id阀后重新启动容器:
docker-compose restart - 检查日志:
docker logs open-webui-mcp-demo 2>&1 | grep -i "MCP Router" | tail -20
Docker问题
docker-compose down
docker-compose up -d
docker logs open-webui-mcp-demo凭据文件显示为目录
如果你看到 [Errno 21] Is a directory 在日志中,Docker创建了一个目录,而不是挂载文件:
docker-compose down
docker volume rm openwebui-snowflake-mcp-demo_open-webui-mcp-demo-data
rm -rf config/user_credentials.json
cp config/user_credentials.template.json config/user_credentials.json
# Edit config/user_credentials.json with your PATs
docker-compose up -d未选择模型
- 确保Olama正在运行:
curl http://localhost:11434/api/tags - 在管理面板中检查Ollama连接→ 设置→ 连接
- Ollama URL应为:
http://host.docker.internal:11434
______________________________________________________________________
建筑
看 建筑.md 详细的技术文档,包括:
- MCP协议详细信息(JSON-RPC 2.0)
- 安全模型(“先查询,对结果强制执行”)
- 演示与生产差异
- OAuth SSO升级路径
______________________________________________________________________
此存储库中的文件
| 文件 | 描述 |
|---|---|
snowflake_setup.sql | Snowflake设置的完整SQL工作表 |
docker-compose.yml | 打开WebUI容器配置 |
config/user_credentials.template.json | PAT配置模板 |
functions/mcp_analyst_router.py | MCP路由的过滤功能 |
docs/Technician_Reviews_2025.pdf | RAG的示例文档 |
scripts/verify_setup.py | 验证脚本 |
ARCHITECTURE.md | 技术深潜 |
______________________________________________________________________
安全须知
- PAT很敏感 -不要将真正的PAT提交给版本控制
- 演示密码 -更改任何非演示用途的默认密码
- 生产:将PAT替换为OAuth SSO(请参阅ARCHITECTURE.md)
______________________________________________________________________
许可证
MIT许可证-请参阅 许可证
______________________________________________________________________
积分
内置:
