用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/killvxk/cybersecurity-skills-zh --skill scanning-kubernetes-manifests-with-kubesec命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | scanning-kubernetes-manifests-with-kubesec |
| description | 使用 Kubesec 对 Kubernetes 资源清单执行安全风险分析,识别错误配置、权限提升风险以及与安全最佳实践的偏差。 |
| domain | cybersecurity |
| subdomain | container-security |
| tags | ["kubesec","kubernetes","manifest-scanning","security-scanning","devsecops","misconfiguration","static-analysis","ci-cd"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
Kubesec 是由 ControlPlane 开发的开源安全风险分析工具,用于检查 Kubernetes 资源清单中常见的可利用风险,如权限提升(Privilege Escalation)、可写宿主机挂载和过多能力赋予。它为每个资源分配数值安全评分,并提供可操作的加固建议。Kubesec 可作为 CLI 二进制、Docker 容器、kubectl 插件、准入 Webhook 或 REST API 端点使用。
Kubesec 根据安全检查为每个 Kubernetes 资源分配评分:
# 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 pull kubesec/kubesec:v2
# 扫描清单文件
docker run -i kubesec/kubesec:v2 scan /dev/stdin < deployment.yaml
kubectl krew install kubesec-scan
kubectl kubesec-scan pod mypod -n default
# 扫描 deployment 清单
kubesec scan deployment.yaml
# 以 JSON 格式输出
kubesec scan -o json deployment.yaml
# 从标准输入扫描
cat pod.yaml | kubesec scan -
[
{
"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"
# 扫描目录中所有 YAML 文件
for file in manifests/*.yaml; do
echo "=== 扫描 $file ==="
kubesec scan "$file"
done
# 扫描多文档 YAML
kubesec scan multi-resource.yaml
# 通过公共 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
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
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/
将 Kubesec 部署为 ValidatingWebhookConfiguration,在部署时拒绝不安全的清单:
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 | 系统调用过滤 |