MaximeWewer/wazuh-operator
GitHub: MaximeWewer/wazuh-operator
Wazuh Kubernetes Operator 提供了一种声明式、自动化的方式,在 Kubernetes 上部署、配置和运维 Wazuh 安全监控集群及其全部相关资源。
Stars: 8 | Forks: 2
# Wazuh Kubernetes Operator
一个用于管理 Wazuh 集群的 Kubernetes operator,提供了一种声明式的方法来部署和配置 Wazuh 安全监控平台。
## 功能
- **声明式集群管理** - 使用 Kubernetes 自定义资源定义您的整个 Wazuh 集群
- **自动化部署** - 自动配置 Manager、Indexer 和 Dashboard 组件
- **规则与 Decoder 管理** - 将 Wazuh 检测规则和日志 decoder 作为 CRD 进行管理
- **集成与 Agent 组** - 声明式配置外部集成(Slack、VirusTotal 等)以及共享的 agent 组配置
- **OpenSearch 安全 CRD** - 声明式管理用户、角色、角色映射和租户
- **Wazuh API RBAC CRD** - 管理 Manager API 角色、策略、规则和用户;通过 run_as 限制每个用户的 dashboard 菜单
- **索引生命周期管理** - 配置 ISM 策略、索引模板和快照策略
- **备份与恢复** - 将 OpenSearch 快照和 Wazuh Manager 备份至 S3、GCS、Azure、HDFS
- **TLS 自动化** - 自动生成证书并支持热重载 (Wazuh 4.9+)
- **高可用性** - 具有 Pod 干扰预算的多节点部署
- **安全上线** - 具有重试和回滚功能的受控 indexer/manager 排空
- **网络** - 使用 Gateway API 和 Ingress 暴露 dashboard/manager
- **存储运维** - 在线 PVC 卷扩容和日志轮转
- **监控与追踪** - Prometheus 指标、ServiceMonitor 和 OpenTelemetry 分布式追踪
## 架构
该 operator 监听 `resources.wazuh.com` 自定义资源,并对
Wazuh 技术栈进行调谐:它部署并配置 Manager、Indexer 和 Dashboard,并
将 RBAC / 规则 / 索引配置推送到它们的 API。
```
graph LR
crs["Custom Resources
WazuhCluster, Wazuh*, OpenSearch*"] operator["Wazuh Operator
(controllers)"] crs -->|watch / reconcile| operator agents["Wazuh agents"] subgraph cluster["WazuhCluster (managed)"] manager["Manager
Master + Workers"] indexer["Indexer
(modified OpenSearch)"] dashboard["Dashboard
(modified OpenSearch Dashboards)"] end operator -->|deploy + configure| manager operator -->|deploy + configure| indexer operator -->|deploy + configure| dashboard agents -->|events| manager manager -->|alerts via Filebeat| indexer dashboard -->|query / search| indexer dashboard -->|Manager API :55000| manager ``` ## 快速开始 ### 前置条件 - Kubernetes 1.25+ - 已配置 kubectl - 建议 16GB+ RAM ### 使用 Helm 安装 由于 CRD 体积较大,请使用 `helm template` + `kubectl apply` 而不是 `helm install`: ``` # 安装 operator helm template wazuh-operator oci://ghcr.io/maximewewer/charts/wazuh-operator \ --namespace wazuh-operator --create-namespace | kubectl apply -f - # 部署 Wazuh 集群 helm template wazuh-cluster oci://ghcr.io/maximewewer/charts/wazuh-cluster \ --namespace wazuh | kubectl apply -f - # 检查状态 kubectl get wazuhcluster -n wazuh ``` ### 访问 Dashboard ``` kubectl port-forward svc/wazuh-cluster-dashboard -n wazuh 5601:5601 ``` 打开 - 凭证已自动生成在 secrets 中。
## 支持的 Wazuh 版本
| Wazuh | OpenSearch | 备注 |
| --------------- | ------------------ | ----------------------------------------------------------------------------------- |
| 4.12.x - 4.14.x | 2.19.0+ | 自动 TLS 证书热重载 (file-watch)。 |
| 4.10.x - 4.11.x | 2.16.0 | |
| 4.9.x | 2.13.0 | 通过 API 调用进行 TLS 证书热重载。该 operator 支持的最低版本。 |
| < 4.9.0 | 不支持 | 可能可以运行,但未经测试。 |
## 自定义资源定义
**API 组**: `resources.wazuh.com/v1`
| 类别 | CRD | 简称 |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| **Wazuh Core** | WazuhCluster | wc |
| **Wazuh Config** | WazuhRule, WazuhDecoder, WazuhIntegration, WazuhCertificate, WazuhFilebeat, WazuhAgentGroup | wrule, wdecoder, wintegration, wzcert, wfb, wagentgroup |
| **Wazuh API RBAC** | WazuhRole, WazuhUser | wrole, wuser |
| **Wazuh Backup** | WazuhBackup, WazuhRestore | wbak, wrest |
| **OpenSearch Security** | OpenSearchUser, OpenSearchRole, OpenSearchRoleMapping, OpenSearchActionGroup, OpenSearchTenant, OpenSearchAuthConfig | osuser, osrole, osrmap, osag, ostenant, osauth |
| **OpenSearch Index** | OpenSearchIndex, OpenSearchIndexTemplate, OpenSearchComponentTemplate, OpenSearchISMPolicy, OpenSearchSnapshotPolicy | osidx, osidxt, osctpl, osism, ossnap |
| **OpenSearch Backup** | OpenSearchSnapshotRepository, OpenSearchSnapshot, OpenSearchRestore | osrepo, ossnapshot, osrestore |
## 文档
### 用户指南
| 主题 | 描述 |
| --------------------------------------------------------------------- | --------------------------------- |
| [安装](docs/usage/getting-started/installation.md) | 如何安装 operator |
| [快速开始](docs/usage/getting-started/quick-start.md) | 部署您的第一个集群 |
| [凭证](docs/usage/features/credentials.md) | 自动生成的密码、secrets |
| [TLS 配置](docs/usage/features/tls.md) | 证书管理 |
| [Wazuh API RBAC](docs/usage/features/wazuh-api-rbac.md) | Manager API 角色/用户、run_as 限制 |
| [监控](docs/usage/features/monitoring.md) | Prometheus 集成 |
| [备份与恢复](docs/usage/features/backup-restore.md) | 数据保护 (S3、GCS、Azure、HDFS) |
| [仓库插件](docs/usage/features/repository-plugins.md) | 自动插件安装与 keystore |
| [OpenSearch 安全](docs/usage/features/opensearch-security.md) | Indexer 用户、角色、租户 |
| [Gateway API 与 Ingress](docs/usage/features/gateway-api.md) | 暴露 dashboard/manager |
| [排空策略](docs/usage/features/drain-strategy.md) | 安全的节点排空、重试、回滚 |
| [日志轮转](docs/usage/features/log-rotation.md) | 组件日志轮转 |
| [卷扩容](docs/usage/features/volume-expansion.md) | 在线 PVC 增长 |
| [Filebeat](docs/usage/features/filebeat-configuration.md) | Manager→indexer 传输配置 |
| [高级拓扑](docs/usage/features/advanced-indexer-topology.md) | NodePools、专用角色 |
| [规格配置](docs/usage/features/sizing.md) | 资源规格指南 |
| [示例](docs/usage/examples/) | 配置示例 |
| [故障排除](docs/usage/troubleshooting/) | 常见问题与调试 |
### 开发者指南
| 主题 | 描述 |
| -------------------------------------------------------- | -------------------------- |
| [架构](docs/dev/architecture/operator-design.md) | 整体设计 |
| [测试指南](docs/dev/testing/testing-guide.md) | 如何运行和编写测试 |
| [贡献](docs/dev/contributing/CONTRIBUTING.md) | 如何贡献 |
## 开发
```
# 生成 manifests 和代码
make manifests generate
# 构建和测试
make build test
# 构建 Docker 镜像
make docker-build IMG=myregistry/wazuh-operator:dev
# 本地运行
make install run
```
## 许可证
该项目采用 Apache License 2.0 授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 致谢
- 使用 [Kubebuilder](https://book.kubebuilder.io/) 构建
- 灵感来源于 [opensearch-k8s-operator](https://github.com/opensearch-project/opensearch-k8s-operator)
- 基于 [Wazuh](https://wazuh.com/) 安全平台
WazuhCluster, Wazuh*, OpenSearch*"] operator["Wazuh Operator
(controllers)"] crs -->|watch / reconcile| operator agents["Wazuh agents"] subgraph cluster["WazuhCluster (managed)"] manager["Manager
Master + Workers"] indexer["Indexer
(modified OpenSearch)"] dashboard["Dashboard
(modified OpenSearch Dashboards)"] end operator -->|deploy + configure| manager operator -->|deploy + configure| indexer operator -->|deploy + configure| dashboard agents -->|events| manager manager -->|alerts via Filebeat| indexer dashboard -->|query / search| indexer dashboard -->|Manager API :55000| manager ``` ## 快速开始 ### 前置条件 - Kubernetes 1.25+ - 已配置 kubectl - 建议 16GB+ RAM ### 使用 Helm 安装 由于 CRD 体积较大,请使用 `helm template` + `kubectl apply` 而不是 `helm install`: ``` # 安装 operator helm template wazuh-operator oci://ghcr.io/maximewewer/charts/wazuh-operator \ --namespace wazuh-operator --create-namespace | kubectl apply -f - # 部署 Wazuh 集群 helm template wazuh-cluster oci://ghcr.io/maximewewer/charts/wazuh-cluster \ --namespace wazuh | kubectl apply -f - # 检查状态 kubectl get wazuhcluster -n wazuh ``` ### 访问 Dashboard ``` kubectl port-forward svc/wazuh-cluster-dashboard -n wazuh 5601:5601 ``` 打开
标签:EVTX分析, Kubernetes Operator, Wazuh, 云原生运维, 子域名突变, 日志审计, 特权提升, 用户代理, 自动化部署, 自定义请求头, 请求拦截