【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

利用零信任原则保障 Kubernetes 环境访问安全

  • 2022-08-28
    北京
  • 本文字数:3026 字

    阅读完需:约 10 分钟

利用零信任原则保障Kubernetes环境访问安全

随着 Kubernetes 集群和容器化应用程序越来越多,组织将日益暴露在运营一两个集群时并不明显的安全风险之下。因此,平台团队需要为整个 Kubernetes 基础设施的集群和应用实现集中式的企业级安全与控制。


本文最初发布于 The New Stack 博客。


现代 IT 环境变得越来越动态。举例来说,Kubernetes拓展了许多组织的可能性边界。开源技术在容器化应用程序自动部署、扩展性和管理方面有诸多好处。特别地,IT 团队可以利用其强大的功能、有效性和灵活性快速开发现代应用程序并大规模交付。


然而,为 Kubernetes 环境安全强化实践提供保障的流程面临着越来越大的挑战。随着分布在本地数据中心、多公有云提供商和边缘位置的 Kubernetes 开发和生产集群数量越来越多,这种相对较新的动态操作模型给访问控制带来了很大的复杂性。


由于大部分团队都有多个集群在多个位置运行——通常使用不同的发行版,有不同的管理界面——企业 IT 部门需要考虑到,开发、运营、承包商和合作伙伴团队需要不同级别的访问权限。


考虑到 Kubernetes 的分布式和可扩展特性,IT 部门必须尽一切可能确保访问安全性,避免正在发生的错误。下面我们将介绍如何应用 Kubernetes 零信任原则来保护整个环境,为容器提供零信任安全。

Kubernetes 集群零信任访问

零信任是一个安全模型,它会自动假设所有在网络中或网络间进行操作的人、系统和服务都是不可信任的。零信任正成为预防恶意攻击的最佳技术。以身份验证、授权和加密技术为基础,零信任的目的是持续验证安全配置和态势,确保整个环境值得信任。


以下是对 Kubernetes 基本工作原理的一个简单说明:


  • 对于每个集群,Kubernetes 控制平面的核心是 Kubernetes API 服务器。

  • 可以调用 API 来查询和操作所有 Kubernetes 对象的状态。

  • Kubernetes 对象包括命名空间、pod、配置信息等。API 访问控制是管理 Kubernetes 访问、实现零信任的关键功能。保障 Kubernetes 集群访问安全的第一步是通过传输层安全(TLS)来保护流入/流出 API 服务器的流量。



图片来源:kubernetes.io


API 服务器实现零信任的最佳实践:


  • 启用所有地方的 TLS。

  • 使用 API 服务器的私有端点。

  • API 服务器使用第三方身份验证。

  • 关闭 API 服务器的防火墙入站规则,确保它是隐形的,不能直接从 Internet 访问。在确保传输层安全后,Kubernetes 还要包含必要的钩子,用于实现零信任,并控制对每个 Kubernetes 集群的 API 服务器的访问。这些钩子代表了 Kubernetes 坚固安全态势的 4 个关键领域:

  • 身份验证

  • 授权

  • 准入控制

  • 日志和审计

Kubernetes 身份验证

在零信任原则下,所有与 Kubernetes 集群关联的用户账号和服务账号在执行 API 调用之前都要进行身份验证。有许多安全模块和插件可以保证 Kubernetes 平台在团队首选的身份验证系统下有效运行:


  • HTTP Basic Auth

  • 身份验证代理(为支持 LDAP、SAML、Kerberos 等)

  • 客户端证书

  • 无记名令牌(Bearer tokens)

  • OpenID Connect 令牌

  • Webhook Token 身份验证常见的身份验证最佳实践至少会启用两种身份验证方法(多因素身份验证或 MFA)并定期轮换客户端证书。

Kubernetes 授权

任何用户账号或服务账号一旦通过身份验证就可以访问 Kubernetes 集群并执行任何可能的操作,这种情况一定要减少。零信任的思想是,只有当通过身份验证的用户有必要的权限完成所请求的动作时,才会对请求授权。对于发起的每一个请求,该模型都要求指明用户名、动作和受影响的 Kubernetes 集群对象。


