securing-helm-chart-deployments
通过验证 Chart 完整性、扫描模板中的错误配置并在 Kubernetes 发布中强制执行安全上下文,保护 Helm Chart 部署安全。
Best use case
securing-helm-chart-deployments is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
通过验证 Chart 完整性、扫描模板中的错误配置并在 Kubernetes 发布中强制执行安全上下文,保护 Helm Chart 部署安全。
Teams using securing-helm-chart-deployments 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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/securing-helm-chart-deployments/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How securing-helm-chart-deployments Compares
| Feature / Agent | securing-helm-chart-deployments | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
通过验证 Chart 完整性、扫描模板中的错误配置并在 Kubernetes 发布中强制执行安全上下文,保护 Helm Chart 部署安全。
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
# 保护 Helm Chart 部署
## 概述
Helm(Kubernetes 包管理器)的部署安全需要验证 Chart 来源、扫描模板中的安全错误配置、强制执行 Pod 安全上下文、安全管理 Secret,以及控制 Helm 操作的 RBAC。
## 前置条件
- Helm 3.12+ 已安装
- 具有集群访问权限的 kubectl
- GnuPG(用于 Chart 签名/验证)
- kubesec 或 checkov(用于模板扫描)
## Chart 来源与完整性
### 签署 Helm Chart
```bash
# 生成 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
```bash
# 从仓库验证 Chart
helm pull myrepo/mychart --verify --keyring /path/to/keyring.gpg
# 检查 Chart 来源文件
cat mychart-0.1.0.tgz.prov
```
## 模板安全扫描
### 渲染并扫描模板
```bash
# 渲染模板而不部署
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
```
### 使用 Helm Lint 检查错误配置
```bash
# 检查 Chart
helm lint ./mychart --values values-prod.yaml --strict
# 带调试输出的检查
helm lint ./mychart --debug
```
## 在 values.yaml 中强制执行安全上下文
```yaml
# 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..."
```
### 带安全上下文的模板
```yaml
# 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 }}
```
## Secret 管理
### 使用外部 Secret(而非 Helm Values)
```yaml
# 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 插件
```bash
# 安装 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 操作的 RBAC
```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: helm-deployer
namespace: production
roleRef:
kind: Role
name: helm-deployer
apiGroup: rbac.authorization.k8s.io
```
## CI/CD Helm 安全流水线
```yaml
# .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
with:
scan-type: config
scan-ref: rendered.yaml
- name: 使用 checkov 扫描
uses: bridgecrewio/checkov-action@master
with:
file: rendered.yaml
framework: kubernetes
```
## 最佳实践
1. **签署 Chart** 使用 GPG 签名并在安装前验证
2. **渲染并扫描**模板,在部署前发现错误配置
3. **在 values.yaml 默认值中强制执行安全上下文**
4. **绝不在 Helm values 中存储 Secret** - 使用外部 Secret 或 helm-secrets 插件
5. **使用镜像摘要**代替标签以获得不可变引用
6. **按命名空间限制 Helm RBAC** 至最小权限
7. **固定依赖中的 Chart 版本** - 绝不使用 `latest`
8. **在 CI 中严格检查**,使用 `--strict` 标志
9. **审查第三方 Chart** 再部署到生产环境
10. **使用 Helm 测试钩子**在安装后验证部署Related Skills
securing-serverless-functions
本技能涵盖 AWS Lambda、Azure Functions 和 Google Cloud Functions 等无服务器计算平台的安全加固,涉及最小权限 IAM 角色、依赖漏洞扫描、密钥管理集成、输入验证、函数 URL 认证以及运行时监控,以防范注入攻击、凭证窃取和供应链攻击。
securing-remote-access-to-ot-environment
本技能涵盖为操作员、工程师和供应商实施OT/ICS环境的安全远程访问,同时防止可能危害工业运营的未授权访问。涉及跳板服务器架构、多因素认证、会话记录、特权访问管理、供应商远程访问控制,以及符合IEC 62443和NERC CIP-005远程访问要求。
securing-kubernetes-on-cloud
本技能涵盖通过实施 Pod 安全标准(Pod Security Standards)、网络策略、工作负载身份、RBAC 权限控制、镜像准入控制和运行时安全监控,对 EKS、AKS 和 GKE 上的托管 Kubernetes 集群进行加固。涉及云平台特定安全功能,包括 EKS 的 IRSA、GKE 的工作负载身份(Workload Identity)以及 AKS 的托管身份(Managed Identity)。
securing-historian-server-in-ot-environment
本技能涵盖在OT环境中加固和保护过程历史数据服务器(OSIsoft PI、Honeywell PHD、GE Proficy、AVEVA Historian)。涉及跨Purdue模型各层级的网络部署、历史数据服务器接口的访问控制、通过数据二极管或PI-to-PI连接器在DMZ中进行数据复制、历史数据查询中的SQL注入防护,以及用于安全分析、法规报告和过程优化的过程数据完整性保护。
securing-github-actions-workflows
本技能涵盖加固 GitHub Actions 工作流以防范供应链攻击、凭据盗窃和权限提升。 内容包括将 action 固定到 SHA 摘要、最小化 GITHUB_TOKEN 权限、防止机密泄露、 防止工作流表达式中的脚本注入,以及为工作流变更实施必要的审阅者机制。
securing-container-registry-with-harbor
Harbor 是一个开源容器镜像仓库,提供安全功能包括漏洞扫描(集成 Trivy)、镜像签名(Notary/Cosign)、RBAC、内容信任策略(Content Trust)、复制和审计日志。配置这些功能以强制执行镜像来源验证、防止有漏洞镜像部署并维护仓库访问控制。
securing-container-registry-images
通过使用 Trivy 和 Grype 实施漏洞扫描、使用 Cosign 和 Sigstore 强制执行镜像签名、配置镜像仓库访问控制,以及构建阻止部署未扫描或未签名镜像的 CI/CD 流水线,来保护容器仓库(Container Registry)中的镜像安全。
securing-aws-iam-permissions
本技能引导从业者加固 AWS 身份和访问管理(Identity and Access Management)配置,在云账户中强制执行最小权限(Least Privilege)访问。涵盖 IAM 策略范围界定、权限边界(Permission Boundary)、Access Analyzer 集成和凭据轮换策略,以降低受损身份的影响范围。
securing-api-gateway-with-aws-waf
通过配置 OWASP Top 10 防护托管规则组(Managed Rule Group)、创建自定义速率限制规则、实施机器人(Bot)控制、设置 IP 信誉过滤以及监控 WAF 指标,使用 AWS WAF 保护 API Gateway 端点。
triaging-vulnerabilities-with-ssvc-framework
使用 CISA 的利益相关方特定漏洞分类(SSVC)决策树框架对漏洞进行分类和优先排序,产出可操作的修复优先级:Track、Track*、Attend 或 Act。
triaging-security-incident
使用 NIST SP 800-61r3 和 SANS PICERL 框架对安全事件进行初始分类,确定严重性、范围和所需响应行动。 按类型对事件分类,根据业务影响分配优先级,并路由到相应的响应团队。适用于事件分类、 安全告警分类、严重性评估、事件优先级排序或初始事件分析等请求场景。
triaging-security-incident-with-ir-playbook
使用结构化 IR Playbook 对安全事件进行分类和优先排序,确定严重性、分配响应团队并启动适当的响应程序。