performing-kubernetes-etcd-security-assessment

通过评估静态加密、TLS 配置、访问控制、备份加密和网络隔离,评估 Kubernetes etcd 集群的安全态势。

9 stars

Best use case

performing-kubernetes-etcd-security-assessment is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

通过评估静态加密、TLS 配置、访问控制、备份加密和网络隔离,评估 Kubernetes etcd 集群的安全态势。

Teams using performing-kubernetes-etcd-security-assessment should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/performing-kubernetes-etcd-security-assessment/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/performing-kubernetes-etcd-security-assessment/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/performing-kubernetes-etcd-security-assessment/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How performing-kubernetes-etcd-security-assessment Compares

Feature / Agentperforming-kubernetes-etcd-security-assessmentStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

通过评估静态加密、TLS 配置、访问控制、备份加密和网络隔离,评估 Kubernetes etcd 集群的安全态势。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 执行 Kubernetes etcd 安全评估

## 概述

etcd 是 Kubernetes 的分布式键值存储,作为所有集群数据的后端存储,包括 Secret、RBAC 策略、ConfigMap 和工作负载配置。若未经适当加固,etcd 会以明文暴露所有集群密钥,使其成为获取控制平面访问权限的攻击者的最高价值目标。全面的安全评估涵盖静态加密、传输层 TLS、访问控制、备份安全和网络隔离。

## 前置条件

- Kubernetes 控制平面节点的访问权限
- etcd 集群节点的 SSH 访问权限(或已配置 etcdctl)
- CIS Kubernetes Benchmark 参考文档
- 了解 TLS 证书管理和 EncryptionConfiguration

## 评估范围

### 1. 静态加密(Encryption at Rest)

验证 Kubernetes 是否加密了存储在 etcd 中的 Secret 数据:

```bash
# 检查 API server 是否配置了 EncryptionConfiguration
ps aux | grep kube-apiserver | grep encryption-provider-config

# 查看加密配置
cat /etc/kubernetes/enc/encryption-config.yaml
```

安全配置示例:

```yaml
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
  - resources:
      - secrets
      - configmaps
    providers:
      - aescbc:
          keys:
            - name: key1
              secret: <base64 编码的 32 字节密钥>
      - identity: {}  # 回退:用于读取未加密数据
```

验证 etcd 中的密钥是否已加密:

```bash
# 直接从 etcd 读取密钥
ETCDCTL_API=3 etcdctl \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key \
  get /registry/secrets/default/my-secret | hexdump -C | head -20

# 若已加密,输出以 "k8s:enc:aescbc:v1:key1" 开头
# 若未加密,将看到明文键值对
```

### 2. TLS 传输安全

```bash
# 验证 etcd 使用 TLS 进行客户端连接
ETCDCTL_API=3 etcdctl endpoint health \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key

# 检查对等节点 TLS 配置
ps aux | grep etcd | tr ' ' '\n' | grep -E "peer-cert|peer-key|peer-trusted-ca"

# 验证证书过期时间
openssl x509 -in /etc/kubernetes/pki/etcd/server.crt -noout -enddate
openssl x509 -in /etc/kubernetes/pki/etcd/peer.crt -noout -enddate
```

必需参数:

| 参数 | 必需值 | 用途 |
|------|---------------|---------|
| `--cert-file` | 服务器证书路径 | 客户端到服务器 TLS |
| `--key-file` | 服务器密钥路径 | 客户端到服务器 TLS |
| `--trusted-ca-file` | CA 证书路径 | 客户端证书验证 |
| `--peer-cert-file` | 对等节点证书路径 | 节点间 TLS |
| `--peer-key-file` | 对等节点密钥路径 | 节点间 TLS |
| `--peer-trusted-ca-file` | 对等节点 CA 路径 | 对等节点证书验证 |
| `--client-cert-auth` | true | 要求客户端证书 |
| `--peer-client-cert-auth` | true | 要求对等节点证书 |

### 3. 访问控制

```bash
# 验证 etcd 未监听所有网络接口
ps aux | grep etcd | tr ' ' '\n' | grep listen-client-urls
# 应为:https://127.0.0.1:2379(而非 0.0.0.0)

# 检查谁可以访问 etcd 证书
ls -la /etc/kubernetes/pki/etcd/
# 应仅对 root/etcd 用户可读

# 验证 API server 是唯一的 etcd 客户端
ss -tlnp | grep 2379
# 只有 kube-apiserver 应有连接
```

### 4. 备份安全

```bash
# 创建加密的 etcd 备份
ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot.db \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key

# 加密备份文件
gpg --symmetric --cipher-algo AES256 /backup/etcd-snapshot.db

# 验证备份完整性
ETCDCTL_API=3 etcdctl snapshot status /backup/etcd-snapshot.db --write-out=table
```

### 5. 网络隔离

```bash
# 验证 etcd 端口已防火墙保护
iptables -L -n | grep -E "2379|2380"

# 检查 etcd 是否可从工作节点访问(不应可访问)
# 在工作节点上运行:
curl -k https://<控制平面IP>:2379/health
# 应被拒绝/超时
```

## CIS Benchmark 检查

| CIS 控制项 | 检查内容 | 预期结果 |
|-------------|-------|----------------|
| 2.1 | etcd cert-file 已设置 | TLS 证书已配置 |
| 2.2 | etcd client-cert-auth | 已启用客户端证书认证 |
| 2.3 | etcd auto-tls 已禁用 | auto-tls=false |
| 2.4 | etcd peer cert-file 已设置 | 对等节点 TLS 已配置 |
| 2.5 | etcd peer client-cert-auth | 已启用对等节点认证 |
| 2.6 | etcd peer auto-tls 已禁用 | peer-auto-tls=false |
| 2.7 | etcd 独立 CA | etcd 使用独立 CA(不与集群共享) |

