8.1 安全策略SOP
一、适用范围与目标
- 适用于 Kubernetes 集群、云平台、主机系统等的安全策略配置与日常运维操作。
- 目标:建立标准化的安全操作流程,保障系统安全,满足合规要求。
二、管理目标
- RBAC 权限管理标准化,遵循最小权限原则
- 密钥与敏感信息安全管理,定期轮换
- API 审计全覆盖,关键操作可追溯
- 安全策略变更可审批、可回滚
三、详细规范
RBAC 权限管理
- 角色划分:admin(管理员)、dev(开发)、ops(运维)、readonly(只读)等
- 最小权限原则:用户仅授予完成工作所需的最小权限
- 权限审计:定期审查权限分配,回收冗余权限
- 命名规范:角色和绑定命名需清晰,便于管理
Secret 加密与管理
- 加密存储:启用 Kubernetes Secret 加密(KMS/密钥轮换)
- 密钥分级:按敏感程度分级管理,不同级别采用不同保护措施
- 定期轮换:密钥定期轮换,更新 Secret
- 工具推荐:Sealed Secrets、HashiCorp Vault、AWS Secrets Manager
API 审计
- 审计策略:开启 Kubernetes API 审计日志,记录所有 API 请求
- 日志采集:审计日志采集到安全平台(ELK/Prometheus)
- 告警机制:关键操作自动告警(如删除资源、修改权限)
- 日志保留:审计日志保留≥180天,满足合规要求
四、操作流程
RBAC 权限配置流程
- 需求评审 → 确定用户角色和所需权限
- 角色设计 → 创建或选择现有 Role/ClusterRole
- 权限最小化配置 → 仅授予必要权限
- 审批 → 权限配置需经安全团队审批
- 应用到集群 → 创建 RoleBinding/ClusterRoleBinding
- 定期复查 → 每季度审查权限,回收冗余权限
Secret 管理流程
- 生成密钥 → 使用安全工具生成密钥
- 加密存储 → 密钥加密后存储到 Secret 或密钥管理平台
- 权限分级 → 设置访问权限,仅授权人员可访问
- 定期轮换 → 每季度或按策略轮换密钥
- 更新 Secret → 更新应用中的 Secret 引用
- 审计密钥使用 → 记录密钥访问与使用日志
API 审计配置流程
- 配置 API 审计策略 → 定义审计规则和日志级别
- 日志采集 → 配置日志采集到安全平台
- 告警规则 → 设置关键操作告警规则
- 定期审查 → 定期审查审计日志,发现异常操作
五、实际案例
案例1:新增开发人员权限
- 场景:新入职开发人员需要访问 dev 命名空间
- 步骤:
- 创建 dev-reader Role(仅读取权限)
- 创建 RoleBinding 绑定用户
- 测试验证权限范围
- 记录权限分配记录
- 亮点:遵循最小权限原则,权限可追溯
案例2:数据库密码轮换
- 场景:生产数据库密码需要定期轮换
- 步骤:
- 生成新密码并加密存储到 Vault
- 更新应用 Secret 引用
- 重启应用使新密码生效
- 验证应用连接正常
- 归档旧密码
- 亮点:密码轮换无停机,全程可追溯
案例3:异常权限操作告警
- 场景:检测到删除生产环境 Pod 的操作
- 步骤:
- API 审计日志触发告警
- 安全团队立即响应
- 审查操作记录和上下文
- 确认是否为误操作或攻击
- 采取相应措施并记录
- 亮点:实时监控,快速响应
六、操作模板
RBAC Role 示例
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: dev
name: dev-reader
rules:
- apiGroups: [""]
resources: ["pods", "services", "configmaps"]
verbs: ["get", "list"]
- apiGroups: ["apps"]
resources: ["deployments"]
verbs: ["get", "list"]
RoleBinding 示例
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: dev-reader-binding
namespace: dev
subjects:
- kind: User
name: developer@example.com
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: dev-reader
apiGroup: rbac.authorization.k8s.io
API 审计策略示例
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
verbs: ["get", "list"]
- level: RequestResponse
verbs: ["create", "update", "patch", "delete"]
resources:
- group: ""
resources: ["pods", "secrets"]
Secret 加密存储示例(使用 Sealed Secrets)
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
name: mysecret
namespace: mynamespace
spec:
encryptedData:
password: AgBy3i4OJSWK+PiTySYZZA9rO43cGDEQAx...
七、注意事项
- 严格权限分级:避免超权,定期审查权限分配
- 密钥安全:密钥、证书等敏感信息不得明文存储,必须加密
- 审计日志:审计日志定期归档与分析,防止日志丢失
- 变更审批:安全策略变更需审批,关键变更需测试验证
- 定期演练:定期进行安全演练,验证安全策略有效性
八、参考资料
- 《Kubernetes 安全最佳实践》
- 《云原生安全白皮书》
- 《等保2.0 安全合规指南》
- 团队内部安全管理制度