从容器挂载 CIFS/SMB 共享的安全方法,无需特权标志或 SYS_ADMIN 功能

2024-01-14

我想从 docker 容器访问 Windows 文件共享共享 (SMB3),但我不想损害主机的安全性。我读过的所有指南都表明我需要使用--privileged旗帜或--cap-add SYS_ADMIN能力。

这是我使用的命令:

挂载-t cifs -o 用户名='[电子邮件受保护] /cdn-cgi/l/email-protection',password='some_password' //192.168.123.123/MyShare /mnt/myshare

结果是消息:

无法应用新的功能集。

当我应用--cap-add SYS_ADMINmount 命令工作正常,但我知道这会使主机面临明显的安全漏洞。

我还阅读了此 StackOverflow 问题中的建议(在 Docker 容器内挂载 SMB/CIFS 共享 https://stackoverflow.com/questions/27989751/mount-smb-cifs-share-within-a-docker-container) 将卷本地安装到运行 docker 的服务器上。这是不可取的,原因有两个,首先,容器是由 Rancher Kubernetes 集群编排的,我不知道如何使用 Rancher 实现 nPcomp 所描述的内容,其次,这意味着 docker 主机可以访问该卷。我希望只有容器可以通过秘密提供的凭据访问此共享。

我的问题是:有没有办法在 docker 容器(在 Kubernetes 内)中挂载 CIFS/SMB3 共享,而不会让主机面临权限提升漏洞并保护凭据?非常感谢。


经过更多研究后,我已经弄清楚如何做到这一点。有一个用于 SMB 的容器存储接口 (CSI) 驱动程序,称为适用于 Kubernetes 的 SMB CSI 驱动程序 (https://github.com/kubernetes-csi/csi-driver-smb https://github.com/kubernetes-csi/csi-driver-smb).

使用 helm 安装 CSI 驱动程序后(https://github.com/kubernetes-csi/csi-driver-smb/tree/master/charts https://github.com/kubernetes-csi/csi-driver-smb/tree/master/charts)您可以按照以下示例进行操作https://github.com/kubernetes-csi/csi-driver-smb/blob/master/deploy/example/e2e_usage.md 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首先手动进行,因为我已经在我无法测试的所有节点上完成了此操作。

希望这对某人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从容器挂载 CIFS/SMB 共享的安全方法,无需特权标志或 SYS_ADMIN 功能 的相关文章

随机推荐

  • WPF richTextBox问题

    如果一行文本换行到另一行 如何以编程方式确定字符串中的断点 示例 输入字符串 这是对文本换行行的测试 Based on the width of the richTextBox it could display This is a test
  • 如何在 Blazor 中将 AuthorizeView 标记与自定义身份验证逻辑结合使用

    我在 Blazor 服务器应用程序中有一个自定义身份验证系统 具有自定义数据库和一些逻辑 我希望受益于 razor 中内置的 AuthorizeView 标签 但我不知道如何在没有 AspNetCore Identity 的情况下使用它 现
  • Openssl:在 SSL_CTX_load_verify_locations API 中使用 CApath 参数时证书验证失败

    我正在尝试与服务器计算机建立 TLS 连接 我已使用 openssl CLI 命令创建了根 CA 证书和服务器证书 我创建了服务器证书 其通用名称与其 IP 地址相同 根 CA 证书的通用名称是服务器的 FQDN 我正在使用 openssl
  • JAX-RS 2.0 WebSphere 8.5 没有独立的共享库

    我正在使用 Jersey 2 在 IBM WebSphere 8 5 环境中实现 JAR RS 2 0 读完这篇文章后Websphere 8 中的 JAX RS Jersey 2 10 支持 https stackoverflow com
  • ASP.NET MVC - MapRoute 与 paths.Add(和 404)

    我刚刚开始使用 ASP NET MVC MapRoute 和 paths Add 之间有什么区别 我应该只使用 MapRoute 吗 我可以绘制多条路线吗 哪些 地图 优先 您首先调用的还是最后调用的 我希望能够为用户做一些类似于 Stac
  • 在共享主机上使用 Laravel 发送邮件

    我正在尝试从我的网站发送邮件 我正在使用 laravel 5 5 和 hostnet nl 的共享托管 我非常确定我的所有配置都是正确的 我的 env MAIL DRIVER mail MAIL HOST smtp02 hostnet nl
  • 如何让我的安装程序应用程序在 Windows 上正常运行?

    我在 Delphi 中制作了一个简单的安装程序应用程序 没什么花哨的 基本上我将文件包含到 Exe 中 然后将它们解压到用户指定的路径 然而 我偶然发现了一个问题 我注意到这适用于任何 Windows 可执行文件 无论它是否是安装程序 如果
  • 对 Android 中的特定布局进行“屏幕截图”

    我有两个密切相关的主要问题 我是从程序化的角度来看待这些问题的 1 我希望截取特定布局的内容的屏幕截图 即ScrollView嵌套在一个LinearLayout 罢工 gt 2 作为ScrollView有溢出屏幕的内容 因此可以滚动 如何确
  • PHP 克隆关键字 [重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中的对象克隆是什么 https stackoverflow com questions 2144506 what is object cloning in php 我正在研究一个经常使用 cl
  • 在 python 中使用 boto3 查询 cloudwatch 日志中的不同值

    我有一个 lambda 函数 可以将指标写入Cloudwatch 在写入指标的同时 它会在日志组中生成一些日志 INFO username email protected cdn cgi l email protection ClinicI
  • 来自调试器的消息:由于内存问题而终止

    我的应用程序正在使用Geojson文件 我用地图盒SDK https www mapbox com ios sdk examples line geojson to add MGLPolyline来映射 但问题是我的文件太大 导致应用程序崩
  • music.listen 返回一个空数组

    我正在开发 Spotify 应用内应用程序 我想知道我的朋友们在听什么 我目前正在使用音乐 听打开graph api 但它对大多数用户返回空数据 我注册了一个新的 Facebook 帐户 然后使用新帐户登录了 Spotify 我点了一首歌然
  • 在 vbscript 中在另一台计算机上显示消息框?

    如何使用 vbscript 在网络中正在运行的计算机上显示消息框 我到处寻找但没有得到任何答案 也许这对于 VBScript 来说是一个有点高级的问题 但是由于 WSH 允许远程脚本编写 因此这可能是一个任务WSH控制器 http msdn
  • Google Apps脚本不会更新应用程序

    我对此是全新的 我知道这可能很简单 但我似乎无法让它发挥作用 我在网上发现了这个应用程序脚本 可以让人们将文件上传到我的 Google 云端硬盘 但是当我尝试更改其中的任何内容并保存它时 它不会反映在应用程序中 我尝试在 Google 脚本
  • 复合标识符的任何部分都不能为空[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试做一个复合主键映射并且不起作用 必要条件是 关系可能是 IdClass注解 我需要与人实体的关系 ManyToOne My cod
  • 我们如何检查动态粘土对象是否具有属性?

    我有一个动态对象 我认为是用 Clay 实现的 它具有两个可能的属性名称之一 我想使用任何可用的属性名称 以下不起作用 dynamic workItemPart item WorkItem is an Orchard ContentMana
  • Android - 向左|向右滑动。手势检测

    试图将这个 手势 功能添加到我的第一个程序中 几乎我所做的每次搜索都来到这个线程 网格布局上的滑动手势检测 https stackoverflow com questions 937313 android basic gesture det
  • 如何将模型中的占位符文本添加到 MVC 视图中?

    我有一个模型 DataType DataType EmailAddress DisplayFormat ConvertEmptyStringToNull true Display Prompt Email Address public st
  • Drupal 6 中的测量表

    我正在使用 Drupal 6 为一家测量公司做一个项目 最终 员工需要将测量结果输入到新的内容类型中 目前 他们在一个大型 Excel 电子表格中进行此操作 其中有一堆宏可以在单元格之间进行计算 米到英尺 m 2 一些定价内容 我的问题是
  • 从容器挂载 CIFS/SMB 共享的安全方法,无需特权标志或 SYS_ADMIN 功能

    我想从 docker 容器访问 Windows 文件共享共享 SMB3 但我不想损害主机的安全性 我读过的所有指南都表明我需要使用 privileged旗帜或 cap add SYS ADMIN能力 这是我使用的命令 挂载 t cifs o