标签标准和Kubernetes安全性的最佳实践

本文讨论了标签标准和最佳实践 Kubernetes.安全是一个我看到组织努力定义满足其安全要求所需的标签集的公共区域。我的建议是始终从一个分层安全设计开始,可以实现企业安全性和合规性要求,然后定义与您的设计对齐的标签标准。

Opis.

这并不意味着成为您所有标签要求的全面指南,而是一个框架指导您通过开发自己的标签标准来满足您的特定安全要求。

Kubernetes.网络策略标签

标签是连接到Kubernetes对象的键/值对,以识别对用户直观的属性,并且特定目的需要,例如库存报告或意图的执行。

标签分类

Kubernetes.网络策略代表使用标签匹配预期端点来实现对POD的安全控件的意图。标签前缀可用于识别标签分类。以下短名单是开发Kubernetes网络策略设计所需的端点的​​高级分类:

  • 多租户
  • 应用微分段
  • 外部端点
  • 主机端点

标签范围

定义网络策略所需的标签可以具有以下范围:

  • 命名空间:可用于定义多租户控件。基于角色的访问控制(RBAC)可用于限制命名空间的创建或修改,以确保符合高级多租户控件。
  • :可用于在一个或多个名称空间的上下文中定义应用程序微段控件。
  • networkset.: 印花布 用于定义由在给定命名空间中访问或需要访问POD的群集外部的端点的命名资源。
  • GlobalNetworkset.:Calico全局资源,用于定义由任何命名空间中访问或需要访问窗口的群集外部的端点。

保留标签键

您通常希望限制某些标签密钥的使用,这对于群集的完整性至关重要。限制可以在运行时或在运行时实现 CI / CD管道 通过突变或验证Webhooks。以下是您需要保留的标签的示例:

  • * Kubernetes *:为Kubernetes节点保留
  • * Tigera *和* Calico *:为Calico组件保留
  • 用于Kubernetes分发或管理Kubernetes环境的平台应用程序或主机的任何其他标识符

多租户标签

多租户标签可用于识别属于给定租户的端点,或在共享服务的情况下潜在多个租户。然后可以在网络政策中选择这些端点,以定义东西方或南北租户控制。建议将多租户标签附加到POD和命名空间。根据您的企业架构,您对租户的定义可能包括以下任何一种:

  • 业务部门
  • 开发团队
  • 应用
  • 客户
  • 共享服务
  • 环境
  • 遵守
  • 资产分类

多租户标签的典型标准:

  • 秒。<organization_domain>/tenant-id: <tenant-uid>
  • 秒。<organization_domain>/environment: <dev|test|prod>
  • 秒。<organization_domain>/compliance: <合规 - 要求-UID>

笔记:

  • SEC:代表安全性的前缀,并识别多租户所需的标签
  • 租户 - UID:环境中租户的唯一标识符(例如,Sec.tigera.io/tenant-id:tigera-customer-success-dev)
  • 合规要求 - UID:给定合规环境的唯一标识符(例如,sec.tigera.io/compliance:PCI-DSS-Marketplace)

应用微分段标签

应用微分段标签可用于识别给定应用程序的超级服务的端点。然后可以在网络政策中选择这些端点,以定义East-West和南北控制的用于微服务通信。

通常,每个命名空间之后的部署模型适合大多数客户要求,除了共享服务,通常需要在自己的命名空间中部署到多个租户中访问。建议您将应用程序微分段标签附加到POD。

根据您的应用程序架构,应用程序微段标签可能包含以下任何一种:

  • 应用
  • 服务
  • 应用程序层
  • 版本

典型的应用微分段标准标准:

  • 应用程序。<organization_domain>/name: <app-uid>
  • 应用程序。<organization_domain>/instance: <app-instance-uid>
  • 应用程序。<organization_domain>/version: <app-version>
  • 应用程序。<organization_domain>/service: <svc-uid>
  • 应用程序。<organization_domain>/tier: <app-tier>

外部端点标签

外部端点标签可用于识别群集外部的端点。然后可以在网络策略中选择这些端点,用于定义南北控件,用于从群集端点和群集端点的出口和入口通信。

进入
  • 从受信任的负载平衡器为您的租户提供公开的服务
  • 来自传统基础架构中的受信任子网
  • 来自可信赖的伙伴
出口
  • 在您的遗产基础架构中的服务
  • 要相信外部API服务
  • 到可信存储库
  • 对信任的面料服务

典型的外部端点标签标准:

  • EEP。<organization_domain>/ingress-lb: <租户身份负载平衡器>
  • EEP。<organization_domain>/egress-api: <tenant-id-api>
  • EEP。<organization_domain>/egress-db: <tenant-id-db>
  • EEP。<organization_domain>/egress-repo: <tenant-id-repo>

笔记:

  • EEP:识别外部端点的前缀

主机端点标签

主机端点标签可用于识别群集主机或外部主机。然后可以在网络策略中选择这些端点以定义以下控件:

  • 集群主机:南北和东方控件用于主机到主机,Pod-to-Host和Pods,具有主机网络通信。这是集群硬化和实现控制平面和管理平面控制所必需的。
  • 外部主机:北南南北和东方控件用于托盘或虚拟机上托管的主机和遗留应用。这对于将云原生控件扩展到集成或迁移方案中的传统主机来实现。

根据您的Kubernetes分发和群集中节点的角色,主机端点标签可能包含以下任一项:

  • Kubernetes.节点角色
  • 主机功能
  • 建筑学
  • 操作系统
  • 地区
  • 数据中心
  • 架子
  • 亲和力标准

外部主机端点标签可能包括多租户,应用程序微段和上述任何主机端点标签,以确保托管的遗留服务。

主机端点标签的典型示例,其中一些可以是您的Kubernetes分布的本机:

  • Kubernetes..io/arch:AMD64
  • Kubernetes..io/OS:Linux.
  • node- role.kubernetes.io/worker:true
  • node-rool.kubernetes.io/egress-gateway:真实
  • 拓扑.Kubernetes.io/Region:CA-Central-1
  • 拓扑.Kubernetes.io/zone:CA-Central-1A

最佳实践

  • 在组织中开发和传达标签标准。
  • 根据符合您组织的安全性和合规性目标的分层设计定义安全控制标签。
  • 在标签定义中使用直观的语言,可以快速简单地识别标记的Kubernetes对象。
  • 使用标签键前缀和后缀以识别资产分类所需的属性。
  • 确保通过在CI / CD管道或运行时在CI / CD管道中实施标签治理检查来应用于Kubernetes对象。
  • 开发一套全面的标签,符合组织不同利益相关者的部署,报告和安全要求。
  • 不要滥用使用标签。应定义标签以实现特定和明确的目的。
分享这个