安全
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。