用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/killvxk/cybersecurity-skills-zh --skill securing-helm-chart-deployments命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | securing-helm-chart-deployments |
| description | 通过验证 Chart 完整性、扫描模板中的错误配置并在 Kubernetes 发布中强制执行安全上下文,保护 Helm Chart 部署安全。 |
| domain | cybersecurity |
| subdomain | container-security |
| tags | ["helm","kubernetes","chart-security","supply-chain","configuration-security","deployment"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
Helm(Kubernetes 包管理器)的部署安全需要验证 Chart 来源、扫描模板中的安全错误配置、强制执行 Pod 安全上下文、安全管理 Secret,以及控制 Helm 操作的 RBAC。
# 生成 GPG 签名密钥
gpg --full-generate-key
# 打包并签署 Chart
helm package ./mychart --sign --key "helm-signing@example.com" --keyring ~/.gnupg/pubring.gpg
# 验证 Chart 签名
helm verify mychart-0.1.0.tgz --keyring ~/.gnupg/pubring.gpg
# 从仓库验证 Chart
helm pull myrepo/mychart --verify --keyring /path/to/keyring.gpg
# 检查 Chart 来源文件
cat mychart-0.1.0.tgz.prov
# 渲染模板而不部署
helm template myrelease ./mychart --values values-prod.yaml > rendered.yaml
# 使用 kubesec 扫描
kubesec scan rendered.yaml
# 使用 checkov 扫描
checkov -f rendered.yaml --framework kubernetes
# 使用 trivy 扫描
trivy config rendered.yaml
# 使用 kube-linter 扫描
kube-linter lint rendered.yaml
# 检查 Chart
helm lint ./mychart --values values-prod.yaml --strict
# 带调试输出的检查
helm lint ./mychart --debug
# values.yaml - 安全加固默认值
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
podSecurityContext:
seccompProfile:
type: RuntimeDefault
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 128Mi
networkPolicy:
enabled: true
serviceAccount:
create: true
automountServiceAccountToken: false
image:
pullPolicy: Always
# 使用摘要(digest)代替标签(tag)以确保不可变性
# tag: "1.0.0"
# digest: "sha256:abc123..."
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "mychart.fullname" . }}
spec:
template:
spec:
automountServiceAccountToken: {{ .Values.serviceAccount.automountServiceAccountToken }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
resources:
{{- toYaml .Values.resources | nindent 12 }}
# templates/external-secret.yaml
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: {{ include "mychart.fullname" . }}-secrets
spec:
refreshInterval: 1h
secretStoreRef:
name: aws-secretsmanager
kind: ClusterSecretStore
target:
name: {{ include "mychart.fullname" . }}-secrets
data:
- secretKey: db-password
remoteRef:
key: production/database
property: password
# 安装 helm-secrets 插件
helm plugin install https://github.com/jkroepke/helm-secrets
# 加密 values 文件
helm secrets encrypt values-secrets.yaml
# 使用加密 Secret 部署
helm secrets install myrelease ./mychart -f values.yaml -f values-secrets.yaml
# 解密以进行编辑
helm secrets edit values-secrets.yaml
# helm-deployer-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: helm-deployer
namespace: production
rules:
- apiGroups: ["", "apps", "batch", "networking.k8s.io"]
resources: ["deployments", "services", "configmaps", "secrets", "ingresses", "jobs"]
verbs: ["get", "list", "create", "update", "patch", "delete"]
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: helm-deployer-binding
namespace: production
subjects:
- kind: ServiceAccount
name:
# .github/workflows/helm-security.yaml
name: Helm Chart 安全
on:
pull_request:
paths: ['charts/**']
jobs:
lint-and-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Helm 检查
run: helm lint ./charts/mychart --strict
- name: 渲染模板
run: helm template test ./charts/mychart -f charts/mychart/values.yaml > rendered.yaml
- name: 使用 kube-linter 扫描
uses: stackrox/kube-linter-action@v1
with:
directory: rendered.yaml
- name: 使用 trivy 扫描
uses: aquasecurity/trivy-action@master
latest--strict 标志