Kubernetes 支持的授权方法有很多种,包括:


  • 基于属性的访问控制(ABAC)根据用户、环境和资源属性的组合动态进行访问授权。

  • 基于角色的访问控制(RBAC)根据用户在组织中的角色(如开发人员、管理员、安全员等)进行访问授权。组织最常用的方式是 RBAC,因为它很实用,管控也比较简单,而且提供了大多数情况所需的粒度。在行业中,常见的做法是启用最小权限的 RBAC。


ABAC 提供了额外的粒度,但也需要额外的时间和资源来定义并做适当的配置。然而,ABAC 方法的问题排查更具挑战性。因此,常见的做法是启用最小权限的 RBAC。

Kubernetes 准入控制

准入控制器提供了一种实现业务逻辑的方法,用于改进 Kubernetes 的零信任方法。它的用途是使系统可以自动响应创建、修改、删除或连接 Kubernetes 对象的请求。有时候,可能需要启用多个准入控制器才能满足组织的需求,如果一个特定的请求被其中任何一个拒绝,则系统也会自动拒绝。


目前,Kubernetes 内置的各种准入控制器为团队执行策略及实现各种操作提供了大量的选项。动态控制器可以快速修改请求,以满足既定规则集的要求。例如,ResourceQuota 准入控制器可以监视入站请求,确保它们不会违反 ResourceQuota 对象中列出的命名空间约束。要了解更多信息,可查阅文档“准入控制器的用法”。

Kubernetes 日志和审计

审计功能对于 Kubernetes 安全态势至关重要,可以提供集群内已执行操作的跟踪记录。这些功能可以跟踪任何用户、应用程序以及控制平面本身的任何操作。


审计等级有 4 种类型:


  • None —— 不记录这个事件

  • Metadata —— 记录请求元数据

  • Request —— 记录事件元数据和请求

  • RequestResponse —— 记录事件元数据、请求和响应除了指定审计等级,团队还可以控制被审计事件的存储位置。日志后端会将事件写入集群的本地文件系统,然后由 Webhook 后端将审计事件发送到一个外部日志系统。

扩展零信任架构

虽然上面介绍的方法和实践可以提供创建零信任环境的能力,但当要管理的 Kubernetes 集群很多时,恰当地配置和调整所有这些元素将变得更具挑战性。当涉及多工作负载和 Kubernetes 发行版时,情况会变得尤其复杂。这不是一项新挑战,是如今许多公司都面临的问题。


例如,让我们考虑这样一个情况。公司管理着 100 个 Kubernetes 集群——从开发到 QA,再到过渡,然后生产——而且,这些集群要在地理上靠近其全球客户群,以便他们的应用程序可以处理实时的视频和音频数据流。


要确保 Kubernetes 集群用户访问安全,公司需要解决以下三个问题:


  1. 假如该公司有几百名开发人员和几十名 IT 运维人员,每个集群添加或删除用户都需要手动完成,那么这项艰苦的工作所解决的问题会比所导致的问题还多。

  2. 如果发生意外事件,则修复时间至关重要。如果访问方法要耗掉问题排查人员几分钟的时间才允许他登录到受影响的集群,那么问题可能会加重。

  3. 由于日志分散在 100 个集群里,所以不大可能提供审计和合规性报告的全局视图。

平台团队注意事项

在企业平台团队的众多目标中,其中一个是使全球的分布式 IT 团队能够集中管理用户对其所有集群的访问。目的是,既有效地保护和管理对 Kubernetes 基础设施的访问,又大幅简化审计日志和合规性报告。


平台团队应考虑实现 Kubernetes 零信任访问,确保之前介绍的最佳实践得以应用和执行,从而保证整个 Kubernetes 环境的安全。避免手动在每个集群上应用最佳实践,那样可以大幅减低 IT 组织在大规模操作 Kubernetes 时的风险。


平台团队在设计 Kubernetes 零信任访问时应考虑以下三个方面的收益:


  1. 使 RBAC 超级灵活:如果一名团队成员的角色变了,那么访问权限应该自动更新,这样,任何人的权限都不会超出或少于他的角色。

  2. 使访问快速简单:通过安全单点登录让授权用户可以无缝访问,消除访问任何集群的延迟。

  3. 即时场景凭证:授权用户的服务账号应该在用户访问时在远程集群上即时创建,并在用户登出后自动删除,从而避免出现证书过期的情况。随着 Kubernetes 集群和容器化应用程序越来越多,组织将日益暴露在运营一两个集群时并不明显的安全风险之下。因此,平台团队需要为整个 Kubernetes 基础设施的集群和应用实现集中式的企业级安全与控制。


