下载工作台
项目运维与部署

安全运维基线

试读上半部分 · 解锁后可读全文

第 12 章 · 安全运维基线

本章目标:为 demo-mall 建立 可审计、可准入 的安全运维基线——RBAC 最小权限、Secret 管理、镜像扫描、NetworkPolicy 与 Pod 安全上下文;全部可在小紫云计算界面配合 YAML 落地。

学时建议:2~2.5 小时(含 1.5 小时跟练)

前置ops-deploy ch02 Secret 与多环境;ch03 镜像构建;xiaozi-cloud ch06 集群管理。


12.1 场景说明

项目内容
背景demo-mall 准备 prod 上线,安全评审列出 7 条「必须修复」:Jenkins 用了 cluster-admin、镜像未扫描、Pod 以 root 运行、Namespace 之间网络全通
痛点研发图快给 CI 最高权限;运维怕改 NetworkPolicy 把业务拦死
你的角色运维 / 平台,输出 安全基线清单 并在 staging 验证后再推 prod
本章任务为 Jenkins 建最小 SA;为 demo-api 加 NetworkPolicy;跑镜像漏洞扫描
约束本章在 staging-app / staging-middleware 跟练;prod 变更需变更单(ch05

为什么现在做:等保、甲方审计、Registry 准入都会问同一套问题——早建在 staging 试错,比 prod 事故后补课便宜一个数量级。


12.2 学完你能

能力验收标准
安全基线清单能列出 7 大项并说明 demo-mall 达标方式
RBAC 最小权限为 CI 创建仅 staging 部署权限的 ServiceAccount
Pod 安全配置 runAsNonRoot、drop capabilities
网络隔离编写 NetworkPolicy 限制 ingress/egress
镜像供应链解释 Trivy 扫描级别与阻断策略
密钥轮换说出 DB / JWT / TLS 轮换节奏
界面操作在小紫云计算 工作负载 YAML 应用安全补丁

12.3 安全运维基线清单

#要求demo-mall 落地
1RBAC最小权限,禁止 cluster-admin 日常 CIJenkins SA 仅 staging-app
2Secret不进 Git;定期轮换ch02 External Secret / Sealed
3镜像私有 Registry;HIGH 阻断 prodTrivy in CI(ch03
4网络NetworkPolicy 默认拒绝demo-api 仅允许 Ingress + DB
5Pod非 root;只读根文件系统(尽量)securityContext
6审计apiserver audit log平台侧开启
7入口HTTPS + WAF(如有)Ingress TLS

12.4 逐步跟练 · RBAC(约 35 分钟)

目标:Jenkins 部署账号 只能 更新 staging-app 的 Deployment,不能读 prod Secret。

步骤

  1. 在小紫云计算连接 staging 集群
  2. 运维 → 工作负载 → 右上角或 YAML 入口,准备应用以下 manifest(可保存为 jenkins-rbac-staging.yaml 本地编辑后粘贴)
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-deploy
  namespace: devops
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: deploy-staging
  namespace: staging-app
rules:
  - apiGroups: [apps]
    resources: [deployments]
    verbs: [get, list, watch, update, patch]
  - apiGroups: [apps]
    resources: [deployments/rollback]
    verbs: [create]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: jenkins-deploy-staging
  namespace: staging-app
subjects:
  - kind: ServiceAccount
    name: jenkins-deploy
    namespace: devops
roleRef:
  kind: Role
  name: deploy-staging
  apiGroup: rbac.authorization.k8s.io
  1. 应用后,在 Jenkins 使用该 SA 的 kubeconfig(或 token)试部署 demo-api

你应该看到什么

  • staging 部署 成功
  • 若用同一凭证操作 prod-appForbidden
  • 禁止:Jenkins 使用集群管理员 kubeconfig 部署 prod

12.5 逐步跟练 · Pod 安全上下文(约 25 分钟)

应用部署 → demo-api → 工作负载 YAML 或 Helm values 中加入:

securityContext:
  runAsNonRoot: true
  runAsUser: 1000
  readOnlyRootFilesystem: true
  allowPrivilegeEscalation: false
  capabilities:
    drop: [ALL]
例外处理
必须写 /tmp增加 emptyDir 挂载 /tmp
需特权安全评审 + 独立节点池

跟练:部署到 staging → 运维 → Pod 调试 确认 Pod Running → 终端id 应非 root。

你应该看到什么:Pod 状态 Running;应用健康检查通过;若崩溃查看 日志管理 是否缺写目录。


以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。