ben*_*ben 7 smb mount docker kubernetes rancher
我想从 docker 容器访问 Windows 文件共享共享 (SMB3),但我不想损害主机的安全性。我读过的所有指南都表明我需要使用标志--privileged或--cap-add SYS_ADMIN功能。
这是我使用的命令:
mount -t cifs -o 用户名='some_account@mydomain.internal',password='some_password' //192.168.123.123/MyShare /mnt/myshare
结果是消息:
无法应用新的功能集。
当我应用该--cap-add SYS_ADMIN功能时,挂载命令工作正常,但我知道这会使主机面临明显的安全漏洞。
我还阅读了此 StackOverflow 问题(在 Docker 容器中安装 SMB/CIFS 共享)中的建议,将卷本地安装在运行 docker 的服务器上。这是不可取的,原因有两个,首先,容器是由 Rancher Kubernetes 集群编排的,我不知道如何使用 Rancher 实现 nPcomp 所描述的内容,其次,这意味着 docker 主机可以访问该卷。我希望只有容器可以通过秘密提供的凭据访问此共享。
我的问题是:有没有办法在 docker 容器(在 Kubernetes 内)中挂载 CIFS/SMB3 共享,而不会让主机面临权限提升漏洞并保护凭据?非常感谢。
ben*_*ben 10
经过更多研究后,我已经弄清楚如何做到这一点。有一个适用于 SMB 的容器存储接口 (CSI) 驱动程序,称为适用于 Kubernetes 的 SMB CSI 驱动程序( https://github.com/kubernetes-csi/csi-driver-smb )。
使用 helm ( https://github.com/kubernetes-csi/csi-driver-smb/tree/master/charts ) 安装 CSI 驱动程序后,您可以按照https://github.com/kubernetes-csi/中的示例进行操作csi-driver-smb/blob/master/deploy/example/e2e_usage.md(选项 #2 创建 PV/PVC)用于创建挂载 SMB3 共享的持久卷 (PV) 和持久卷声明 (PVC)。
然后,您创建容器并为其提供相关的持久卷声明,指定您要将其安装为 /mnt/myshare 等。
我对此进行了测试,它会自动部署到多个工作节点并且运行良好,而不需要privileged标志或--cap-add SYS_ADMIN将其提供给容器。
这支持 SMB3 甚至身份验证和加密。要启用加密,请转至 Windows Server > 文件和存储服务,选择共享、属性 > 设置 > 加密数据访问。
Wireshark 显示所有 SMB 流量均已加密。我唯一不记得的是,是否必须cifs-utils先手动安装,因为我已经在我无法测试的所有节点上完成了此操作。
希望这对某人有帮助。
| 归档时间: |
|
| 查看次数: |
7874 次 |
| 最近记录: |