跳至内容

安全

Kubernetes 安全注意事项

SSH 访问

默认情况下,允许从任何地方访问主节点和节点的 SSH。但是,不会安装任何公钥。您可以改用 ec2 实例连接,它安装在默认 AMI 中。

如果您想为集群使用固定密钥,则必须在 kops create cluster 命令中指定 --ssh-public-key <公钥文件>,或使用 kops create sshpublickey。您也可以在集群规范中设置以下内容

spec:
  sshKeyName: <ssh key pair>

名为 <ssh 密钥对> 的 EC2 密钥对必须已经存在。

默认情况下,允许来自任何地址的 SSH 访问。您可以通过在集群规范中设置 spec.sshAccess 或使用 kops create cluster --ssh-access 来限制来自何处可以进行 SSH 连接。

要更改现有集群的 SSH 公钥

  • kops delete sshpublickey --name <集群名称> sshpublickey
  • kops create sshpublickey --name <集群名称> -i ~/.ssh/newkey.pub
  • kops update cluster <集群名称> --yes 重新配置启动模板。
  • kops rolling-update cluster --name <集群名称> --yes 滚动所有机器,以便它们具有新密钥。

Docker 配置

如果您使用的是私有注册表,例如 quay.io,您可能熟悉管理每个命名空间的 imagePullSecrets 的不便之处。使用 kOps 挂钩 与私有镜像一起使用也可能很痛苦。要将所有节点上的 Docker 配置为访问一个或多个私有注册表

  • kops create secret --name <集群名称> dockerconfig -f ~/.docker/config.json
  • kops rolling-update cluster --name <集群名称> --yes 立即滚动所有机器,以便它们具有新密钥(可选)

这将 config.json 存储在所有节点(包括主节点)上的 /root/.docker/config.json 中,以便 Kubernetes 和系统容器都可以使用其中定义的注册表。

请注意,这在使用 containerd 时也适用。

实例 IAM 角色

在您的集群上运行的所有 Pod 都可以访问底层实例 IAM 角色。目前,权限范围相当广泛。有关详细信息以及缓解措施,请参阅 iam_roles.md