在部署 NCP 时,请务必采取措施以保护 Kubernetes 和 NSX-T Data Center 环境。

将 NCP 限制为仅在指定的节点上运行

NCP 有权访问 NSX-T Data Center 管理平面,应将其限制为仅在指定的基础架构节点上运行。您可以使用相应的标签指定这些节点。然后,应将该标签的 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 帮助作出授权决定,从而允许管理员动态配置策略。有关详细信息,请参见 https://kubernetes.io/docs/admin/authorization/rbac

通常,集群管理员是唯一具有访问特权和角色的用户。对于用户和服务帐户,必须在授予访问权限时遵循最小特权原则。

建议使用以下准则:

  • 将对 Kubernetes API 令牌的访问限制为需要它们的 pod。
  • 将对 NCP ConfigMap 和 NSX API 客户端证书的 TLS 密钥的访问限制为 NCP pod。
  • 阻止不需要访问 Kubernetes 网络 API 的 pod 进行该类访问。
  • 添加 Kubernetes RBAC 策略以指定哪些 pod 有权访问 Kubernetes API。

建议的 RBAC 策略已存在于 NCP YAML 文件中,并且将在安装 NCP 时生效。