## 密钥轮换流程

```bash
# 1. 生成新加密密钥
NEW_KEY=$(head -c 32 /dev/urandom | base64)

# 2. 先用新密钥更新 EncryptionConfiguration
cat > /etc/kubernetes/enc/encryption-config.yaml <<EOF
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
  - resources:
      - secrets
    providers:
      - aescbc:
          keys:
            - name: key2
              secret: ${NEW_KEY}
            - name: key1
              secret: <旧密钥>
      - identity: {}
EOF

# 3. 重启 API server 加载新配置
# 4. 用新密钥重新加密所有密钥
kubectl get secrets --all-namespaces -o json | \
  kubectl replace -f -

# 5. 从 EncryptionConfiguration 中移除旧密钥
# 6. 再次重启 API server
```

## 参考资料

- [Kubernetes etcd 加密文档](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/)
- [CIS Kubernetes Benchmark - etcd 控制项](https://www.cisecurity.org/benchmark/kubernetes)
- [etcd 安全加固 - K8s 安全指南](https://k8s-security.geek-kb.com/docs/best_practices/cluster_setup_and_hardening/control_plane_security/etcd_security_mitigation/)
- [信息安全:加密与 etcd](https://www.infosecinstitute.com/resources/cryptography/encryption-and-etcd-the-key-to-securing-kubernetes/)

Related Skills

triaging-security-incident

9
from killvxk/cybersecurity-skills-zh

使用 NIST SP 800-61r3 和 SANS PICERL 框架对安全事件进行初始分类,确定严重性、范围和所需响应行动。 按类型对事件分类,根据业务影响分配优先级,并路由到相应的响应团队。适用于事件分类、 安全告警分类、严重性评估、事件优先级排序或初始事件分析等请求场景。

triaging-security-incident-with-ir-playbook

9
from killvxk/cybersecurity-skills-zh

使用结构化 IR Playbook 对安全事件进行分类和优先排序,确定严重性、分配响应团队并启动适当的响应程序。

triaging-security-alerts-in-splunk

9
from killvxk/cybersecurity-skills-zh

在 Splunk Enterprise Security 中对安全告警进行分类,通过 SPL 查询和事件审查(Incident Review) 仪表板对重要事件进行严重性分类、调查、关联相关遥测并做出升级或关闭决策。 适用于 SOC 分析师需要处理关联搜索产生的告警队列、确定调查优先级, 或需要为交接给二/三级分析师记录分类决策时。

testing-websocket-api-security

9
from killvxk/cybersecurity-skills-zh

测试 WebSocket API 实现中的安全漏洞,包括 WebSocket 升级时缺少身份认证、跨站 WebSocket 劫持(Cross-Site WebSocket Hijacking,CSWSH)、通过 WebSocket 消息进行的注入攻击、输入校验不足、通过消息泛洪实施拒绝服务,以及通过 WebSocket 帧造成的信息泄露。测试人员使用 Burp Suite 拦截 WebSocket 握手和消息,构造恶意 payload,并测试 WebSocket 通道上的授权绕过。适用于 WebSocket 安全测试、WS 渗透测试、CSWSH 攻击或实时 API 安全评估相关请求。

testing-jwt-token-security

9
from killvxk/cybersecurity-skills-zh

在安全测试活动中,评估 JSON Web Token(JWT)实现中的密码学弱点、算法混淆攻击和授权绕过漏洞。

testing-api-security-with-owasp-top-10

9
from killvxk/cybersecurity-skills-zh

使用自动化和手工测试技术,针对 OWASP API 安全 Top 10 风险对 REST 和 GraphQL API 端点进行系统性评估。

securing-kubernetes-on-cloud

9
from killvxk/cybersecurity-skills-zh

本技能涵盖通过实施 Pod 安全标准(Pod Security Standards)、网络策略、工作负载身份、RBAC 权限控制、镜像准入控制和运行时安全监控,对 EKS、AKS 和 GKE 上的托管 Kubernetes 集群进行加固。涉及云平台特定安全功能,包括 EKS 的 IRSA、GKE 的工作负载身份(Workload Identity)以及 AKS 的托管身份(Managed Identity)。

scanning-kubernetes-manifests-with-kubesec

9
from killvxk/cybersecurity-skills-zh

使用 Kubesec 对 Kubernetes 资源清单执行安全风险分析,识别错误配置、权限提升风险以及与安全最佳实践的偏差。

performing-yara-rule-development-for-detection

9
from killvxk/cybersecurity-skills-zh

通过识别可执行文件中的唯一字节模式、字符串和行为指标,开发精准的 YARA 恶意软件检测规则,同时将误报率降至最低。

performing-wireless-security-assessment-with-kismet

9
from killvxk/cybersecurity-skills-zh

使用 Kismet 通过被动射频监控进行无线网络安全评估,检测流氓接入点(Rogue AP)、隐藏 SSID、弱加密和未授权客户端。

performing-wireless-network-penetration-test

9
from killvxk/cybersecurity-skills-zh

执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。

performing-windows-artifact-analysis-with-eric-zimmerman-tools

9
from killvxk/cybersecurity-skills-zh

使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。