前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kube-scan 和 KCCSS

kube-scan 和 KCCSS

作者头像
崔秀龙
发布2020-03-10 17:06:35
7260
发布2020-03-10 17:06:35
举报
文章被收录于专栏:伪架构师

在 Kubernetes 中使用声明式 API 来定义工作负载,因为工作负载的灵活多变,这种定义的随意性是很大的,很容易因为复制黏贴、手工运维等原因给 Pod 分配不需要的特权,造成安全隐患。kube-scan 就是针对这种情况而出现的一个工具,它根据内置的二十几个检查项目,对工作负载描述的安全性进行打分,从最安全的 0 分,到最危险的 10 分。

kube-scan 所使用的计分项和算法,被称为 Kubernetes Common Configuration Scoring System (KCCSS),是一套仿造 CVSS 的 Kubernetes 配置评分系统,它从对完整性、可用性和保密性三个方面的威胁来评价安全漏洞,评分标准对降低工作负载安全性的评价,如果在同样方面已经做出了合适的补救措施,还可以挽回这部分的扣减。

快速开始

老一套的部署方式:

代码语言:javascript
复制
$ kubectl apply -f \
    https://raw.githubusercontent.com/octarinesec/kube-scan/master/kube-scan.yaml
namespace/kube-scan created
configmap/kube-scan created
serviceaccount/kube-scan created
clusterrole.rbac.authorization.k8s.io/kube-scan created
clusterrolebinding.rbac.authorization.k8s.io/kube-scan created
deployment.apps/kube-scan created
service/kube-scan-ui created

可以看到创建了一个新的命名空间 kube-scan,其中有一个 kube-scan-ui:80 的服务。尝试访问一下,页面会显示出当前集群中运行的有风险载荷,例如使用 Helm 缺省安装的 Traefik:

点击 show more,会显示对应问题的详细信息:

往前一步

通过对部署文件的观察,会发现这个 Pod 里有两个容器,分别命名为 kube-scan-uikube-scan,粗浅判断这是一个前后端分离的任务。在浏览器中打开调试工具,会发现对 <host-name>/api/risks 的访问,直接访问这个地址,会拿到一个 JSON 响应:

代码语言:javascript
复制
{
    "data": [{
        "kind": "Deployment",
        "name": "traefik-1583034161",
        "namespace": "infra",
        "domain": "",
        "risk": {
            "riskScore": 7,
            "riskCategory": "Medium",
            "riskItems": [{
                    "name": "AllowPrivilegeEscalation",
                    "riskCategory": "Low",
                    "type": "Basic",
                    "title": "Workload allows privilege escalation",
                    "shortDescription": "Privilege escalation allows programs inside the container to run as root",
                    "description": "Privilege escalation allows programs inside the container to run as root, even if the main process is not root, which can give those programs control over that container, host and even cluster",
                    "confidentiality": "Low",
                    "confidentialityDescription": "Root processes that can escape the containers have the ability to read secrets from Kubernetes, Docker and other applications",

这样一来,我们就可以考虑,将 UI 部分去掉,仅留下后端服务。如此一来,就可以通过简单的代码,把扫描过程集成到日常运维工作之中了。

另外一些小秘密

kube-scan 的文档非常贫瘠,因此只能从 YAML 和源码中找到一些东西。

刷新时间

YAML 中有一个环境变量 KUBESCAN_REFRESH_STATE_INTERVAL_MINUTES,原定的刷新时间是 1440 分钟也就是 24 小时。修改这一变量就能进行更快的刷新了。

KCCSS 配置

安装过程中生成了一个 Configmap 对象 kube-scan,其中保存了 kube-scan 的评价标准,在他的代码中可以看到已经支持的各种威胁和补救措施。basic 节点中列出了目前能够判断的威胁列表,例如下面的定义:

代码语言:javascript
复制
- name: "privileged"
  title: "Workload is privileged"
  shortDescription: "Processes inside a privileged containers get full access to the host"
  description: "..."
  confidentiality: "High"
  confidentialityDescription: "..."
  integrity: "Low"
  integrityDescription: "..."
  availability: "Low"
  availabilityDescription: "..."
  exploitability: "Moderate"
  attackVector: "Local"
  scope: "Host"
  handler: "IsPrivileged"

其中有一些非常易读的关键信息,例如问题的名称、标题、描述,以及对完整性、可用性和保密性的影响级别,最后是攻击来源、难度和范围。

评分方法

定时对工作负载进行检查,然后调用源码 formula.go 中实现的评分过程,整体流程如下:

  • GetHandler 根据配置文件中的 handler 字段获取处理方法。
  • 用查询到的 Handler 函数对工作负载进行检查,如果存在该问题,则根据问题涉及范围,检查该工作负载是否已经有针对性的进行了加固,以此来调整该项目得分。
  • 根据 Risk 和 Remediation 生成结果列表。

注意如下命名空间是硬编码忽略的 {“octarine”, “kube-system”, “kube-public”, “octarine-tiller”, “istio-system”, “octarine-dataplane”, “kube-scan”}

结论

  • KCCSS 和 kube-scan 两个项目的文档都非常稀少,很不友好。
  • 特征库更新困难,需要同时更新源码和配置。
  • 仅提供了对全集群进行扫描,如果能加入单个对象进行检查的手段可能会更加实用。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伪架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速开始
  • 往前一步
  • 另外一些小秘密
    • 刷新时间
      • KCCSS 配置
        • 评分方法
          • 结论
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档