centos

centos k8s安全设置如何操作

小樊
46
2025-08-10 21:11:05
栏目: 智能运维

以下是CentOS上K8s的安全设置操作要点,涵盖系统、网络、权限、镜像等核心维度:

一、系统基础安全加固

  1. 关闭非必要服务与端口
    • 禁用FTP、邮件等无关服务:systemctl disable ftpd postfix
    • firewalld限制端口:firewall-cmd --add-port=6443/tcp --permanent(仅开放API Server端口)
  2. 禁用SELinux与Swap
    • 临时禁用SELinux:setenforce 0;永久禁用:修改/etc/selinux/configdisabled
    • 关闭Swap:swapoff -a,并注释/etc/fstab中的Swap配置
  3. 系统更新与内核加固
    • 定期更新系统补丁:yum update -y
    • 使用hardened内核(如CentOS Stream的默认内核)

二、网络访问控制

  1. 启用网络策略(Network Policy)
    • 通过标签限制Pod间通信,例如仅允许frontend访问backend的8080端口:
      apiVersion: networking.k8s.io/v1  
      kind: NetworkPolicy  
      metadata:  
        name: frontend-to-backend  
      spec:  
        podSelector:  
          matchLabels:  
            app: backend  
        ingress:  
        - from:  
          - podSelector:  
              matchLabels:  
                app: frontend  
          ports:  
          - protocol: TCP  
            port: 8080  
      
      应用策略:kubectl apply -f network-policy.yaml
  2. 配置CNI插件支持
    • 需使用Calico、Cilium等支持Network Policy的CNI插件

三、权限与认证管理

  1. 启用RBAC权限控制
    • 创建命名空间隔离资源:kubectl create namespace dev
    • 定义角色(Role)限制命名空间内操作,例如允许dev命名空间创建Pod:
      apiVersion: rbac.authorization.k8s.io/v1  
      kind: Role  
      metadata:  
        namespace: dev  
        name: pod-creator  
      rules:  
      - apiGroups: [""]
        resources: ["pods"]
        verbs: ["create", "get", "list"]  
      
      绑定到服务账户:kubectl create rolebinding dev-pod-creator --role=pod-creator --serviceaccount=dev:default
  2. API Server安全配置
    • 启用TLS双向认证,使用客户端证书验证访问
    • 禁用匿名访问:在API Server启动参数中添加--anonymous-auth=false

四、容器与镜像安全

  1. 限制容器权限
    • 通过securityContext禁止特权容器、限制文件系统只读:
      securityContext:  
        runAsNonRoot: true  
        readOnlyRootFilesystem: true  
      
  2. 镜像安全扫描与签名
    • 使用私有仓库(如Harbor)存储镜像,并启用漏洞扫描
    • 通过cosign对镜像签名,部署时验证签名有效性

五、审计与监控

  1. 启用审计日志
    • 在API Server配置中添加审计策略,记录所有操作:
      apiVersion: audit.k8s.io/v1  
      kind: Policy  
      rules:  
      - level: Metadata  
        resources:  
        - group: ""  
          resources: ["pods", "services"]  
      
  2. 部署实时监控工具
    • 使用Falco监控异常行为,例如检测容器逃逸:kubectl apply -f falco-daemonset.yaml
    • 通过Prometheus+Grafana监控集群资源与安全指标

六、组件与证书管理

  1. 定期更新K8s组件
    • 使用kubeadm upgrade升级集群版本,确保修复安全漏洞
  2. 证书自动轮换
    • 启用证书自动续期:kubeadm certs renew all,避免证书过期

参考来源

以上措施需根据实际业务场景调整,优先遵循“最小权限原则”和“零信任”理念,定期进行安全审计与渗透测试。

0
看了该问题的人还看了