在部署 NCP 时,请务必采取措施以保护 Kubernetes 和 NSX 环境。
将 NCP 限制为仅在指定的节点上运行
NCP 有权访问 NSX 管理平面,应将其限制为仅在指定的基础架构节点上运行。您可以使用相应的标签指定这些节点。然后,应将该标签的 nodeSelector 应用于 NCP ReplicationController 规范。例如,
nodeSelector: nsx-infra: True
也可以使用其他机制(如关联性)以将 pod 分配给节点。有关更多信息,请参见https://kubernetes.io/docs/concepts/configuration/assign-pod-node。
确保 Docker 引擎是最新的
Docker 定期发布安全更新。应实施一个自动化过程以应用这些更新。
禁止不受信任的容器的 NET_ADMIN 和 NET_RAW 功能
攻击者可能会利用 Linux 功能 NET_ADMIN 和 NET_RAW 以破坏 pod 网络。您应该禁用不受信任的容器的这两个功能。默认情况下,不会为非特权容器授予 NET_ADMIN 功能。如果 pod 规范明确启用该功能,或者将容器设置为特权模式,请务必小心。此外,对于不受信任的容器,请在容器规范的 SecurityContext 配置上的弃用的功能列表中指定 NET_RAW 以禁用 NET_RAW。例如,
securityContext: capabilities: drop: - NET_RAW - ...
基于角色的访问控制
Kubernetes 使用基于角色的访问控制 (RBAC) API 帮助作出授权决定,从而允许管理员动态配置策略。有关详细信息,请参阅有关 RBAC 的 Kubernetes 文档。
通常,集群管理员是唯一具有访问特权和角色的用户。对于用户和服务帐户,必须在授予访问权限时遵循最小特权原则。
建议使用以下准则:
- 将对 Kubernetes API 令牌的访问限制为需要它们的 pod。
- 将对 NCP ConfigMap 和 NSX API 客户端证书的 TLS 密钥的访问限制为 NCP pod。
- 阻止不需要访问 Kubernetes 网络 API 的 pod 进行该类访问。
- 添加 Kubernetes RBAC 策略以指定哪些 pod 有权访问 Kubernetes API。
建议的 RBAC 策略已存在于 NCP YAML 文件中,并且将在安装 NCP 时生效。