scanning-kubernetes-manifests-with-kubesec

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

9 stars

Best use case

scanning-kubernetes-manifests-with-kubesec is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

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

Teams using scanning-kubernetes-manifests-with-kubesec 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/scanning-kubernetes-manifests-with-kubesec/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/scanning-kubernetes-manifests-with-kubesec/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/scanning-kubernetes-manifests-with-kubesec/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How scanning-kubernetes-manifests-with-kubesec Compares

Feature / Agentscanning-kubernetes-manifests-with-kubesecStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

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

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

# 使用 Kubesec 扫描 Kubernetes 清单

## 概述

Kubesec 是由 ControlPlane 开发的开源安全风险分析工具,用于检查 Kubernetes 资源清单中常见的可利用风险,如权限提升(Privilege Escalation)、可写宿主机挂载和过多能力赋予。它为每个资源分配数值安全评分,并提供可操作的加固建议。Kubesec 可作为 CLI 二进制、Docker 容器、kubectl 插件、准入 Webhook 或 REST API 端点使用。

## 前置条件

- Kubernetes 清单文件(YAML/JSON),适用于 Deployment、Pod、DaemonSet、StatefulSet
- 本地安装需要 Docker 或 Go 运行时
- kubectl 访问权限(用于扫描集群中的实时资源)
- CI/CD 流水线访问权限(用于自动化扫描集成)

## 核心概念

### 安全评分系统

Kubesec 根据安全检查为每个 Kubernetes 资源分配评分:

- **正分**:对安全增强配置的奖励(readOnlyRootFilesystem、runAsNonRoot)
- **零分或负分**:表示缺少安全控制或存在危险配置
- **关键建议(Critical advisories)**:标记代表即时安全风险的配置

### 检查类别

1. **特权控制**:检查特权容器、宿主机 PID/网络访问、root 执行
2. **能力(Capabilities)**:识别过多的 Linux 能力(SYS_ADMIN、NET_RAW)
3. **卷挂载**:检测危险的宿主机路径挂载和可写的敏感路径
4. **资源限制**:验证 CPU/内存资源限制的存在
5. **安全上下文**:验证 seccomp 配置文件、AppArmor 注解、SELinux 上下文

## 安装

### 二进制安装

```bash
# Linux/macOS
curl -sSL https://github.com/controlplaneio/kubesec/releases/latest/download/kubesec_linux_amd64.tar.gz | \
  tar xz -C /usr/local/bin/ kubesec

# 验证安装
kubesec version
```

### Docker 安装

```bash
docker pull kubesec/kubesec:v2

# 扫描清单文件
docker run -i kubesec/kubesec:v2 scan /dev/stdin < deployment.yaml
```

### kubectl 插件

```bash
kubectl krew install kubesec-scan
kubectl kubesec-scan pod mypod -n default
```

## 实践扫描

### 扫描单个清单

```bash
# 扫描 deployment 清单
kubesec scan deployment.yaml

# 以 JSON 格式输出
kubesec scan -o json deployment.yaml

# 从标准输入扫描
cat pod.yaml | kubesec scan -
```

### 示例输出

```json
[
  {
    "object": "Pod/web-app.default",
    "valid": true,
    "fileName": "pod.yaml",
    "message": "Passed with a score of 3 points",
    "score": 3,
    "scoring": {
      "passed": [
        {
          "id": "ReadOnlyRootFilesystem",
          "selector": "containers[] .securityContext .readOnlyRootFilesystem == true",
          "reason": "不可变根文件系统可防止应用向本地磁盘写入",
          "points": 1
        },
        {
          "id": "RunAsNonRoot",
          "selector": "containers[] .securityContext .runAsNonRoot == true",
          "reason": "强制运行的镜像以非 root 用户运行",
          "points": 1
        },
        {
          "id": "LimitsCPU",
          "selector": "containers[] .resources .limits .cpu",
          "reason": "强制 CPU 限制可防止通过资源耗尽实施 DoS 攻击",
          "points": 1
        }
      ],
      "advise": [
        {
          "id": "ApparmorAny",
          "selector": "metadata .annotations .\"container.apparmor.security.beta.kubernetes.io/nginx\"",
          "reason": "定义良好的 AppArmor 策略可减少容器攻击面",
          "points": 3
        },
        {
          "id": "ServiceAccountName",
          "selector": ".spec .serviceAccountName",
          "reason": "服务账户限制 Kubernetes API 访问,应进行配置",
          "points": 3
        }
      ]
    }
  }
]
```

