


防止容器以特权模式运行,因为这种类型的容器将会拥有底层主机可用的大部分能力。
避免容器与宿主机共享非必要的命名空间,如PID、IPC、NET等,确保Docker容器和底层主机之间的适当隔离。
限制Volume的类型。例如,通过可写HostPath目录卷,操作者可写入文件系统,让容器得以在pathprefix之外随意移动,因此,必须使用readonly:true。
限制主机文件系统的使用。
通过ReadOnlyRootFilesystem将根文件系统设置为只读。
基于defaultAllowPrivilegeEscalation和allowPrivilegeEscalation选项,防止Pod及Pod中的进程获得高权限。
在遵循最小权限原则的前提下,将Linux功能限制为最低权限。






--profiling设置为false,以大大减少攻击面。当遇到系统性能瓶颈的时候,profiling可以通过识别定位瓶颈来发挥作用,对性能调优有显著帮助。
--address设置为127.0.0.1,防止将编排器绑定到一个非回环的不安全地址。

--terminated-pod-gc-threshold设置为一个适合的值,以确保拥有足够可用的资源,并不会导致性能降低。
--profilingargument 设置为false。
--use-service-account-credentials设置为true。这种设置可以配合RBAC使用,确保控制环路以最小权限原则运行。
--service-account-private-key-file设置为单独的公钥/私钥对,用于签署服务账户令牌。
--root-ca-file设置为一个适合的值,在包含API服务器的服务证书的根证书中进行设置,这样Pod会先验证API服务器的服务证书,然后再建立连接。
--RotateKubeletServerCertificate设置为true,并且只适用于Kubelets从API服务器获得其证书的情况下。
--address argument设置为127.0.0.1,确保控制管理器服务不会与非回环的不安全地址绑定。

--cert-file和 --key-file根据需要设置,以确保客户端连接只通过TLS(传输中加密)提供服务。
--client-cert-auth 设置为true,确保所有用户的访问都会包括一个有效的客户端证书。
--auto-tls不要设置为true,这会禁止客户在TLS中使用自签名的证书。
如果使用的是etcd集群(而非单一的etcd服务器),要检查一下--peer-cert-file 和--peer-key-file 参数是否设置正确,以确保同级别的Etcd连接在Etcd集群中被加密。此外,检查--peer-client-cert-auth 参数是否设置为true,确保只有经过认证的同级别的etcd才能访问etcd集群。最后检查一下--peer-auto-tls 参数是否设置为true。
不要为etcd与Kubernetes使用相同的授权证书,可以通过验证API服务器的--client-ca-file引用的文件与etcd使用的--trusted-ca-file之间的差别来确保这种区分情况。

--anonymous-auth 设置为false。常见的错误配置之一是允许Kubelet服务器提供匿名和未经验证的请求。
--authorization-mod设置为AlwaysAllow。若使用默认配置值,要确保有--config 指定的Kubelet配置文件,并且该文件将authorization: mode设置为AlwaysAllow以外的配置。
--client-ca-file 设置的是客户端证书授权的位置。若使用默认配置值,要确保有一个由--config指定的Kubelet配置文件,并且该文件已经过认证,同时将x509:clientCAFile设置为客户端证书授权的位置。
--read-only-port 设置为0,若使用默认配置值,要确保有一个由config指定的文件,如果要设置适合的值,则将readOnlyPort设置为0。
--protect-kernel-defaults设置为true。若使用默认配置值,要确保有一个由config指定的文件,并且该文件已将protectKernelDefaults设置为true。
--hostname-override使用默认配置值,确保Kubelet和API服务器之间TLS设置没有中断。
--event-qps设置为0。若使用默认配置值,要确保有一个由config指定的kubelet配置文件,并且eventRecordQPS设置为0。
--tls-cert-file和--tls-private-key-file参数设置为合适的值。通过--config所指定的Kubeletconfig包含tlsCertFile和tlsPrivateKeyFile,确保Kubelet上的所有连接都是通过TLS进行的。
如果Kubelet从API服务器获得证书,将RotateKubeletServerCertificate和--rotate-certificates设置为true,确保Kubelet只使用强密码。

文件权限:在主节点上运行stat-c%a /etc/kubernetes/manifests/kube-apiserver.yaml命令(指定系统的文件位置),在输出中检查和确保权限是644或更多权限限制,并保持文件的完整性。
所有权:在主节点上运行stat-c%U:%G /etc/kubernetes/manifests/kube-apiserver.yaml命令(指定系统的文件位置),在输出中检查和确保所有权权限设置为root:root。








