sarojnaik-cloudarchitect/zero-trust-platform
GitHub: sarojnaik-cloudarchitect/zero-trust-platform
基于 AWS EKS 的生产级零信任安全平台,通过 SPIRE 加密身份、Istio mTLS 和 Cilium L7 策略实现三层纵深防御,为企业云原生环境提供完整的零信任架构参考实现。
Stars: 1 | Forks: 0
# 零信任平台
基于 AWS EKS 的生产级零信任安全平台。
每个工作负载均具备加密身份,每次连接均采用 mTLS,
每个密钥均为动态生成,且每项策略均被自动执行。
**已在 AWS EKS 1.35(ap-south-1)上部署并验证**

## 已实现的零信任原则
| 原则 | 实现方式 | 若无此措施的影响 |
|---|---|---|
| 无明文流量 | Istio strict mTLS | 攻击者可嗅探服务间调用 |
| 无静态凭证 | Vault 动态密钥 | 密码泄露等同于永久性入侵 |
| 加密身份 | SPIFFE/SPIRE SVIDs | 基于 IP 的信任欺骗 |
| L7 授权 | Cilium 网络策略 | 内部网络完全暴露 |
| Git 中的加密密钥 | SOPS 与 age | 密钥通过 Git 历史记录泄露 |
| 策略即代码 | 结合 ArgoCD 的 GitOps | 配置发生偏移 |
## 平台技术栈
| 层级 | 工具 | 用途 |
|---|---|---|
| 基础设施 | Terraform | 可复现的 AWS 资源 |
| 密钥管理 | HashiCorp Vault HA | 动态凭证,通过 KMS 自动解封 |
| 工作负载身份 | SPIFFE / SPIRE | 为每个 Pod 提供加密身份 |
| 服务网格 | Istio strict mTLS | 为每次服务调用提供双向 TLS |
| 网络策略 | Cilium eBPF | L7 HTTP 方法和路径强制执行 |
| Git 密钥 | SOPS 与 age | 可审查的加密密钥 |
| GitOps 交付 | ArgoCD | 基于 Pull 模式的持续部署 |
| CI 安全 | GitHub Actions | Terraform、K8s 和容器扫描 |
| 应用 | FastAPI 与 OpenTelemetry | 参考工作负载 |
## 三层信任体系
每一层分别执行零信任的不同方面。它们作为一个系统协同工作,实现深度防御。
**第 1 层 — 身份 (SPIFFE 与 SPIRE)**
每个 Pod 都会获得由 SPIRE 签名的加密身份。证书默认每小时轮换一次。不使用服务账户、无共享 token、不基于 IP 建立信任。
**第 2 层 — 传输 (Istio)**
每个服务间的连接均使用由 SPIRE 颁发证书的 mTLS。集群内部没有任何明文流量。Strict 模式会直接拒绝非 mTLS 连接。
**第 3 层 — 授权 (Cilium 与 Istio)**
Cilium 通过 eBPF 在 CNI 层执行 L7 网络策略。Istio 在应用层执行授权策略。两者必须同时允许调用才能生效。如果其中一个配置有误,另一个仍能提供保护。
## 架构决策
5 项 ADR(架构决策记录)详细记录了主要工具选择的理由、考虑过的备选方案以及接受的权衡。完整文档请参见 docs/adr/。
1. 选择 Vault 而非 AWS Secrets Manager — 能力上限与动态密钥
2. 选择 SPIFFE 而非 Kubernetes 服务账户 — 加密对比 bearer token
3. 选择 Istio 而非 Linkerd — L7 授权表达能力
4. 选择 Cilium 而非 Calico — 无需服务网格 sidecar 的基于 eBPF 的 L7 能力
5. 选择 SOPS 而非 Sealed Secrets — 便携加密,支持 Git 审查
## 部署验证
所有组件均已在 AWS EKS 1.35(ap-south-1)上验证通过。
**Vault HA — 3 个副本,KMS 自动解封,Raft 共识**
Seal Type awskms
Initialized true
Sealed false
HA Mode active
HA Cluster https://vault-0.vault-internal:8201
Raft peers vault-0 (leader), vault-1, vault-2
**SPIRE — Server + 跨 3 个节点的 3 个 Agent**
spire-server-0 1/1 Running
spire-agent (x3) 1/1 Running — 每个节点一个
**Istio strict mTLS — 跨所有命名空间强制执行**
default STRICT
istio-system STRICT
vault STRICT
**Cilium L7 网络策略 — 全部有效**
default-deny default True
vault-l7-access vault True
sample-app-to-api default True
app-egress-restrictions default True
**EKS 集群 — 3 个节点,加密 EBS 存储**
3 nodes Ready — v1.35.3-eks
4x PVCs Bound — gp3-encrypted
## 仓库结构
- **terraform/** — 包含可复用模块的基础设施即代码
- **k8s/** — 用于 Vault、SPIRE、Istio、Cilium 和示例应用的 Kubernetes 清单
- **gitops/argocd/** — 所有组件采用 ArgoCD app-of-apps 模式
- **policies/** — Vault、Istio、Cilium 的参考策略
- **app/** — FastAPI 示例应用源代码
- **scripts/** — 用于初始化、验证、轮换和备份的运维脚本
- **docs/adr/** — 架构决策记录
- **.github/workflows/** — 包含安全扫描的 CI 流水线
## CI 安全流水线
GitHub Actions 在每次提交时运行 7 个阶段:
1. Terraform fmt 与 validate
2. TFLint 安全扫描
3. Checkov 基础设施扫描
4. Kubeconform 清单验证
5. Kubescape NSA 与 MITRE 框架扫描
6. Trivy 容器镜像扫描
7. Gitleaks 密钥扫描
## 已知限制 (开发环境 vs 生产环境)
这是一个开发环境部署。生产环境的加固措施应包括:
| 差距 | 生产环境修复方案 |
|-----|---------------|
| 无集群自动扩缩容 | 安装 Karpenter 以实现基于需求的节点配置 |
| Vault 监听器未启用 TLS | 启用 TLS — 在开发环境中由 Istio mTLS 进行补偿 |
| SPIRE 使用自签名根 CA | 链接到 AWS Private CA |
| SPIRE 使用 SQLite | 使用 PostgreSQL RDS 作为 HA 数据存储 |
| 手动初始化 Vault | 在首次启动时通过 AWS Lambda + SSM 进行自动化 |
| 单一区域 | 带有 Vault 复制的多区域主备部署 |
## 快速部署
```
# 先决条件:AWS CLI, kubectl, terraform, helm, istioctl
# 1. 部署基础设施
cd terraform/environments/dev
terraform init && terraform apply -auto-approve
# 2. 配置 kubectl
aws eks update-kubeconfig --name zero-trust-dev --region ap-south-1
# 3. 部署平台组件
kubectl apply -f k8s/vault/
kubectl apply -f k8s/spire/
istioctl install --set profile=minimal -y
kubectl apply -f k8s/istio/
helm install cilium cilium/cilium --namespace kube-system \
--set cni.chainingMode=aws-cni --set cni.exclusive=false \
--set enableIPv4Masquerade=false --set nodeinit.enabled=true \
--set kubeProxyReplacement=false
kubectl apply -f k8s/cilium/
# 4. 完成后销毁
terraform destroy -auto-approve
```
## 相关作品集项目
- [企业级 DevSecOps 平台](https://github.com/sarojnaik-cloudarchitect/enterprise-devsecops-platform)
- [多云可观测性](https://github.com/sarojnaik-cloudarchitect/Observability)
## 作者
**Saroj Naik** — 首席云架构师
拥有 20 余年云架构、零信任安全、DevSecOps、
多云可观测性、Kubernetes 和 GitOps 领域的经验。
- LinkedIn: [linkedin.com/in/nsaroj](https://linkedin.com/in/nsaroj)
标签:API集成, ArgoCD, AV绕过, AWS EKS, AWS KMS, Cilium, CISA项目, DevSecOps, Docker镜像, EC2, ECS, FastAPI, GET参数, GitHub Actions, GitOps, HashiCorp Vault, IaC, IAM, Istio, JSONLines, L7网络策略, mTLS, NPM, OpenTelemetry, SOPS, SPIFFE, SPIRE, Terraform, Vault高可用, Web截图, 上游代理, 加密身份, 动态密钥, 双向TLS, 可观测性, 安全助手, 容器安全, 工作负载身份, 微服务安全, 持续部署, 服务网格, 用户代理, 策略即代码, 结构化查询, 网络策略, 聊天机器人安全, 自动化安全, 自动笔记, 身份与访问管理, 逆向工具, 防御绕过, 零信任, 零信任架构, 零信任网络