首页主机资讯ubuntu k8s安全设置怎么做

ubuntu k8s安全设置怎么做

时间2025-12-03 18:03:03发布访客分类主机资讯浏览446
导读:Ubuntu 上 Kubernetes 安全设置清单 一 基础系统与网络加固 系统基线 保持系统与时区一致,启用 NTP 时间同步;禁用 Swap(注释 /etc/fstab 中的 swap 行并执行 swapoff -a);按需安装并...

Ubuntu 上 Kubernetes 安全设置清单

一 基础系统与网络加固

  • 系统基线
    • 保持系统与时区一致,启用 NTP 时间同步;禁用 Swap(注释 /etc/fstab 中的 swap 行并执行 swapoff -a);按需安装并配置 Containerd/Docker 作为容器运行时。
    • 开启内核网络参数(/etc/sysctl.d/kubernetes.conf):
      • net.bridge.bridge-nf-call-ip6tables = 1
      • net.bridge.bridge-nf-call-iptables = 1
      • net.ipv4.ip_forward = 1
      • 执行 sysctl -p 使配置生效。
  • 防火墙与端口
    • 使用 UFW 默认拒绝入站,仅放行业务必需端口,示例:
      • ufw allow from 192.168.1.0/24 to any port 22 proto tcp(SSH 管理)
      • ufw allow from 10.0.0.0/24 to any port 6443 proto tcp(API Server)
      • ufw allow from 10.0.0.0/24 to any port 10250 proto tcp(Kubelet API)
      • ufw allow from 10.0.0.0/24 to any port 53 proto tcp,udp(DNS)
      • ufw allow from < master1> ,< master2> to any port 2379,2380 proto tcp(etcd)
      • 如不使用 NodePort,建议限制或关闭 30000–32767 端口段。
    • 验证:ufw status numberedufw reloadnc -zv < IP> < 端口>

二 集群通信与证书管理

  • 启用 TLS 与引导令牌
    • 初始化集群时启用 TLS,为 API Server 证书添加 SAN(外网 IP/域名):
      • kubeadm init --apiserver-advertise-address=< 内网IP> --apiserver-cert-extra-sans=< 外网IP/域名> --pod-network-cidr=10.244.0.0/16
    • 使用短时引导令牌:kubeadm token create --validity 24h --print-join-command
  • 证书生命周期
    • 检查证书有效期:kubeadm certs check-expiration
    • 续签全部证书:kubeadm certs renew all
    • 滚动重启控制面组件(静态 Pod 会被重建):
      • systemctl restart kubelet
      • kubectl delete pod -n kube-system -l k8s-app=kube-apiserver
      • kubectl delete pod -n kube-system -l k8s-app=kube-controller-manager
      • kubectl delete pod -n kube-system -l k8s-app=kube-scheduler
  • 禁用不安全端口
    • 确保 API Server 8080 不安全端口未启用;如存在需移除相关启动参数并仅保留 6443 等安全端口。

三 身份与访问控制 RBAC

  • 原则与范围
    • 遵循 最小权限原则;优先使用 Role/RoleBinding 限制到命名空间,谨慎使用 ClusterRole/ClusterRoleBinding
    • 每个微服务使用独立的 ServiceAccount,只授予所需权限。
  • 快速示例
    • 只读 Pods(命名空间级):
      • kubectl create role pod-reader --namespace=dev --verb=get,list,watch --resource=pods
      • kubectl create rolebinding pod-reader-binding --namespace=dev --role=pod-reader --serviceaccount=dev:default
    • 全命名空间只读 Pods(集群级):
      • kubectl create clusterrole pod-reader-all --verb=get,list,watch --resource=pods
      • kubectl create clusterrolebinding pod-reader-all-binding --clusterrole=pod-reader-all --user=ops-team
  • 自检与治理
    • 权限自检:kubectl auth can-i < verb> < resource> [--namespace=< ns> ]
    • 定期审计与回收无效绑定,避免过度授权。

四 网络与 Pod 安全

  • 网络策略
    • 部署 Calico/Cilium 等支持 NetworkPolicy 的 CNI 插件(示例):kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • 默认拒绝(白名单制):
      • 全局策略(Calico):创建 GlobalNetworkPolicyselector: all()types: [Ingress, Egress]
    • DNS 放行(示例):
      • apiVersion: networking.k8s.io/v1
      • kind: NetworkPolicy
      • metadata: name: allow-dns namespace: default
      • spec: podSelector: { } policyTypes: [Ingress] ingress: from: - namespaceSelector: matchLabels: name: kube-system - podSelector: matchLabels: k8s-app: kube-dns ports: - protocol: TCP port: 53 - protocol: UDP port: 53
  • Pod 安全准入
    • 在 v1.25+ 使用 Pod Security Admission(PSA)替代 PSP:为命名空间设置标签,如 pod-security.kubernetes.io/enforce: restrictedpod-security.kubernetes.io/warn: restricted,或在 kube-apiserver 启用 PSA 准入插件。
    • 旧版本如需 PSP(已弃用):创建策略(如禁止特权、要求非 root、只读根文件系统),并绑定到服务账户后再创建 Pod。

五 镜像 数据与审计监控

  • 镜像与供应链
    • 仅从可信源拉取镜像,使用 私有仓库(Harbor/Quay);定期扫描镜像漏洞(如 Trivy/Clair),及时更新基础镜像与依赖。
  • 数据与密钥
    • 使用 Secrets 管理敏感信息;对 PV/PVC 与 etcd 数据考虑 静态加密 与备份策略(定期备份 etcd 与证书)。
  • 审计与监控
    • 启用 API Server 审计日志(示例策略记录 delete/patch/update 等关键操作),并接入 Prometheus/Grafana 设置告警(异常 API 调用、资源异常等)。
  • 验证与演练
    • 防火墙连通性、TLS 证书有效性、网络策略阻断效果、RBAC 权限边界、审计日志落盘与告警触发等例行验证,形成 SOP 与周期性复测。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu k8s安全设置怎么做
本文地址: https://pptw.com/jishu/762577.html
ubuntu上k8s网络如何配置 k8s集群Ubuntu管理技巧

游客 回复需填写必要信息