riteshhonule/Multi-Tenant-Incident-Response-Platform

GitHub: riteshhonule/Multi-Tenant-Incident-Response-Platform

基于NestJS和React构建的多租户安全事件响应管理平台,提供事件全生命周期管理、角色权限控制和操作审计功能。

Stars: 0 | Forks: 0

# Sentinel - 我的应急响应应用 嘿!这是 Sentinel。它是我构建的一个帮助团队管理安全事件的平台。我试着让它达到了生产就绪状态,并采用了多租户架构,这样不同的公司就可以在同一个数据库上使用它,而不会看到彼此的数据。 ## 我使用了什么(技术栈) - **前端**:React 与 Vite、TypeScript(还在学习中,哈哈)、用于样式设置的 Tailwind,以及用于实现一些酷炫动画的 Framer Motion。 - **后端**:NestJS,用于数据库相关操作的 Prisma,以及 PostgreSQL。 - **认证**:带有 token 和 cookie 的 JWT。我认为它相当安全。 - **文档**:如果你需要查看 API 端点,这里集成了 Swagger。 ## 它能做的酷事 - **多租户**:基本上每个人都有一个 `tenant_id`,因此数据不会泄露。 - **事件管理**:你可以创建、分配和关闭事件。 - **版本控制**:使用了乐观锁,这样两个人就不会同时编辑同一个东西而导致冲突损坏。 - **活动日志**:跟踪每个人正在做的事情。 - **评论**:你可以在帖子中对事件进行讨论。 - **角色**:Admin、Manager 和普通 User。 ## 如何运行它 ### 1. 数据库 - 只需确保你安装了 Postgres。 - 创建一个名为 `incident_db` 的数据库。 ### 2. 后端相关 ``` cd backend npm install # 确保你的 .env 拥有正确的 DATABASE_URL npx prisma migrate dev --name init npx prisma db seed npm run start:dev ``` ### 3. 前端相关 ``` cd frontend npm install npm run dev ``` ## 我是如何构建它的 我使用了一个鉴别器列来实现多租户,因为这比为 1000 个用户建立单独的 schema 要容易得多。每个查询都只是通过我们从 JWT 中获取的 `tenant_id` 进行过滤。客户端甚至不需要发送 ID,我们只需在服务器上从 token 中提取它。 我还在事件中添加了一个 `version` 列。如果你在尝试保存时持有的版本已经过时,它将返回 409 错误。这可以防止人们相互覆盖彼此的修改。 ## 未来计划(如果我有时间的话) - 用 WebSockets 实现实时更新会很棒。 - 为证据照片添加文件上传功能。 - 更好的搜索功能(如果我能搞懂的话,也许会接入 elasticsearch)。 - 为大公司提供 SSO 支持。 希望这能帮到你!如果出了什么问题,请告诉我。
标签:Framer Motion, JWT身份验证, NestJS, PostgreSQL, Prisma, RBAC, React, SaaS, Swagger API文档, Syscall, Syscalls, Tailwind CSS, TypeScript, Vite, Web开发, 乐观锁, 企业级应用, 信息系统管理, 前后端分离, 动态仪表盘, 协同工作, 团队协作, 多租户架构, 安全事件响应, 安全事件管理, 安全插件, 审计日志, 并发控制, 数据库隔离, 时间线生成, 活动时间线, 测试用例, 生产就绪, 自动化攻击, 角色权限控制, 项目管理系统