# Deploying Software Defined Perimeter

> 部署软件定义边界（Software-Defined Perimeter，SDP），围绕各个资源创建动态配置的、以身份为中心的边界，通过"暗云"方法实现零信任访问控制。

- Skill: `killvxk/deploying-software-defined-perimeter` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/deploying-software-defined-perimeter`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/deploying-software-defined-perimeter/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/deploying-software-defined-perimeter

---


# 部署软件定义边界

---
domain: cybersecurity
subdomain: zero-trust-architecture
author: mahipal
tags: [zero-trust, sdp, software-defined-perimeter, network-access, ztna]
difficulty: advanced
estimated_time: 4-6 hours
prerequisites:
  - 理解零信任原则（NIST SP 800-207）
  - 了解 CSA 软件定义边界规范
  - 熟悉 PKI 和双向 TLS 认证
  - 具备网络安全架构经验
---

## 概述

软件定义边界（Software-Defined Perimeter，SDP）通过围绕各个资源创建动态配置的、以身份为中心的边界来实现零信任。由云安全联盟（CSA）定义，SDP 通过"暗云"方法使未授权用户无法看到应用基础设施，即在认证和授权之前服务处于隐藏状态。与传统 VPN 不同，SDP 在经过验证的用户与特定应用之间建立一对一加密连接。

本技能涵盖使用 CSA v2.0 规范部署 SDP、实施单包授权（Single Packet Authorization，SPA）、配置 SDP 控制器和网关，以及根据 NIST SP 800-207 要求验证部署。

## 架构

### SDP 组件（CSA 规范）

```
┌─────────────────────┐
│ SDP 控制器           │
│ - 认证               │
│ - 授权               │
│ - 策略管理           │
│ - 密钥管理           │
└──────────┬──────────┘
           │
    ┌──────┴──────┐
    │             │
    v             v
┌────────┐  ┌────────────┐
│ IH     │  │ AH         │
│（客户端）│  │（网关）    │
│        │  │            │
│ SPA    │──│ 受保护      │
│ mTLS   │  │ 资源       │
└────────┘  └────────────┘

IH = 发起主机（Initiating Host，用户设备）
AH = 接受主机（Accepting Host，应用网关）
SPA = 单包授权（Single Packet Authorization）
```

### SDP 部署模型
1. **客户端到网关**：用户设备通过 SDP 网关连接到后端应用
2. **客户端到服务器**：用户与应用服务器之间的直接连接
3. **服务器到服务器**：通过 SDP 的工作负载间通信
4. **网关到网关**：替代传统 VPN 隧道的站点到站点连接

## 关键概念

### 单包授权（SPA）
SPA 是一种网络安全机制，SDP 网关默认丢弃所有 TCP/UDP 数据包。在建立任何连接之前，必须发送经过密码签名的单个数据包。网关验证 SPA 数据包后，才为经过身份验证的会话临时开放端口。这使网关对端口扫描器不可见。

### 双向 TLS（mTLS）
SPA 验证后，客户端和服务器使用 X.509 证书相互认证。这种双向认证防止中间人攻击，确保两个端点都经过验证。

### 动态配置
SDP 连接基于实时策略评估按需配置。不存在持久性网络隧道；每个会话都单独授权和加密。

## 流程

### 阶段 1：SDP 控制器部署

1. **部署 SDP 控制器**
   - 在经过加固的冗余基础设施上安装 SDP 控制器
   - 配置 PKI 集成以颁发证书
   - 设置认证后端（LDAP、SAML、OIDC）
   - 使用应用定义配置策略数据库
   - 为所有控制器决策启用审计日志记录

2. **配置认证**
   - 通过 SAML 2.0 或 OIDC 与企业 IdP 集成
   - 配置设备证书注册（SCEP/EST）
   - 启用多因素认证要求
   - 设置证书吊销检查（OCSP/CRL）

3. **定义访问策略**
   - 将用户/组映射到授权应用
   - 按应用定义设备态势要求
   - 配置上下文条件（位置、时间、风险级别）
   - 设置会话持续时间和重新认证间隔

### 阶段 2：SDP 网关部署

4. **部署接受主机（网关）**
   - 在受保护应用前面安装 SDP 网关实例
   - 配置默认丢弃防火墙规则（拒绝所有入站）
   - 在指定端口上启用 SPA 监听器
   - 使用控制器颁发的证书配置 mTLS
   - 设置健康监控和故障转移

5. **配置应用定义**
   - 向控制器注册每个受保护的应用
   - 定义后端服务器 IP、端口和协议
   - 为多实例应用配置负载均衡
   - 设置应用健康检查

### 阶段 3：客户端部署

6. **部署发起主机（客户端）**
   - 在用户端点上安装 SDP 客户端软件
   - 通过自动配置注册设备证书
   - 配置 SPA 密钥材料分发
   - 测试认证流程：SPA → mTLS → 应用访问

7. **验证端到端流程**
   - 验证 SPA 数据包被网关接受
   - 确认使用有效证书的 mTLS 握手成功
   - 测试通过 SDP 隧道的应用访问
   - 验证未授权访问被阻断（无 SPA = 网关不可见）

### 阶段 4：运营验证

8. **安全测试**
   - 对 SDP 网关进行端口扫描以确认不可见性（所有端口显示为过滤/关闭）
   - 尝试在没有有效 SPA 的情况下连接（必须静默失败）
   - 使用已吊销的客户端证书测试（必须被拒绝）
   - 尝试从一个授权应用横向移动到另一个未授权应用
   - 验证审计跟踪的完整性

9. **监控与维护**
   - 为 SDP 控制器和网关日志配置 SIEM 集成
   - 为失败的 SPA 尝试和证书错误设置告警
   - 建立证书轮换计划
   - 记录 SDP 事件的事件响应程序

## 验证检查清单

- [ ] SDP 控制器已部署，具备高可用性和审计日志记录
- [ ] IdP 集成已通过 SAML/OIDC 和 MFA 测试
- [ ] SDP 网关已部署并配置默认丢弃防火墙
- [ ] SPA 机制已验证（网关对端口扫描不可见）
- [ ] 客户端与网关之间已建立 mTLS
- [ ] 访问策略对每个用户/应用执行最小权限
- [ ] 设备证书注册已自动化
- [ ] 未授权访问尝试被静默阻断
- [ ] 应用间的横向移动被阻止
- [ ] 日志流式传输到 SIEM 并配置了告警
- [ ] 证书轮换和吊销程序已测试

## 参考资料

- CSA 软件定义边界架构指南 v3
- CSA SDP 规范 v2.0
- NIST SP 800-207：零信任架构
- CISA 零信任成熟度模型 v2.0
- fwknop：单包授权实现

