65.9K
CodeProject 正在变化。 阅读更多。
Home

Kubernetes 最佳实践:安全性

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2020年7月21日

CPOL

3分钟阅读

viewsIcon

4183

在本文中,我们将探讨三个常见的安全挑战,以及如何克服这些挑战。

Kubernetes 最佳实践:安全性

Kubernetes 抽象了足够多的基础设施层,以便开发人员可以自由部署,同时运维团队可以保留对重要的治理和风险控制的访问权限。 挑战在于,不熟悉 Kubernetes 的开发团队可能会忽略一些关键的安全功能。 通常,让某事正常工作的最简单方法是削弱其安全性。

让我们看看三个常见的安全挑战,以及如何克服它们。

良好的流量突增 vs. 糟糕的流量突增

Kubernetes 对流量突增反应良好——无论是好是坏。 如果您看到合法的流量突增,Kubernetes 将扩展以满足需求的增长。 您的应用程序将在集群中消耗更多资源,而不会降低性能。 这是一个主要优势。 但是,如果发生拒绝服务 (DoS) 攻击,Kubernetes 将执行完全相同的操作,您将为流量超载付出代价。

K8S 最佳实践 #1 – 设置以下限制

  • 每个 IP 地址的并发连接数
  • 每个用户每秒、每分钟或每小时可以发出的请求数
  • 请求主体的大小
  • 并针对各个主机名和路径调整这些限制

授予安全级别的访问权限

部署新应用程序或配置新用户最简单的方法是授予管理员权限。 但这也是最危险的方法 - 如果攻击者获得对该帐户的访问权限,他们将可以访问所有内容。

K8S 最佳实践 #2 – 采用基于角色的访问控制 (RBAC) 来遵循最小权限原则

RBAC 允许您向用户授予对 Kubernetes API 资源的精细访问权限。 您应该使用 RolesClusterRoles 定义访问配置文件。 使用 Roles,您将授予对单个命名空间的访问权限。 使用 ClusterRoles,您可以授予对没有命名空间的资源(如 NodesPersistentVolumes)以及所有命名空间资源的访问权限。

虽然 RBAC 配置可能令人困惑和冗长,但像 rbac-manager 这样的工具可以帮助简化语法。 这有助于防止错误,并提供更清晰的了解谁有权访问什么。

最终结果? 通过仅授予工作负载执行其工作所需的权限,您将限制攻击者对 Kubernetes 环境造成的损害。

保持 Kubernetes Secrets 的机密性

如果您使用 Kubernetes 基础设施即代码 (IaC) 模式,您将受益于拥有完全可重现的环境。 但这里有一个问题 - 您的部分基础设施可能包括 Kubernetes Secrets,它存储和管理敏感信息,例如密码、OAuth 令牌和 ssh 密钥。 您不应将 Secrets 添加到您的 IaC 存储库。

将 Kubernetes Secrets 签入您的基础设施即代码存储库以便您的构建是 100% 可重现的,这很诱人。 但是,如果您关心安全性,请不要这样做。 一旦签入,您的 Secrets 将永久暴露给任何有权访问您的 Git 存储库的人。

K8S 最佳实践 #3 - 在将您的 secrets 签入到您的基础设施存储库之前对其进行加密

解决方案是折中方案:加密所有 secrets,以便您可以安全地将它们签入您的存储库,而无需担心暴露它们。 然后,您只需访问一个加密密钥即可“解锁”您的 IaC 存储库,并拥有完全可重现的基础架构。 像 Mozilla 的 SOPS 这样的开源工具可以帮助解决这个问题。

您可以阅读更多关于 k8s 安全的最佳实践,了解我们如何为客户的托管 Kubernetes 部署实施安全措施。

您还可以查看围绕效率的 Kubernetes 最佳实践

© . All rights reserved.