ruyek-git/spire-opa-zero-trust

GitHub: ruyek-git/spire-opa-zero-trust

结合 SPIRE 签发的 SPIFFE 身份与 OPA 的 Rego 策略,演示云原生零信任架构中工作负载认证与集中授权的最小实现。

Stars: 0 | Forks: 0

# SPIFFE + OPA 零信任演示 一个使用 SPIFFE/SPIRE 提供工作负载身份,并使用 OPA 进行授权的云原生零信任安全的最小化实现。 ## 架构 ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Client │───────▶│ Server │───────▶│ OPA │ │ (agent.py) │ │ (server.py) │ │ (authz) │ └──────┬──────┘ └─────────────┘ └─────────────┘ │ ▼ ┌─────────────┐ │ SPIRE Agent │◀──── Gets SPIFFE ID └─────────────┘ ``` ## 它演示了什么 1. **SPIFFE 身份**:每个工作负载都会获得一个加密身份 - 服务器:`spiffe://example.org/python-server` - 客户端:`spiffe://example.org/python-agent` 2. **OPA 授权**:集中式策略执行 - Rego 策略定义了允许哪些 SPIFFE ID - 服务器在授予访问权限之前查询 OPA 3. **零信任**:基于身份的信任,而不是基于网络的信任 ## 前置条件 ``` # 安装 SPIRE https://github.com/spiffe/spire/releases # 安装 OPA curl -L -o opa https://github.com/open-policy-agent/opa/releases/latest/download/opa_linux_amd64 chmod +x opa # 安装 Python dependencies pip install py-spiffe requests ``` ## 快速开始 ### 1. 启动 SPIRE ``` # Terminal 1:启动 SPIRE Server cd /opt/spire ./bin/spire-server run -config ./conf/server/server.conf # Terminal 2:启动 SPIRE Agent ./bin/spire-agent run -config ./conf/agent/agent.conf -joinToken ``` ### 2. 创建工作负载条目 ``` ./bin/spire-server entry create \ -spiffeID spiffe://example.org/python-server \ -selector unix:uid:0 \ -parentID spiffe://example.org/spire/agent/join_token/ ./bin/spire-server entry create \ -spiffeID spiffe://example.org/python-agent \ -selector unix:uid:0 \ -parentID spiffe://example.org/spire/agent/join_token/ ``` ### 3. 启动 OPA ``` ./opa run --server --addr localhost:8181 ``` ### 5. 运行服务器 ``` python3 server.py ``` ### 6. 运行客户端 ``` python3 agent.py ``` ## 预期输出 **服务器:** ``` Server running on port 8082 Server SPIFFE ID: spiffe://example.org/python-server Client SPIFFE ID: spiffe://example.org/python-agent ``` **客户端:** ``` Client SPIFFE ID: spiffe://example.org/python-agent Server response: Hello, authorized client! ``` ## 文件 - `server.py` - 通过 OPA 验证客户端身份的 HTTP 服务器 - `agent.py` - 获取 SPIFFE 身份并调用服务器的客户端 - `authz.rego` - 定义授权工作负载的 OPA 策略 ## 为什么这很重要 | 传统方式 | 零信任 | |-------------|------------| | 静态 API 密钥 | 加密身份 | | 基于网络的信任 | 基于身份的信任 | | 代码中的身份验证逻辑 | 集中管理的策略 | | 手动轮换 | 自动轮换凭证 | ## 技术栈 - [SPIRE](https://github.com/spiffe/spire) - SPIFFE 运行时环境 - [OPA](https://www.openpolicyagent.org/) - 开放策略代理 - [py-spiffe](https://github.com/HewlettPackard/py-spiffe) - Python SPIFFE 库 ## 许可证 MIT
标签:CISA项目, DevSecOps, Groq API, IAM, Modbus, OPA, Python, RBAC, Rego, SPIFFE, SPIRE, Streamlit, 上游代理, 加密身份认证, 基于角色的访问控制, 安全合规, 工作负载身份, 开发运维, 微服务安全, 授权控制, 无后门, 最小权限原则, 服务网格, 策略即代码, 结构化提示词, 网络代理, 网络安全, 聊天机器人安全, 访问控制, 身份与访问管理, 逆向工具, 隐私保护, 零信任架构, 靶场