温馨提示×

CentOS上Kubernetes安装的安全性考虑

小樊
39
2025-12-11 20:42:35
栏目: 智能运维

CentOS 上部署 Kubernetes 的安全要点

一 系统加固与基础配置

  • 保持系统与安全组件为最新稳定版本,及时获取安全补丁;为所有组件启用 TLS 加密通信,避免明文管理通道。
  • 启用 firewalld 并仅开放必要端口(如 6443 kube-apiserver、10250 kubelet 等),不要为安装便利而长期关闭防火墙。
  • 不建议直接禁用 SELinux,应通过策略放行所需权限;若必须测试,可临时设置 setenforce 0,生产环境务必恢复为 enforcing
  • 必须禁用 Swap(如 swapoff -a 并从 /etc/fstab 移除条目),以满足 kubelet 要求并降低侧信道风险。
  • 全集群启用 NTP/chrony 时间同步,防止证书校验、审计日志与调度异常。
  • 为关键目录与文件设置最小权限与属主(如 /etc/kubernetes 清单、PKI 目录、kubelet 配置等),减少配置被篡改的可能性。

二 身份与访问控制

  • 对所有 API 交互强制使用 TLS;结合 RBAC 实施最小权限,按团队/命名空间划分角色,谨慎授予能间接创建或删除资源的权限(如通过 Deployment 创建 Pod、删除 Node 触发驱逐)。
  • 启用 Node 授权并与 NodeRestriction 准入插件配合,限制节点对 API 的可见与可操作范围。
  • 全量启用 Kubelet 认证/授权,关闭匿名访问(如设置 anonymous-auth=false),仅允许受控的客户端证书或服务账户访问节点 API。
  • 认证方式优先对接企业身份源(如 OIDC/LDAP),避免长期使用静态令牌;服务账户仅授予必要权限并绑定到最小作用域的 Role/ClusterRole

三 控制平面与 Etcd 安全

  • API Server:仅绑定到安全地址(如 127.0.0.1 或管理网),关闭不必要的 profiling,启用审计日志,强制 TLS
  • Controller Manager:启用 –use-service-account-credentials,为各控制回路分配最小权限;关闭 profiling,必要时设置 –root-ca-file 等证书参数。
  • Scheduler:关闭 profiling,绑定到 127.0.0.1,仅暴露必要的调度接口。
  • Etcd:启用客户端与对等节点 TLS 与证书校验(如 –client-cert-auth=true、–peer-client-cert-auth=true),禁止 –auto-tls;为 API Server 与 Etcd 使用独立的 CA,避免证书混用;定期备份 etcd 数据并验证恢复流程。

四 工作负载与运行时安全

  • 使用 Pod 安全准入(PSA) 或等效机制在命名空间上强制执行 Pod Security Standard(优先 Baseline/Restricted),避免特权容器、不必要的主机命名空间共享、可写 HostPath、过度 Linux Capabilities 等。
  • 通过 PodSecurityContext 设置非 root 用户运行(runAsNonRoot)、只读根文件系统(readOnlyRootFilesystem)、最小 capabilities 与 drop 列表。
  • 使用 NetworkPolicy 实现默认拒绝(default-deny),仅对白名单流量放通,按命名空间与标签精细化控制 Pod 间与服务间通信。
  • 限制容器与内核交互:卸载或黑名单高风险内核模块(如 dccp、sctp),并通过 SELinux/AppArmor 等 LSM 限制模块加载与系统调用。
  • 实施 ResourceQuota/LimitRange,控制 CPU/内存/存储与对象数量,防止资源耗尽与 DoS。

五 镜像与供应链安全

  • 优先使用 私有镜像仓库 并配置镜像拉取密钥(imagePullSecrets);禁止从不可信源拉取镜像。
  • 对镜像进行 漏洞扫描 与签名校验,建立可信基础镜像与白名单策略,减少供应链攻击面。
  • 通过准入控制(如 ImagePolicyWebhook)拦截未扫描、未签名或来自不安全仓库的镜像创建请求。

0