第 19 章 安全 安全
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
Kubernetes 是一个用于协调云本地应用程序的强大平台。然而,在我们熟知和喜爱的 API 和工具的外衣下,隐藏着一个大型、复杂的分布式系统,需要专门的知识才能确保其安全。确保 Kubernetes 的安全是一个复杂的话题,老实说需要自己写一本书;但是,如果你忽视了花时间去理解和实施安全最佳实践,就会有很大的风险,所以我们在这里简要地介绍一下。如果不正确保护 Kubernetes 集群和工作负载的安全,就有可能将数据和资源暴露给黑客、恶意软件和未经授权的访问。我们将不厌其烦地介绍一些主要的安全领域,并提供最佳实践来帮助大家。
鉴于 Kubernetes 的复杂性,我们建议将问题分解成逻辑层,这样您就可以专注于每一层的特定工具。处理安全问题的一个好方法是遵循 "纵深防御 "策略。这需要在每一层使用多种安全措施来保护 Kubernetes 和您的工作负载。此外,还要牢记 "最小特权 "原则,即用户和工作负载只能访问其执行功能所绝对需要的内容。这一切在理论上听起来很不错,但在实践中是什么样子呢?本章介绍了一种将安全问题分层归类的方法,这将帮助你关注可用的解决方案和工具,以及集群安全、容器安全和代码安全。
其他章节(包括第4章至第11 章)已详细介绍了许多安全最佳实践。我们鼓励你回顾这些章节,因为我们不会在这里再次详细介绍这些特定主题,而是将重点放在我们未涉及的领域。尤其是,本章将重点关注各层;深入挖掘各层,涵盖安全领域,并提供各层的最佳实践。
集群安全
鉴于Kubernetes 控制平面是通过一组 API 公开的,保护集群安全的第一步就是规范和限制谁可以访问集群以及他们可以执行哪些操作。接下来,我们将介绍 Kubernetes 控制平面的不同部分以及如何确保它们的安全。
etcd 访问
Kubernetes 的默认存储系统是 etcd。必须使用不共享的强凭证,确保只有 Kubernetes API 服务器才能访问 etcd。还必须使用网络防火墙,确保只有 API 服务器才能通过网络访问 etcd。直接访问 etcd 会绕过所有后续安全措施,因此这是一个非常重要的安全层。
认证
Kubernetes提供多种不同的身份验证方法,从承载令牌和证书到 OpenID Connect (OIDC) 和轻量级目录访问协议 (LDAP) 集成。选择适合企业需求的正确身份验证模型非常重要。安全挑战通常出现在 Kubeconfig 文件的创建、分发和存储过程中,用户需要使用kubectl 等工具对 Kubernetes 进行身份验证。使用身份验证提供商可以检索临时动态令牌,而不是使用可被恶意行为者轻易检索的静态令牌或证书。已有论文介绍了 Kubeconfig 文件中存储的恶意代码实例,因此控制其创建和分发非常重要。
授权
我们在第 17 章中介绍了授权;不过,在 Kubernetes 安全的背景下,它是一个强大的工具,可以强制执行谁可以在哪些资源上执行哪些操作。您可以使用的主要工具是基于角色的访问控制(RBAC)。值得庆幸的是,Kubernetes 提供了合理的默认设置;不过,你需要考虑纳入团队成员等属性以及命名空间,以此来扩展需要创建的 RBAC 资源数量,以支持不断增长的工作负载和用户。使用 RBAC 锁定服务账户也非常重要,以确认需要访问 Kubernetes API 的工作负载只能访问执行其功能所需的最小操作。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access