各种Kubernetes安全建议会告诉您避免SSH进入容器,而要求使用kubectl。引用的主要原因是可能通过SSH逃避到底层主机资源到容器中。因此,我有以下特定查询:
kubectl的哪些功能阻止您访问主机资源,为什么ssh与kubectl相比具有更大的访问主机资源的风险? kubectl如何更安全?
SSH是否可以跳过Pod安全策略以及在Pod安全策略中受限制的基础主机上的访问/装载路径?] >>
如果无法避免将SSH装入容器,如何以最佳方式保护它?
各种Kubernetes安全建议会告诉您避免SSH进入容器,而要求使用kubectl。引用的主要原因是逃脱到基础主机的可能性...
如果原因是“您可以通过一个而不是另一个来逃脱”,那么我认为这是由不了解所涉及的安全机制的人造成的。还有其他比[SSH]更喜欢kubectl exec
的原因,例如与所有其他Kubernetes集成的审核日志记录,以及容易的访问吊销,但也可以通过SSH获得。这只是更多工作
kubectl运行在客户端。如果其中有阻止您逃脱的功能,则可以将其修补。
仅因为您必须在容器中运行ssh
服务器;因此,在您的容器中运行一个额外的进程,并且必须管理密钥,这是不希望通过SSH进入容器的充分理由。
所以,这是一个缺点。另一个将与用例一起使用,这是一种风险。您为什么要SSH到容器中?我看到的一个原因是因为您想从外部主机(未安装kubectl
并针对api-server
进行身份验证)执行此操作。因此,您必须将端点暴露给外界,或者至少暴露给您的网络。