原文链接:

Securing Access to Kubernetes Environments with Zero Trust

2022-08-28 17:515106

评论

发布
暂无评论
发现更多内容

低代码平台提升软件开发速度

这我可不懂

软件开发 低代码 JNPF

au音频编辑 Audition 2022 中文激活版

真大的脸盆

Mac Mac 软件 音频编辑 音频处理 编辑音频

AI版女网红“半藏森林”上线,服务项目让人意想不到

引迈信息

人工智能 AI 低代码 JNPF

大模型时代下的企业系统架构变革

蔡超

架构 AI 大模型 GPT ChatGPT

inBuilder低代码平台特性推荐系列-第三期

inBuilder低代码平台

华为云GaussDB入选“2022年数字技术融合创新应用解决方案”

轶天下事

听说最近AI应用爆了?!来AI Studio玩转大模型应用

飞桨PaddlePaddle

百度飞桨

大数据公司数据分析取数流程以及SQL示例

MobTech袤博科技

朱珠代言Moto razr40登618手机榜首,小折叠成新摩登主义造风者

科技之家

【零售电商系列】走进电商

小诚信驿站

6 月 优质更文活动

GaussDB数据库事务介绍

平平无奇爱好科技

音乐人解密:究竟是如何一步一步成为音乐人的?

懒得勤快

利用 AWS CodeWhisperer 激发孩子的编程兴趣

Jerry Wang

人工智能 AI AWS AIGC 代码生成器

ChatGPT会取代低代码开发平台吗?

力软低代码开发平台

精选一线企业最佳生产实践,《Apache Doris 用户案例集》重磅发布!

SelectDB

数据库 大数据 数据分析 实时数仓 Doris

华为云GaussDB助力MetaERP构建“收入成本”产品,高效支撑华为多业务

轶天下事

ChatGPT热度不减!华为宣布入局,盘古GPT能否大杀四方!

加入高科技仿生人

低代码 数智化 ChatGPT 文心一言 通义千问

你说的是哪一种 IDP:内部开发者门户 OR 内部开发者平台?

杨振涛

DevOps 平台工程 内部开发者平台 内部开发者门户 IDP,

区块链代币DAPP通缩燃烧模式系统开发技术方案

I8O28578624

ChatGPT与软件架构(4) - 架构师提示工程指南

俞凡

人工智能 架构 ChatGPT

多模块项目使用枚举配置spring-cache缓存

javalover123

Java lombok Enum spring-boot spring-cache

ChatGPT与软件架构(3) - 软件架构提示工程

俞凡

人工智能 架构 ChatGPT

国产芯片开发为什么这么难?2023 中国芯片开发者调查报告发布

博文视点Broadview

九科信息获评“第一新声”最佳信创企业管理软件,案例入选信创产业研究报告

九科Ninetech

ChatGPT与软件架构(2) - 基于Obsidian和GPT实现解决方案架构自动化

俞凡

人工智能 架构 ChatGPT

ChatGPT 之后,B 端产品设计会迎来颠覆式革命吗?| Liga妙谈

LigaAI

交互设计 产品设计与思考 tob产品 ChatGPT 企业号 6 月 PK 榜

面试官问:kafka为什么如此之快?

JAVA旭阳

kafka

架构实战营模块 1 第 4 课 - 如何做好架构设计

净意

龙蜥社区 5 月度运营大事件回顾

OpenAnolis小助手

开源 总结 生态 龙蜥社区 运营月报

深入剖析Redis性能问题及优化方案

xfgg

redis 优化 6 月 优质更文活动

使用Leangoo领歌敏捷工具实施多团队规模化敏捷管理

顿顿顿

项目管理 敏捷项目管理 敏捷工具 scrum工具

利用零信任原则保障Kubernetes环境访问安全_文化 & 方法_Kyle Hunter_InfoQ精选文章