# agent_demo **Repository Path**: sudewei/agent_demo ## Basic Information - **Project Name**: agent_demo - **Description**: No description available - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-05 - **Last Updated**: 2026-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 堡垒机权限访问智能体 ## 项目概述 堡垒机权限访问智能体是一个基于FastAPI开发的权限管理系统,用于控制用户对主机资源的访问权限。该系统提供了完整的用户管理、主机管理、权限管理和访问控制功能,并支持日志审计。 ## 功能特性 - **用户管理**:创建、查询、更新、删除用户 - **主机管理**:管理可访问的主机资源 - **权限管理**:分配、查询、更新、撤销用户对主机的访问权限 - **访问控制**:智能访问决策,支持基于角色的访问控制 - **日志审计**:记录所有访问请求和决策结果 - **JWT认证**:基于JWT Token的安全认证机制 - **RESTful API**:提供完整的API接口,支持多种客户端 ## 技术栈 - **开发语言**:Python 3.10+ - **Web框架**:FastAPI - **数据库**:PostgreSQL(支持SQLite、MySQL等) - **ORM**:SQLAlchemy - **认证**:JWT Token - **密码加密**:bcrypt ## 目录结构 ``` agent_demo/ ├── app/ │ ├── __init__.py │ ├── main.py # 应用入口 │ ├── config.py # 配置管理 │ ├── database.py # 数据库初始化 │ ├── models/ # 数据模型 │ │ ├── __init__.py │ │ ├── user.py # 用户模型 │ │ ├── host.py # 主机模型 │ │ ├── permission.py # 权限模型 │ │ └── audit_log.py # 审计日志模型 │ ├── schemas/ # 数据验证和序列化 │ │ ├── __init__.py │ │ ├── user.py │ │ ├── host.py │ │ ├── permission.py │ │ └── auth.py │ ├── crud/ # 数据操作 │ │ ├── __init__.py │ │ ├── user.py │ │ ├── host.py │ │ └── permission.py │ ├── api/ # API路由 │ │ ├── __init__.py │ │ ├── auth.py # 认证接口 │ │ ├── users.py # 用户管理接口 │ │ ├── hosts.py # 主机管理接口 │ │ └── permissions.py # 权限管理接口 │ ├── services/ # 业务逻辑 │ │ ├── __init__.py │ │ ├── auth_service.py # 认证服务 │ │ ├── access_control.py # 访问控制服务 │ │ └── audit_log.py # 审计日志服务 │ └── utils/ # 工具函数 │ ├── __init__.py │ ├── logger.py # 日志工具 │ └── security.py # 安全工具 ├── tests/ # 测试代码 ├── requirements.txt # 依赖声明 └── README.md # 项目说明 ``` ## 安装说明 ### 1. 克隆代码库 ```bash git clone cd agent_demo ``` ### 2. 创建虚拟环境(可选) ```bash # 使用venv创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows venv\Scripts\activate # Linux/Mac source venv/bin/activate ``` ### 3. 安装依赖 ```bash pip install -r requirements.txt ``` ## 使用方法 ### 1. 配置数据库 编辑 `app/config.py` 文件,修改数据库连接配置: ```python # 数据库配置 DATABASE_URL: str = "postgresql://username:password@localhost:5432/database_name" ``` **注意**:如果密码中包含特殊字符(如@符号),需要进行URL编码,例如 `@` 编码为 `%40`。 ### 2. 初始化数据库 ```bash python -m app.database ``` ### 3. 启动开发服务器 ```bash uvicorn app.main:app --reload ``` ### 4. 访问API文档 启动服务器后,可以通过以下地址访问API文档: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ## API接口 ### 认证接口 - `POST /api/v1/login` - 用户登录(OAuth2密码模式) - `POST /api/v1/login/json` - 用户登录(JSON格式) - `POST /api/v1/register` - 用户注册 - `GET /api/v1/me` - 获取当前用户信息 ### 用户管理接口 - `GET /api/v1/users` - 获取用户列表 - `GET /api/v1/users/{user_id}` - 获取用户详情 - `POST /api/v1/users` - 创建用户 - `PUT /api/v1/users/{user_id}` - 更新用户信息 - `DELETE /api/v1/users/{user_id}` - 删除用户 ### 主机管理接口 - `GET /api/v1/hosts` - 获取主机列表 - `GET /api/v1/hosts/{host_id}` - 获取主机详情 - `POST /api/v1/hosts` - 创建主机 - `PUT /api/v1/hosts/{host_id}` - 更新主机信息 - `DELETE /api/v1/hosts/{host_id}` - 删除主机 ### 权限管理接口 - `GET /api/v1/permissions` - 获取权限列表 - `GET /api/v1/permissions/{permission_id}` - 获取权限详情 - `GET /api/v1/users/{user_id}/permissions` - 获取用户权限列表 - `GET /api/v1/hosts/{host_id}/permissions` - 获取主机权限列表 - `POST /api/v1/permissions` - 创建权限 - `PUT /api/v1/permissions/{permission_id}` - 更新权限信息 - `DELETE /api/v1/permissions/{permission_id}` - 删除权限 ### 访问控制接口 - `POST /api/v1/access/check` - 检查用户对主机的访问权限 - `POST /api/v1/access/check/batch` - 批量检查用户对多个主机的访问权限 ## 配置说明 系统配置可以通过环境变量或`.env`文件进行配置,主要配置项包括: - `APP_NAME` - 应用名称 - `APP_VERSION` - 应用版本 - `DEBUG` - 调试模式 - `DATABASE_URL` - 数据库连接URL - `SECRET_KEY` - JWT密钥 - `ALGORITHM` - JWT算法 - `ACCESS_TOKEN_EXPIRE_MINUTES` - Token过期时间(分钟) - `LOG_LEVEL` - 日志级别 - `LOG_FILE` - 日志文件路径 ## 安全考虑 - 密码使用bcrypt加密存储 - JWT Token具有过期机制 - 所有API接口(除登录和注册外)都需要认证 - 支持HTTPS(生产环境建议开启) - 输入验证和防注入 - 日志脱敏 - 最小权限原则 ## 开发说明 ### 代码风格 项目遵循PEP 8代码风格规范,可以使用以下命令检查代码风格: ```bash flake8 app/ ``` ### 测试 项目使用pytest进行测试,可以使用以下命令运行测试: ```bash pytest tests/ ``` ## 部署说明 ### 生产环境部署 1. 使用gunicorn作为WSGI服务器 2. 配置HTTPS 3. 设置适当的日志级别和日志文件 4. 定期备份数据库 5. 配置监控和告警 ## 许可证 [MIT License](LICENSE) ## 贡献 欢迎提交Issue和Pull Request! ## 联系方式 如有问题或建议,请联系项目维护人员。