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截图, 上游代理, 优雅关断, 健康检查, 准入控制器, 安全策略, 安全编程, 容器安全, 提示词设计, 日志审计, 策略即代码, 策略引擎, 网络安全挑战, 聊天机器人安全, 轻量级服务, 镜像仓库限制