### 扫描多个资源

```bash
# 扫描目录中所有 YAML 文件
for file in manifests/*.yaml; do
  echo "=== 扫描 $file ==="
  kubesec scan "$file"
done

# 扫描多文档 YAML
kubesec scan multi-resource.yaml
```

### 使用 HTTP API

```bash
# 通过公共 API 扫描
curl -sSX POST --data-binary @deployment.yaml \
  https://v2.kubesec.io/scan

# 运行本地 API 服务器
kubesec http --port 8080 &

# 对本地服务器扫描
curl -sSX POST --data-binary @deployment.yaml \
  http://localhost:8080/scan
```

## CI/CD 集成

### GitHub Actions

```yaml
name: Kubesec 扫描
on: [pull_request]
jobs:
  kubesec:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 安装 Kubesec
        run: |
          curl -sSL https://github.com/controlplaneio/kubesec/releases/latest/download/kubesec_linux_amd64.tar.gz | \
            tar xz -C /usr/local/bin/ kubesec
      - name: 扫描清单
        run: |
          FAIL=0
          for file in k8s/*.yaml; do
            SCORE=$(kubesec scan "$file" | jq '.[0].score')
            echo "$file: score=$SCORE"
            if [ "$SCORE" -lt 0 ]; then
              echo "FAIL: $file 存在严重问题(评分:$SCORE)"
              FAIL=1
            fi
          done
          exit $FAIL
```

### GitLab CI

```yaml
kubesec-scan:
  stage: security
  image: kubesec/kubesec:v2
  script:
    - |
      for file in k8s/*.yaml; do
        kubesec scan "$file" > /tmp/result.json
        SCORE=$(cat /tmp/result.json | jq '.[0].score')
        if [ "$SCORE" -lt 0 ]; then
          echo "严重:$file 评分 $SCORE"
          cat /tmp/result.json | jq '.[0].scoring.critical'
          exit 1
        fi
      done
  artifacts:
    paths:
      - kubesec-results/
```

### 准入 Webhook

将 Kubesec 部署为 ValidatingWebhookConfiguration,在部署时拒绝不安全的清单:

```yaml
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  name: kubesec-webhook
webhooks:
  - name: kubesec.controlplane.io
    rules:
      - apiGroups: [""]
        apiVersions: ["v1"]
        operations: ["CREATE", "UPDATE"]
        resources: ["pods"]
      - apiGroups: ["apps"]
        apiVersions: ["v1"]
        operations: ["CREATE", "UPDATE"]
        resources: ["deployments", "daemonsets", "statefulsets"]
    clientConfig:
      service:
        name: kubesec-webhook
        namespace: kube-system
        path: /scan
    failurePolicy: Fail
    sideEffects: None
    admissionReviewVersions: ["v1"]
```

## 安全检查参考

### 严重检查(负分)

| 检查项 | 选择器 | 风险 |
|-------|----------|------|
| 特权模式 | `securityContext.privileged == true` | 完整宿主机访问 |
| HostPID | `spec.hostPID == true` | 进程命名空间逃逸 |
| HostNetwork | `spec.hostNetwork == true` | 网络命名空间逃逸 |
| SYS_ADMIN | `capabilities.add contains SYS_ADMIN` | 接近 root 的能力 |

### 最佳实践检查(正分)

| 检查项 | 分值 | 描述 |
|-------|--------|-------------|
| ReadOnlyRootFilesystem | +1 | 防止文件系统写入 |
| RunAsNonRoot | +1 | 非 root 进程执行 |
| RunAsUser > 10000 | +1 | 高 UID 降低冲突风险 |
| LimitsCPU | +1 | 防止 CPU 资源耗尽 |
| LimitsMemory | +1 | 防止内存资源耗尽 |
| RequestsCPU | +1 | 确保调度器资源感知 |
| ServiceAccountName | +3 | 显式服务账户 |
| AppArmor 注解 | +3 | 内核级 MAC 执行 |
| Seccomp 配置文件 | +4 | 系统调用过滤 |

