关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告

阿里云容器服务Kubernetes已修复CVE-2018-18264漏洞,该漏洞影响Kubernetes Dashboard v1.10及以前版本,可能导致用户身份认证跳过和集群秘钥泄露。阿里云托管的Dashboard已进行安全增强,不受影响。

阿里云容器服务Kubernetes 已修复Dashboard漏洞CVE-2018-18264,本文介绍该漏洞的影响版本及解决方法。阿里云容器服务Kubernetes内建的Kubernetes Dashboard是托管形态且已进行过安全增强,不受此漏洞影响。

背景信息

Kubernetes社区发现Kubernetes Dashboard安全漏洞CVE-2018-18264:使用Kubernetes Dashboard v1.10及以前的版本有跳过用户身份认证,及使用Dashboard登录账号读取集群秘钥信息的风险 。

阿里云容器服务Kubernetes内建的Kubernetes Dashboard是托管形态且已进行过安全增强,不受此漏洞影响。

安全漏洞 CVE-2018-18264的详细信息,请参考:
https://github.com/kubernetes/dashboard/pull/3289
https://github.com/kubernetes/dashboard/pull/3400
https://github.com/kubernetes/dashboard/releases/tag/v1.10.1

影响版本

如果您的Kubernetes集群中独立部署了Kubernetes Dashboard v1.10及之前版本(v1.7.0-v1.10.0),同时支持登录功能且使用了自定义证书。

解决方法

  • 如果您不需要独立部署的Dashboard,请执行以下命令,将Kubernetes Dashboard从集群中删除。
kubectl --namespace kube-system delete deployment kubernetes-dashboard
  • 如果您需要独立部署的Dashboard,请将Dashboard升级到v1.10.1版本,请参考https://github.com/kubernetes/dashboard/releases/tag/v1.10.1
  • 如果您使用阿里云容器服务Kubernetes版本托管的Dashboard,由于阿里云容器服务Kubernetes版本对此进行过安全增强,不受此漏洞影响,您仍可以直接在容器服务管理控制台上使用Dashboard
执行 `kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml` 命令后输出信息的含义如下: ```plaintext namespace/kubernetes-dashboard created serviceaccount/kubernetes-dashboard created service/kubernetes-dashboard created secret/kubernetes-dashboard-certs created secret/kubernetes-dashboard-csrf created secret/kubernetes-dashboard-key-holder created configmap/kubernetes-dashboard-settings created role.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created deployment.apps/kubernetes-dashboard created service/dashboard-metrics-scraper created deployment.apps/dashboard-metrics-scraper created ``` - `namespace/kubernetes-dashboard created`:创建了一个名为 `kubernetes-dashboard` 的命名空间,用于隔离 Kubernetes Dashboard 相关的资源。 - `serviceaccount/kubernetes-dashboard created`:在 `kubernetes-dashboard` 命名空间中创建了一个名为 `kubernetes-dashboard` 的服务账户,用于 Kubernetes Dashboard 与集群进行交互。 - `service/kubernetes-dashboard created`:创建了一个名为 `kubernetes-dashboard` 的服务,用于暴露 Kubernetes Dashboard 的应用。 - `secret/kubernetes-dashboard-certs created`:创建了一个名为 `kubernetes-dashboard-certs` 的密钥,用于存储 Kubernetes Dashboard 的证书。 - `secret/kubernetes-dashboard-csrf created`:创建了一个名为 `kubernetes-dashboard-csrf` 的密钥,用于防止跨站请求伪造(CSRF)攻击。 - `secret/kubernetes-dashboard-key-holder created`:创建了一个名为 `kubernetes-dashboard-key-holder` 的密钥,用于存储一些关键信息。 - `configmap/kubernetes-dashboard-settings created`:创建了一个名为 `kubernetes-dashboard-settings` 的配置映射,用于存储 Kubernetes Dashboard 的配置信息。 - `role.rbac.authorization.k8s.io/kubernetes-dashboard created`:在 `kubernetes-dashboard` 命名空间中创建了一个名为 `kubernetes-dashboard` 的角色,用于定义对命名空间内资源的访问权限。 - `clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created`:创建了一个名为 `kubernetes-dashboard` 的集群角色,用于定义对整个集群资源的访问权限。 - `rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created`:在 `kubernetes-dashboard` 命名空间中创建了一个名为 `kubernetes-dashboard` 的角色绑定,将服务账户与角色进行绑定。 - `clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created`:创建了一个名为 `kubernetes-dashboard` 的集群角色绑定,将服务账户与集群角色进行绑定。 - `deployment.apps/kubernetes-dashboard created`:创建了一个名为 `kubernetes-dashboard` 的部署,用于管理 Kubernetes Dashboard 的 Pod。 - `service/dashboard-metrics-scraper created`:创建了一个名为 `dashboard-metrics-scraper` 的服务,用于暴露指标收集器的应用。 - `deployment.apps/dashboard-metrics-scraper created`:创建了一个名为 `dashboard-metrics-scraper` 的部署,用于管理指标收集器的 Pod。 ### 后续操作 #### 1. 检查资源状态 使用以下命令检查创建的资源状态: ```bash kubectl get all -n kubernetes-dashboard ``` 确保所有的 Pod 都处于 `Running` 状态。 #### 2. 配置访问方式 可以通过 NodePort 类型的 Service 从外部访问 Kubernetes Dashboard。编辑 `recommended.yaml` 文件,添加 `nodePort` 和 `type: NodePort` 配置: ```yaml --- kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: ports: - port: 443 targetPort: 8443 nodePort: 30002 type: NodePort selector: k8s-app: kubernetes-dashboard ``` 保存修改后,再次应用配置文件: ```bash kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml ``` #### 3. 创建访问令牌 为了登录 Kubernetes Dashboard,需要创建一个 Service Account 和对应的令牌。以下是创建 Service Account 和令牌的示例命令: ```bash kubectl create serviceaccount admin-user -n kubernetes-dashboard kubectl create clusterrolebinding admin-user-binding --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user kubectl -n kubernetes-dashboard create token admin-user ``` 复制获取到的令牌,用于登录 Dashboard。 #### 4. 访问 Kubernetes Dashboard 在浏览器中输入 `https://<节点 IP>:30002`(30002 为之前配置的 `nodePort`),打开 Kubernetes Dashboard 登录页面。选择 `Token` 登录方式,粘贴之前获取的令牌,点击 `Sign in` 登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值