dannyota/secops

GitHub: dannyota/secops

一个用于以代码方式操作 Google SecOps(Chronicle SIEM + Siemplify SOAR)的 Go CLI 和非官方 SDK,通过 pull-diff-push 调和引擎将安全运营配置纳入版本控制。

Stars: 1 | Forks: 0

secopsctl — operate Google SecOps as code # secopsctl **以代码方式操作 Google SecOps (Chronicle SIEM + Siemplify SOAR) —— 适用于*任何*租户。** [文档](docs/README.md) · [功能特性](docs/design/catalog.md) · [网站](https://secops.danny.vn)
一个单一的 Go 二进制文件**以及**可导入的 Go SDK,像 Terraform 管理基础设施一样管理你的 SIEM/SOAR。其核心循环是**拉取实时状态 → 审查 `git diff` → 推送回去** —— 一个调和引擎,覆盖所有层面。实时 事件、警报和案例会被直接读取并执行操作 —— 永远不会从 文件中进行调和。它是**租户中立**的(没有硬编码内容;一切都来自一个 配置文件),并且专为人类和 LLM agent 设计:确定性的 flags, 可选的 `--json`,清晰的 `--help`。 ## 它的功能 - **配置即代码** — 跨越 SIEM 和 SOAR 层面(规则、参考列表、feeds、parsers、dashboards、playbooks、 webhooks、environments 等)的 `pull` → `git diff` → `push`,由一个引擎调和。 - **处理队列** — 案例计数和服务器端过滤器,针对每个案例和 每个警报的 triage 动词,以及警报 ⇄ 案例 ⇄ 规则桥接;AI 辅助: 针对每个警报的 Gemini 调查 (`alerts investigate`)、结构化的案例 摘要、基于环境的 Gemini 聊天。请参阅 [triage 指南](docs/guides/triage.md)。 - **端到端 Playbooks** — 发现创作面板(每个 action、 flow function、trigger、block),离线或通过 API 创作,然后 运行、调试、回滚和提升。请参阅 [playbooks 指南](docs/guides/playbooks.md)。 - **专为 agent 打造** — 强制的只读模式 (`SECOPS_READONLY=1` / `--read-only`)、`--non-interactive`、机器可读的命令目录 (`secopsctl commands --json`),以及本地修改审计日志 (`$SECOPSCTL_HOME/audit.jsonl`),此外在每个 修改动词上都有优先 dry-run 的防护。完整方案: [LLM 驱动的自动化](docs/tips/10-llm-and-automation.md)。 ## 安装 ``` go install danny.vn/secops/cmd/secopsctl@latest # 或者,从克隆中: go build -o secopsctl ./cmd/secopsctl ``` 需要 Go ≥ 1.26 — 一个静态二进制文件,无需 runtime。预构建的、带有校验和的、 [cosign](https://github.com/sigstore/cosign)-签名的二进制文件 (linux/macOS/windows · amd64/arm64) 可在 [Releases](https://github.com/dannyota/secops/releases) 页面获取;构建验证和签名检查步骤请参阅 [安装指南](docs/guides/install.md)。 ## 快速开始 **1. 配置你的租户。** `secopsctl config` (别名 `init`) 会打开一个单屏 表单 → `~/.secopsctl/instance.yaml` (`0600`,被 git 忽略)。或者将每个字段作为 flags 传递: ``` secopsctl config \ --project-id your-project-id \ --project-number 000000000000 \ --region us \ --customer-id 00000000-0000-0000-0000-000000000000 \ --soar-url https://.siemplify-soar.com \ --non-interactive ``` 这四个标识符来自 Cloud Console 和 SecOps **Settings → SIEM Settings** (customer UUID);请同时设置 `project_id` 和 `project_number`。在哪里 找到它们:[configure.md](docs/guides/configure.md#find-your-secops-identifiers)。 **2. 两类凭据。** SIEM 使用 **Google ADC** (在进程内生成,磁盘上无存留);SOAR 使用长期有效的 **AppKey** (SOAR UI **Settings → Advanced → API Keys**;存储在 config 中或 `$SECOPS_SOAR_APP_KEY`)。这两个平面是 独立的 —— 仅使用 SIEM 即可提供一个干净的 `doctor` 结果;当你需要时随时添加 SOAR: ``` gcloud auth application-default login gcloud auth application-default set-quota-project your-project-id # skipping this is the classic first-run 403 ``` **3. 找到你的 SOAR host** *(仅限 SOAR 用户)*。`soar_url` 是特定于租户的, 且不在公开文档中 —— 从一个实时的请求中读取它: 1. 登录到 **SecOps Web UI**。 2. 打开 **dev-tools → Network** 并点击任意案例。 3. 请求会发送到 `https://.siemplify-soar.com` —— 这就是你的 `soar_url`。 **4. 验证。** 一个针对配置和两个平面的只读冒烟测试 —— 结果干净意味着你已经 连接成功: ``` secopsctl doctor ``` 然后运行循环 (`pull` → 审查 `git diff` → `push`);请参阅 [命令参考](docs/guides/usage.md) 和 [配置指南](docs/guides/configure.md)。 ## 作为 Go SDK 使用 三个可导入的客户端(纯 API,无文件 I/O),按平面 + 凭据划分; 构造一个客户端永远不会触发网络请求(认证是延迟解析的): | Package | 平面 | Auth | |---|---|---| | `danny.vn/secops/chronicle` | Chronicle **SIEM** (现代 REST,每个平面版本固定) | OAuth / ADC | | `danny.vn/secops/soar` | 现代 **SOAR** v1alpha | AppKey | | `danny.vn/secops/soar/legacy` | Siemplify 外部 API —— 广泛且可靠的路径 | AppKey | ``` c, _ := chronicle.NewClient(chronicle.Settings{ ProjectID: "your-project-id", ProjectNumber: "000000000000", Region: "us", CustomerID: "00000000-0000-0000-0000-000000000000", }, auth.OAuth()) // ADC; credentials resolved lazily on first call rules, err := c.ListRules(context.Background()) ``` 完整的 SDK 指南 —— 包含所有三个客户端、auth、错误、分页:[docs/guides/sdk.md](docs/guides/sdk.md)。 ## 文档 [文档站点](https://secops.danny.vn) 由三个文件夹组成: | 文件夹 | 用途 | 从这里开始 | |---|---|---| | [guides/](docs/guides/) | **使用** secopsctl | [安装](docs/guides/install.md) → [配置](docs/guides/configure.md) → [循环](docs/guides/the-loop.md) · 然后 [Triage](docs/guides/triage.md) · [Playbooks](docs/guides/playbooks.md) · [Rules](docs/guides/rules.md) · [Query](docs/guides/query.md) · [SOAR cases](docs/guides/soar-cases.md) · [Reconcile](docs/guides/reconcile.md) · [Go SDK](docs/guides/sdk.md) · [命令参考](docs/guides/usage.md) | | [design/](docs/design/) | **构建** secopsctl | [架构](docs/design/architecture.md) · [平面](docs/design/surfaces.md) · [目录 (状态)](docs/design/catalog.md) · [路线图](docs/design/roadmap.md) | | [tips/](docs/tips/) | SecOps **手艺** | [SecOps 即代码](docs/tips/01-secops-as-code.md) · [YARA-L](docs/tips/03-yara-l-rules.md) · [SOAR 运维](docs/tips/09-soar-operations.md) | UDF 过滤器示例位于 [`examples/queries/`](examples/queries/);遇到不熟悉的 术语?请参阅[术语表](docs/GLOSSARY.md)。 ## License 采用 [Apache License 2.0](LICENSE) 授权。
标签:EVTX分析, Go, Ruby工具, SOAR, 安全运营, 安全运营中心, 扫描框架, 日志审计, 网络映射, 自动化运维