7 步保障 Kubernetes 集群安全( 二 )

[“*”]或一揽子访问 。4. 提高节点安全性首先加强运行 pod 节点安全性:

  • 配置的标准和基准 。根据安全建议配置主机 。使用与特定 K8s 版本相关的 Internet 安全中心基准验证集群 。
  • 最小化管理访问 。通过限制管理访问来减少 K8s 节点上的攻击面 。
  • 节点上进行隔离和约束 。在特定节点上执行特定的 pod , 这样可以确保 pod 在具有特定隔离和安全设置的节点上运行 。
向节点对象添加标签以允许 pod 专门针对节点 , 从而控制 pod 可以访问哪些节点 。应用节点标签后 , 将节点选择器添加到 pod 部署中 , 以便 pod 对所选节点进行显着更改 。
5. 控制 kubelet 访问权限kubelet 发挥着在每个集群节点上持续运行的操作员的作用 。它通过 API 与用户通信 , 这些 API 管理试图在节点上运行并执行特定任务的 pod 。未经授权向 kubelet 披露为攻击者提供了 API 访问权限 , 并可能危及节点或集群的安全 。
要减少攻击面并防止通过 kubelet 对 API 进行未经授权的访问 , 请执行以下步骤:
  • 在启动 kubelet 之前 , 将 -anonymous-auth 标志设置为false以禁用匿名访问:-anonymous-auth=false
  • 使用 -kubelet-client-certificate-kubelet-client-key标志开始 Kube-Episerver 命令 。这可确保 API 服务器对 kubelet 进行身份验证并防止匿名请求 。
  • kubelet 提供了一个只读 API , 管理员无需登录即可使用 。这样可能会暴露潜在的敏感集群信息 , 管理员应使用以下命令关闭只读端口:—read-only-port=0
6. 配置命名空间和网络策略命名空间将敏感工作负载与非敏感工作负载区分开来 。处理多个命名空间可能会有些困难 , 但这使得实现安全控制变得更简单 , 例如管理性能的网络策略以调节进出 pod 的流量 。
7. 启用审计日志启用 K8s 审计日志并监督它们是否存在非法行为和可疑的 API 调用 。K8s 可以保存集群活动的详细记录 , 所以我们可以立即在审核日志中检测到可能的安全问题 。例如 , 攻击者试图暴力破解密码可能会创建身份验证和授权日志 。如果这些行为反复出现 , 则可能存在安全问题 。
要启用审计日志 , 需使用 K8s 审计策略 , 允许管理员根据情况配置审计级别:
  • None – 与此规则匹配的事件将不会被记录 。
  • Metadata –记录请求的元数据 , 例如请求用户、时间戳、资源和动词 。
  • Request –记录事件的元数据以及请求正文 , 但不记录响应正文 。这不适用于对非资源的请求 。
  • RequestResponse – 跟踪事件元数据、请求和响应正文 。这不适用于对非资源的请求 。
这些信息的大部分由 K8s 审计日志记录 , 并且与集群 API 的简单结合允许您将这些日志发送到外部日志记录和存储解决方案 。同时还可以生成仪表板、可疑行为警报和事件调查报告 。
总结依赖 K8s 作为后端的 DevOps 团队必须意识到集群和可以在其中运行的 Docker 容器可能面临的所有风险和攻击 。由于可用的攻击向量种类繁多、技术的不断进步以及该工具的一致、广泛采用 , 恶意攻击者发现渗透集群能够有效发起攻击并获得利益 。保护 K8s 集群是一项艰巨的任务 , 密切关注并尽可能检测系统漏洞或恶意攻击行为至关重要 。

经验总结扩展阅读