安全监控代理

Render DevSecOps Sentinel是一个用于PaaS环境的主动可观测性参考实现,通过GitHub Actions定时任务监控Render基础设施的安全威胁和系统不稳定情况。

  • by sagoyanfisic
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sagoyanfisic/render-devsecops-mcp

使用说明

🛡️ 渲染DevSecOps哨兵

PaaS环境中主动可观察性的参考实现。

此存储库实现了 哨兵特工 模式:一个短暂的、自动化的审计员,持续监控您的Render基础设施的安全威胁(凭据泄露)和系统不稳定(关键应用程序错误)。

📖 阅读研究文章: [链接到您的媒体文章]

🏗️ 建筑

与被动监控解决方案不同,此Sentinel Agent通过以下方式在外部运行 GitHub操作 cron作业,确保审计员在与被监控的基础设施分离的信任平面上运行。

核心能力

  1. 🕵️ 人类行为分析(审计日志):

    • 发现 凭证过滤 (ViewConnectionInfoEvent).
    • 发现 未经授权的SSH访问 (StartShellEvent).
    • 发现 数据转储 (DownloadDatabaseBackupEvent).
  2. 🔥 系统健康启发式(应用程序日志):

    • 扫描运行时日志中的关键字,如 CRITICAL, Panic,或 Exception.
    • 对不触发标准正常运行时间监视器的无声故障发出警报。
  3. 🤖 AI原生集成(MCP):

    • 包含 模型上下文协议 配置。
    • 允许AI助手(Claude、Cursor、Windsurf)与基础设施进行上下文交互。

🚀 快速开始

1.分叉和克隆

将此存储库分叉到您的GitHub帐户以启用Actions工作流。

2.配置机密

转到您的存储库 设置>秘密和变量>操作 并添加以下内容:

机密 描述
RENDER_API_KEY 渲染API密钥(帐户设置)。
RENDER_WORKSPACE_ID 您的工作区ID(在仪表板URL中找到)。
RENDER_SERVICE_ID 您要监视的特定服务的ID(例如。, srv-xxxx).
SLACK_WEBHOOK 用于警报的Slack传入Webhook URL。

3.部署“受害者”API(可选)

此仓库包含一个示例FastAPI应用程序 src/ 以演示日志生成。

  1. 创建新的 网络服务 在与此仓库链接的Render中。
  2. 构建命令: pip install -r requirements.txt
  3. 启动命令: uvicorn src.main:app --host 0.0.0.0 --port 10000

4.激活哨兵

代理程序计划每30分钟自动运行一次。立即进行测试:

  1. 去 行动 GitHub中的选项卡。
  2. 选择 🛡️ 哨兵主动观察员.
  3. 点击 运行工作流.

📂 项目结构

render-devsecops-starter/
├── .github/
│   ├── workflows/
│   │   └── security.yml       # The Orchestrator (Cron Job)
│   └── scripts/
│       └── agent.py           # The Brain (Heuristic Logic)
├── mcp/
│   └── config.json            # AI Integration Config
├── src/                       # Sample Application
│   ├── main.py
│   └── routes.py
└── requirements.txt

## 🤖 AI Integration (MCP)

This project supports the official **Render Hosted MCP Server**. This allows you to manage the infrastructure using natural language in Cursor or Claude while you develop.

**Setup for Cursor/Windsurf:**

1. Open your MCP settings (usually `~/.cursor/mcp.json` or via UI).
2. Add the Hosted Render configuration:

```json
{
  "mcpServers": {
    "render": {
      "url": "[https://mcp.render.com/mcp](https://mcp.render.com/mcp)",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY_HERE"
      }
    }
  }
}````