8.1 安全策略SOP

一、适用范围与目标

  • 适用于 Kubernetes 集群、云平台、主机系统等的安全策略配置与日常运维操作。
  • 目标:建立标准化的安全操作流程,保障系统安全,满足合规要求。

二、管理目标

  1. RBAC 权限管理标准化,遵循最小权限原则
  2. 密钥与敏感信息安全管理,定期轮换
  3. API 审计全覆盖,关键操作可追溯
  4. 安全策略变更可审批、可回滚

三、详细规范

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 权限配置流程

  1. 需求评审 → 确定用户角色和所需权限
  2. 角色设计 → 创建或选择现有 Role/ClusterRole
  3. 权限最小化配置 → 仅授予必要权限
  4. 审批 → 权限配置需经安全团队审批
  5. 应用到集群 → 创建 RoleBinding/ClusterRoleBinding
  6. 定期复查 → 每季度审查权限,回收冗余权限

Secret 管理流程

  1. 生成密钥 → 使用安全工具生成密钥
  2. 加密存储 → 密钥加密后存储到 Secret 或密钥管理平台
  3. 权限分级 → 设置访问权限,仅授权人员可访问
  4. 定期轮换 → 每季度或按策略轮换密钥
  5. 更新 Secret → 更新应用中的 Secret 引用
  6. 审计密钥使用 → 记录密钥访问与使用日志

API 审计配置流程

  1. 配置 API 审计策略 → 定义审计规则和日志级别
  2. 日志采集 → 配置日志采集到安全平台
  3. 告警规则 → 设置关键操作告警规则
  4. 定期审查 → 定期审查审计日志,发现异常操作

五、实际案例

案例1:新增开发人员权限

  • 场景:新入职开发人员需要访问 dev 命名空间
  • 步骤
    1. 创建 dev-reader Role(仅读取权限)
    2. 创建 RoleBinding 绑定用户
    3. 测试验证权限范围
    4. 记录权限分配记录
  • 亮点:遵循最小权限原则,权限可追溯

案例2:数据库密码轮换

  • 场景:生产数据库密码需要定期轮换
  • 步骤
    1. 生成新密码并加密存储到 Vault
    2. 更新应用 Secret 引用
    3. 重启应用使新密码生效
    4. 验证应用连接正常
    5. 归档旧密码
  • 亮点:密码轮换无停机,全程可追溯

案例3:异常权限操作告警

  • 场景:检测到删除生产环境 Pod 的操作
  • 步骤
    1. API 审计日志触发告警
    2. 安全团队立即响应
    3. 审查操作记录和上下文
    4. 确认是否为误操作或攻击
    5. 采取相应措施并记录
  • 亮点:实时监控,快速响应

六、操作模板

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 安全合规指南》
  • 团队内部安全管理制度