umairkhan-sh/policy-engine

GitHub: umairkhan-sh/policy-engine

一个基于 Go 和 Gin 的轻量级 Kubernetes 准入 Webhook 服务,通过拦截 Pod 创建请求强制执行镜像仓库白名单策略,保障集群镜像来源安全。

Stars: 0 | Forks: 0

# Policy Engine 一个使用 Go 编写的轻量级 Kubernetes Validating Webhook 服务。本项目确保部署到集群中的所有 Pod 都符合特定的策略,首先从镜像仓库限制开始。 ## 🚀 概述 **Policy Engine** 拦截用于创建 Pod 的 Kubernetes API 请求,并根据一组预定义的规则对其进行验证。如果 Pod 违反了策略(例如,使用了未经授权的镜像仓库),该请求将被拒绝并附带明确的错误信息。 目前,它实现了: - **镜像仓库验证**:确保 Pod 中的所有容器镜像均来自允许的镜像仓库(默认:`quay.io/`)。 ## ✨ 功能 - **Kubernetes 原生**:实现了 `AdmissionReview` v1 API。 - **快速且轻量**:使用 Go 和 Gin Web 框架构建。 - **优雅关机**:处理 OS 信号以确保干净地终止。 - **热重载**:支持 `air`,提供无缝的开发体验。 - **健康监控**:包含一个 `/health-check` 端点,用于存活/就绪探针。 ## 🛠️ 技术栈 - **语言**:Go 1.26+ - **框架**:[Gin Gonic](https://gin-gonic.com/) - **API**:Kubernetes Admission Registration v1 ## 📋 前置条件 - 已安装 [Go](https://go.dev/doc/install)。 - 可访问 Kubernetes 集群(Kind、Minikube 或 EKS/GKE)。 - [ngrok](https://ngrok.com/)(用于本地测试/调试)。 ## ⚙️ 配置 应用程序通过环境变量进行配置: | 变量 | 描述 | 默认值 | |----------|-------------|---------| | `PORT` | 服务器监听的端口 | `8080`(或在 `.env` 中定义) | | `ALLOWED_REGISTRY` | 镜像必须具有的前缀才能被允许 | `quay.io/` | ## 🏃 入门指南 ### 1. 克隆仓库 ``` git clone cd policy-engine ``` ### 2. 设置环境 创建一个 `.env` 文件或导出变量: ``` PORT=8080 ALLOWED_REGISTRY=quay.io/ ``` ### 3. 本地运行 ``` make run ``` 或者使用热重载: ``` make watch ``` ## 🧪 测试 ### 运行单元测试 ``` make test ``` ### 在 Kubernetes 中测试 由于 Kubernetes Webhook 需要 HTTPS,你可以使用 **ngrok** 来暴露本地服务器: 1. 启动 ngrok: ngrok http 8080 2. 使用你的 ngrok URL 更新 `k8s/pod-policy-validating-webhook.yaml` 中的 `clientConfig.url`。 3. 将配置应用到你的集群: kubectl apply -f k8s/pod-policy-validating-webhook.yaml ## 📂 项目结构 ``` ├── cmd/ │ └── api/ # Application entry point ├── internal/ │ └── server/ # Core server logic, routes, and types ├── k8s/ # Kubernetes manifests ├── Makefile # Build and development automation └── main # Compiled binary (after build) ``` ## 📜 许可证 本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。
标签:AdmissionReview, DevSecOps, EVTX分析, Gin框架, Go, Golang, K8s安全, Kind, Minikube, ngrok, Ruby工具, Validating Webhook, Web截图, 上游代理, 优雅关断, 健康检查, 准入控制器, 安全策略, 安全编程, 容器安全, 提示词设计, 日志审计, 策略即代码, 策略引擎, 网络安全挑战, 聊天机器人安全, 轻量级服务, 镜像仓库限制