0

让我们从一些上下文开始:

我正在学习 CKS 并阅读 CIS_Kubernetes_Benchmark_v1.6.0.pdf 并且有一个令人困惑的部分:

1.2.17 Ensure that the admission control plugin NodeRestriction is set (Automated) 

...
Verify that the --enable-admission-plugins argument is set to a value that includes 
NodeRestriction. 
  
Remediation: 
Follow the Kubernetes documentation and configure NodeRestriction plug-in on kubelets. 
Then, edit the API server pod specification file /etc/kubernetes/manifests/kube-
apiserver.yaml on the master node and set the --enable-admission-plugins parameter 
to a value that includes NodeRestriction.

关于检查是否/etc/kubernetes/manifests/kube-apiserver.yaml有一个条目的部分 - --enable-admission-plugins=NodeRestriction,... 是有道理的,烦人的部分是
"Follow the Kubernetes documentation and configure NodeRestriction plug-in on kubelets."
很难用谷歌搜索,而 Kubernetes 官方文档并不清楚如何做到这一点。

所以现在有了上下文,问题是:

在 kube-apiserver 上设置 - 后--enable-admission-plugins=NodeRestriction,如何验证 kubelet 上的 NodeRestriction 插件是否配置正确?

4

1 回答 1

1

要正确启用 NodeRestrictions 准入控制器插件,您实际上需要在 3 个不同的地方更新 kubernetes 配置:

  1. kube-apiserver:---enable-admission-plugins=NodeRestriction,...
  2. kube-apiserver: - --authorization-mode=Node,RBAC (您必须指定节点)
  3. kubelet(每个节点的):/var/lib/kubelet/config.yaml 应该有authorization.mode: Webhook(其他 kubernetes 发行版可能会/var/lib/kubelet/config.yaml用另一种配置方法替代,但我确信会有一个匹配的值)

当 kubelet 的 authorization.mode 设置为 Webhook 时,而不是默认的AlwaysAllow,它将授权决策卸载到 kubernetes api-server。Node Authorization 模式是一种专用的授权模式,专门对 kubelet 发出的 API 请求进行授权。

(下面的 Giantswarm 文章读起来很好,很好地解释了为什么应该实施此设置,我将尝试通过说通用强化来总结它,这有助于防止因工作负载受损或不良行为者而引起的特权升级。)

来源:
1.) Kubernetes Security Essentials (LFS260)
2.)保护 Kubernetes 集群组件的配置
3.)使用节点授权

于 2021-04-20T03:24:55.853 回答