Vault AI 密钥管理界面

一个基于React的HashiCorp Vault Web界面,集成了AI辅助的自然语言工作流,用于密钥管理、认证和策略操作。

  • by linuxus
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 linuxus/vault-ai

使用说明

保险库AI

用于HashiCorp Vault的React web界面与混合MCP(模型上下文协议)集成-将传统的API操作与人工智能辅助的自然语言工作流相结合,用于机密管理、身份验证和策略操作。

主要特点

  • 秘密管理 --浏览、创建、更新和删除带有版本历史记录的KV机密
  • 认证 --基于令牌的登录,具有会话管理和自动续订功能
  • AI聊天助手 --通过MCP代理进行Vault操作的自然语言界面
  • 基于角色的访问 --具有预配置用户和策略的演示环境

建筑

┌─────────────────────┐     ┌─────────────────────┐     ┌─────────────────────┐
│                     │     │                     │     │                     │
│   Vault AI Web      │────►│   MCP Proxy         │────►│   HashiCorp Vault   │
│   (React SPA)       │     │   (Node.js)         │     │   Server            │
│                     │────►│                     │     │                     │
└─────────────────────┘     └─────────────────────┘     └─────────────────────┘
        │                                                        ▲
        └────────────── Direct HTTP API ─────────────────────────┘

UI通过两条路径与Vault通信:

  1. 直接HTTP API -通过Vault REST API执行的传统CRUD操作
  2. MCP代理 -使用Anthropic的API通过Node.js代理执行AI辅助操作

技术栈

层 技术
前端 React 18、TypeScript、Vite
状态 状态, TanStack Query
造型 顺风CSS,Radix UI
人工智能集成 Anthropic SDK、MCP代理
部署 Docker、nginx、Kubernetes

快速开始

先决条件

  • Docker 24.0+和Docker Compose 2.20+
  • HashiCorp保险库1.12+(可通过HTTPS访问)

安装

# Clone the repository
git clone https://github.com/linuxus/vault-ai.git
cd vault-ai

# Configure environment
cp .env.example .env
# Edit .env with your Vault address and Anthropic API key

# Build and run
docker compose up -d

# Access the UI
open http://localhost:3000

项目结构

vault-ai/
├── src/
│   ├── components/          # Reusable UI components
│   ├── features/            # Feature modules
│   │   ├── auth/            # Authentication
│   │   ├── chat/            # AI chat assistant
│   │   └── secrets/         # Secrets management
│   ├── hooks/               # Custom React hooks
│   ├── services/            # API clients (Vault, MCP)
│   ├── stores/              # Zustand state management
│   ├── types/               # TypeScript definitions
│   └── utils/               # Utility functions
├── mcp-proxy/               # MCP proxy server (Node.js)
├── scripts/                 # Setup and demo scripts
├── docs/                    # Documentation
├── docker-compose.yml
├── Dockerfile
└── nginx.conf

发展

# Install dependencies
npm install

# Start development server
npm run dev

# Run tests
npm test

# Build for production
npm run build

环境变量

变量 描述 必填
VAULT_ADDR Vault服务器URL 是
ANTHROPIC_API_KEY 人工智能功能的Anthropic API密钥 是
VAULT_CACERT 签署Vault侦听器证书的CA捆绑包的路径(适用于私有/自签名CA,例如。 vault server -dev-tls) 没有
VAULT_CAPATH PEM CA文件目录的路径(替代 VAULT_CACERT) 没有
VAULT_SKIP_VERIFY 跳过TLS验证(仅限开发人员;首选 VAULT_CACERT) 没有
VAULT_CLIENT_CERT / VAULT_CLIENT_KEY 用于双向TLS到Vault的客户端证书+密钥 否
VAULT_TLS_SERVER_NAME 在TLS握手期间覆盖SNI/证书主机名 否
VITE_APP_TITLE 浏览器选项卡标题 否

TLS变量在MCP代理启动时读取一次——更改后重新启动代理。配置错误 VAULT_CACERT/VAULT_CAPATH 路径在启动时快速失败,并出现明显错误。

文档

文档 描述
技术规格 架构和实施细节
设计系统 UI组件和样式指南
MCP集成 AI助手和MCP代理集成
部署指导 Docker部署
Kubernetes指南 使用Kind进行Kubernetes部署

安全

  • 存储在中的保险库令牌 sessionStorage only--从不持久化到磁盘
  • 生产中的Vault连接需要TLS
  • 已启用内容安全策略标头
  • 浏览器存储中没有秘密缓存

贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交更改(git commit -m 'Add amazing feature')
  4. 推送到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

该项目根据MIT许可证获得许可——请参阅 许可证 文件以获取详细信息。

致谢