## 参考资料

- [Kubesec GitHub 仓库](https://github.com/controlplaneio/kubesec)
- [Kubesec 在线扫描器](https://kubesec.io/)
- [ControlPlane 安全工具](https://controlplane.io/)
- [CIS Kubernetes Benchmark](https://www.cisecurity.org/benchmark/kubernetes)
- [Kubernetes Pod 安全标准](https://kubernetes.io/docs/concepts/security/pod-security-standards/)

Related Skills

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-network-with-nmap-advanced

9
from killvxk/cybersecurity-skills-zh

使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。

scanning-infrastructure-with-nessus

9
from killvxk/cybersecurity-skills-zh

Tenable Nessus 是业界领先的漏洞扫描器,用于识别网络基础设施(包括服务器、工作站、网络设备和操作系统)中的安全弱点。

scanning-docker-images-with-trivy

9
from killvxk/cybersecurity-skills-zh

Trivy 是 Aqua Security 开源的综合性漏洞扫描器,用于检测容器镜像中操作系统软件包、语言特定依赖项的漏洞、错误配置、密钥和许可证违规,并集成到 CI/CD 流水线,支持 SARIF、CycloneDX 和 SPDX 等多种输出格式。

scanning-containers-with-trivy-in-cicd

9
from killvxk/cybersecurity-skills-zh

本技能涵盖将 Aqua Security 的 Trivy 扫描器集成到 CI/CD 流水线中,用于全面的容器镜像漏洞检测。包括扫描 Docker 镜像中的操作系统包和应用依赖 CVE、检测 Dockerfile 中的错误配置、扫描文件系统和 Git 仓库,以及建立基于严重性的质量门禁以阻止有漏洞的镜像部署。

scanning-container-images-with-grype

9
from killvxk/cybersecurity-skills-zh

使用 Anchore Grype 扫描容器镜像的已知漏洞(Vulnerability),支持基于 SBOM 的匹配和可配置的严重性阈值。

performing-web-application-scanning-with-nikto

9
from killvxk/cybersecurity-skills-zh

Nikto 是一款开源 Web 服务器和 Web 应用程序扫描器,可针对超过 7,000 个潜在危险文件/程序进行测试,检查超过 1,250 个服务器的过期版本,并识别超过 270 个服务器的版本特定问题。

performing-vulnerability-scanning-with-nessus

9
from killvxk/cybersecurity-skills-zh

使用 Tenable Nessus 执行认证和未认证漏洞扫描,识别网络基础设施、服务器和应用程序中的已知漏洞、 错误配置、默认凭据和缺失补丁。扫描器将发现与 CVE 数据库和 CVSS 评分关联,生成优先级修复指导。 适用于漏洞扫描、Nessus 评估、补丁合规检查或自动化漏洞检测等请求场景。

performing-sca-dependency-scanning-with-snyk

9
from killvxk/cybersecurity-skills-zh

本技能涵盖使用 Snyk 实施软件成分分析(SCA, Software Composition Analysis),在 CI/CD 流水线中检测存在漏洞的开源依赖项。内容包括扫描包清单和锁文件、自动修复拉取请求生成、许可证合规检查、已部署应用程序的持续监控,以及与 GitHub、GitLab 和 Jenkins 流水线的集成。

performing-ot-vulnerability-scanning-safely

9
from killvxk/cybersecurity-skills-zh

使用被动监控、原生协议查询和经过精心控制的Tenable OT Security主动扫描,在OT/ICS环境中安全执行漏洞扫描,在不破坏工业过程或导致旧版控制器崩溃的情况下识别漏洞。

performing-kubernetes-penetration-testing

9
from killvxk/cybersecurity-skills-zh

Kubernetes 渗透测试(Penetration Testing)通过对 API server、kubelet、etcd、Pod、RBAC、网络策略和密钥模拟攻击者技术,系统性评估集群安全性。使用 kube-hunter、Kubescape、peirates 等工具识别可能导致集群被攻陷的错误配置。

performing-kubernetes-etcd-security-assessment

9
from killvxk/cybersecurity-skills-zh

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