Ziptax Tool Free
支持按地址、邮编或经纬度查询美国销售税率,含CLI封装与API调用说明。
使用 MGC Blackbox 安全管理数据库凭证,支持 MySQL、PostgreSQL、SQLite 等主流数据库。凭证本地加密存储,运行时动态获取,避免泄露给 AI 模型。需 MGC 1.4.7+ 版本。
openclaw skills install @zkeviny/mgc-database-security命令、参数、文件名以原文为准
spec: usk/3.0
id: mgc_database_security
version: 1.1.0
name: 数据库凭证安全(零暴露版)
description: 使用 MGC Blackbox 实现数据库凭证的安全管理。支持 MySQL、PostgreSQL、SQLite、MariaDB 等数据库。将凭证本地加密存储,运行时动态获取,确保 AI 模型无法直接访问明文凭证。
author: MirginCipher 团队
license: MIT
tags: database, mysql, postgresql, sqlite, mariadb, security, credential-management, zero-exposure, mgc
platform_compatibility: windows, macos, linux
changelog:
- version: 1.1.0
changes:
- 添加完整示例章节与工作流模板
- 添加全面的故障排查章节
- 添加常见问题解答(FAQ)章节
- 添加反模式章节,包含正确实践
- 添加“何时使用 / 何时不使用”说明
- 添加能力边界解释
- 添加高级场景章节
- 添加 SKILL.md 和本地脚本模板
- version: 1.0.1
changes:
- 更新内容以强调 MCP 工具优于 CLI
- version: 1.0.0
changes:
- 初始发布,包含数据库零暴露模式
数据库凭证安全是一项文档类技能,指导如何使用 MGC Blackbox 安全地管理数据库凭证。支持 MySQL、PostgreSQL、SQLite、MariaDB 等多种数据库。该方案使 AI 代理能够在执行数据库操作时,始终不暴露数据库密码或连接字符串给 AI 模型。
本技能不含可执行代码,适合自动审批。
阅读本文档后,AI 代理将掌握以下能力:
- 所有生产环境中的数据库访问都需采用安全凭证管理
- 防止凭证泄露至日志、提示词或 AI 上下文中
- 需要访问数据库的定时脚本
- 连接数据库的 CI/CD 流水线
- 节点 A 创建数据库脚本,节点 B 执行
- 使用 mgc_seal 命令,用目标节点公钥加密脚本
- AI 仅提供 SQL 语句
- 本地脚本负责凭证获取与执行
本技能不适用于以下情况:
- 无需认证即可访问的数据库
- 只读公共数据源
- 临时测试数据库
- 使用模拟数据的演示环境
- 用户每次手动输入凭证
- 直接使用数据库工具(如 DBeaver、MySQL Workbench 等)
本技能具有明确的使用边界,用户需清楚理解:
本技能仅提供凭证管理功能。所有敏感数据库操作(连接、查询、迁移、备份等)必须由本地脚本完成。
pip install mgc-blackboxmgc(默认运行于 http://127.0.0.1:57219)~/.mgc/database/mgc_black_box/.mgc_token本节演示从凭证存储到安全数据库操作的完整流程。
Tool: mgc_save
Parameters:
info_type: "config"
info_owner: "my_mysql_prod"
content: "{
\"host\": \"db.example.com\",
\"port\": 3306,
\"database\": \"production_db\",
\"user\": \"app_user\",
\"password\": \"your_secure_password\"
}"Tool: mgc_save
Parameters:
info_type: "config"
info_owner: "my_postgres_prod"
content: "{
\"host\": \"db.example.com\",
\"port\": 5432,
\"database\": \"production_db\",
\"user\": \"app_user\",
\"password\": \"your_secure_password\",
\"sslmode\": \"require\"
}"Tool: mgc_save
Parameters:
info_type: "config"
info_owner: "my_sqlserver_prod"
content: "{
\"host\": \"db.example.com\",
\"port\": 1433,
\"database\": \"production_db\",
\"user\": \"app_user\",
\"password\": \"your_secure_password\"
}"注意:请将占位符替换为实际数据库凭证。
info_owner是您的引用标识符——后续检索时需使用相同值。
# 在 SKILL.md 中定义:
database_reference:
info_type: "config"
info_owner: "my_mysql_prod"
# AI 仅接收引用,不会看到实际凭证Tool: mgc_get
Parameters:
info_type: "config"
info_owner: "my_mysql_prod"MCP 工具返回存储的 JSON 内容。AI 接收到的信息包括:
本地脚本负责实际数据库操作:
# 概念性脚本流程(不可直接执行):
1. 调用 mgc_get,参数为 info_owner="my_mysql_prod"
2. 解析返回的 JSON 以获取连接参数
3. 使用数据库驱动建立连接
4. 执行 SQL 查询
5. 仅返回查询结果(不包含凭证)
6. 绝不记录或暴露密码当节点 A 需要节点 B 执行数据库脚本时:
Tool: mgc_seal
Parameters:
info_type: "script"
info_owner: "mysql_backup_script"
ext01: "python"
ext04: "-----BEGIN PUBLIC KEY-----\n...节点 B 的公钥...\n-----END PUBLIC KEY-----"返回结果:使用节点 B 公钥加密的脚本胶囊
Tool: mgc_get
Parameters:
info_type: "script"
info_owner: "mysql_backup_script"
action: "run"节点 B 使用私钥解密并执行脚本。节点 A 的数据库脚本对节点 B 完全不可见。
答:安装 MGC Blackbox:pip install mgc-blackbox
答:在终端运行 mgc 启动服务。服务默认运行于 http://127.0.0.1:57219
答:打开浏览器访问 http://127.0.0.1:57219,若返回响应则表示服务正常运行。
答:停止占用该端口的其他程序,或配置 MGC 使用其他端口。
答:使用相同的 info_type 和 info_owner 再次调用 mgc_save,旧凭证将被覆盖。
答:为每个数据库使用不同的 info_owner 值:
答:
mgc_save 以新凭证覆盖原存储(保持 info_owner 不变)答:
info_owner 完全匹配(区分大小写)info_type 正确mgc_list答:
答:可以,如果 AI 调用了 mgc_get。除非你希望 AI 处理结果,否则不要调用 mgc_get。实现零暴露时,应由本地脚本调用 MGC,而非 AI 直接调用。
答:确保本地脚本:
答:
mgc_seal 并指定节点 B 的公钥mgc_get 且 action="run" 解密并执行答:目前 mgc_seal 一次只能针对一个节点。若需分发给多个节点,需分别使用各节点的公钥进行封存。
# 错误 —— 永远不要这样做
def connect_to_db():
connection = pymysql.connect(
host="db.example.com",
password="secret_password" # 明文暴露!
)正确做法:
# 正确 —— 从 MGC 获取
def connect_to_db():
credentials = get_credentials_from_mgc("my_mysql_prod")
connection = pymysql.connect(
host=credentials["host"],
password=credentials["password"]
)# 错误 —— 在 SKILL.md 中
使用以下数据库凭证:
- 主机:db.example.com
- 密码:my_secret_password正确做法:
# 正确 —— 在 SKILL.md 中
数据库凭证已安全存储于 MGC。
引用:info_owner="my_mysql_prod"
AI 不应直接处理凭证。// 错误
{
"info_owner": "my_database",
"ext04": "password=secret123" // 此字段绝不能用于密码!
}正确做法:
// 正确
{
"info_owner": "my_database",
"info_type": "config",
"ext04": "-----BEGIN PUBLIC KEY-----\nNodeB_Public_Key...\n-----END PUBLIC KEY-----"
}
// ext04 仅用于封存时的公钥# 错误
echo "password=secret" > db_credentials.txt正确做法:
# 正确
# 使用 mgc_save 存储到 MGC
# 永远不要将凭证写入磁盘文件# 错误
执行 SQL:SELECT * FROM users WHERE password='{user_password}'正确做法:
# 正确
使用存储在 MGC 中的凭证执行 SQL。
引用:info_owner="my_mysql_prod"
本地脚本负责凭证获取。# 错误
def execute_query(sql):
creds = get_credentials_from_mgc("my_database")
print(f"连接使用密码:{creds['password']}") # 明文暴露!
# ... 执行查询正确做法:
# 正确
def execute_query(sql):
creds = get_credentials_from_mgc("my_database")
logger.info(f"连接至 {creds['host']}") # 不记录密码
# ... 执行查询症状:mgc_get 返回空或报错
解决方案:
info_owner 完全匹配(区分大小写)info_type 正确mgc_list症状:API 返回错误数据或报错
解决方案:
info_typeinfo_type"config"、"credential"、"script"症状:无法连接数据库
解决方案:
症状:连接时认证失败
解决方案:
mgc_save 更新 MGC 中的凭证症状:无法连接 MGC 服务
解决方案:
mgc 启动服务~/.mgc/database/mgc_black_box/.mgc_token症状:工具执行出错
解决方案:
症状:无法访问 MGC 存储
解决方案:
~/.mgc/ 目录的文件权限~/.mgc/database/mgc_black_box/.mgc_token端点:/api/mgc/sensitive/get
方法:POST
请求头:
请求体字段:
响应字段:
端点:/api/mgc/sensitive/save
方法:POST
请求头:同上
请求体字段:
管理多个数据库的凭证:
# 存储标识符:
info_owner: "my_mysql_prod" # MySQL 生产环境
info_owner: "my_postgres_prod" # PostgreSQL 生产环境
info_owner: "my_mysql_dev" # MySQL 开发环境
info_owner: "my_mysql_test" # MySQL 测试环境Tool: mgc_seal
Parameters:
info_type: "script"
info_owner: "mysql_migration_script"
ext01: "python"
ext04: "-----BEGIN PUBLIC KEY-----\nNodeB_Public_Key...\n-----END PUBLIC KEY-----"Tool: mgc_get
Parameters:
info_type: "script"
info_owner: "mysql_migration_script"
action: "run"定期轮换数据库凭证:
Tool: mgc_save
Parameters:
info_type: "config"
info_owner: "my_mysql_prod"
content:已收录 1 个 Skill