news 2026/9/13 21:10:51

Label Studio 生产环境如何启用 SSRF 保护并限制服务器端口访问?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Label Studio 生产环境如何启用 SSRF 保护并限制服务器端口访问?

Label Studio 生产环境如何启用 SSRF 保护并限制服务器端口访问?

【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio

当你把 Label Studio 开源版部署到生产环境时,有两件事需要在部署层面做掉:一是开启 SSRF(服务端请求伪造)保护,阻止服务器代表用户向本地地址或内网地址发起请求;二是收紧服务器端口,只保留 Label Studio 运行所必需的端口。本文依据 Secure Label Studio、部署文档的端口要求、Kubernetes 部署指南 和 2.10.0 版本发布说明 给出操作步骤。

准备条件

  • 已安装 Label Studio(开源版),部署方式可以是 Docker Compose 或 Kubernetes(Helm 3)。
  • 你的目标是生产环境而非本地开发环境。SSRF_PROTECTION_ENABLED的设计取向是支持本地环境的用户直接访问本地数据源,因此在生产环境中应当启用它(见 security.md 中 "Enable SSRF protection for production environments" 一节)。

启用 SSRF 保护

在部署配置中将环境变量SSRF_PROTECTION_ENABLED设置为true。开启后,Label Studio 的默认行为是拦截所有落在保留地址块内的 IP(IPv4 和 IPv6 均覆盖),例如内网私有网段、回环地址等,这些拦截对象覆盖 URL 导入、文件上传等由服务器发起的出站请求。

以 Kubernetes + Helm 部署为例,install_k8s.md 的指引是:通过helm install命令的--set参数指定需要设置的环境变量。安装命令本身为:

helm install <RELEASE_NAME> heartex/label-studio -f ls-values.yaml

其中<RELEASE_NAME>替换为你要使用的 Helm release 名称,ls-values.yaml是你自定义的 values 文件。按文档说明,你可以在该命令中追加--set参数传入SSRF_PROTECTION_ENABLED=true(也可以把该环境变量写入ls-values.yaml的环境变量配置中),例如:

helm install <RELEASE_NAME> heartex/label-studio -f ls-values.yaml --set SSRF_PROTECTION_ENABLED=true

注意一个文档与代码之间的版本差异:security.md 和 2.10.0 发布说明 都写明该变量"默认为false(默认关闭)",而当前仓库源码 base.py 中的定义是SSRF_PROTECTION_ENABLED = get_bool_env('SSRF_PROTECTION_ENABLED', True),即默认值已改为True。两个说法在不同版本下分别成立,因此在生产环境中不要依赖默认值,应显式设置为true

自定义拦截的子网(可选分支)

如果你需要精确控制哪些网段被拦截,2.10.0 引入了两个与SSRF_PROTECTION_ENABLED=true配合使用的环境变量(见 2.10.0 发布说明):

  • USER_ADDITIONAL_BANNED_SUBNETS:指定额外的 IP 地址或 CIDR 网段,禁止服务器侧请求(例如 URL 文件上传器)访问这些地址。
  • USE_DEFAULT_BANNED_SUBNETS:默认值为True,即保留默认的保留地址块拦截清单。如果你希望完全由自己控制被拦截的网段,可以将其设置为False,然后通过USER_ADDITIONAL_BANNED_SUBNETS列出所有需要禁止的 IP/CIDR。

文档明确提示:关闭默认子网拦截(USE_DEFAULT_BANNED_SUBNETS=False)是有风险的做法,"should only be done if you know what you're doing"。除非你的数据源确实位于保留地址段内且你理解放行后果,否则保留默认值。

限制服务器端口访问

security.md 对开源版生产部署的原文建议是:"If you're running the open source version in production, restrict access to the Label Studio server. Restrict access to the server itself by opening only the required ports on the server." 即只打开 Label Studio 所需的端口,不对外开放其他端口。

所需端口见 部署文档(includes/deploy.md) 的 "Port requirements" 一节:

  • Label Studio 默认期望 8080 端口处于开放状态;
  • 如果要使用其他端口,在启动 Label Studio 时指定(文档指向 Start Label Studio 相关说明)。

也就是说,端口限制的操作路径是:确认你的部署实际暴露的端口(默认 8080),然后在服务器防火墙/安全组层面只放行该端口,其余端口一律关闭。

结果验证

  • 服务状态:Helm 安装后按 install_k8s.md 检查 Pod 是否正常拉起:
    kubectl get pods
  • SSRF 拦截是否生效:2.10.0 的发布说明指出,该版本改进了错误信息,当某个操作因 SSRF 保护被阻止时,错误提示会明确说明请求是被 SSRF 保护拦截的。因此验证方式就是触发一次受保护路径上的出站请求——例如通过 URL 导入一个指向保留地址段(如127.0.0.1或内网私有网段)的资源,观察返回的报错是否提示被 SSRF 保护阻止,而不是返回数据或挂起。
  • 端口限制:在服务器之外尝试访问未放行的端口,确认只有你开放的端口(默认 8080)可达。

限制与已知变化

  • SSRF 保护拦截的是服务器侧发起的请求。如果你的数据源(例如自建 S3 端点、内网模型服务)本身就位于私有网段,开启保护后这些 URL 会被拒绝,需要评估是否用USE_DEFAULT_BANNED_SUBNETS/USER_ADDITIONAL_BANNED_SUBNETS调整,并自行承担文档中提示的风险。
  • 历史上 SSRF 防护有多次修补:2.2.9 修复了添加模型和导入路径上的盲 SSRF,2.4.9/2.4.10 增强了防护健壮性,2.7.0 修复了 DNS rebinding 问题。生产环境保持版本更新同样重要。
  • 端口要求的来源是部署说明文档中的 "Port requirements" 一节,默认值 8080;如果你修改了启动端口,防火墙放行规则要同步改为实际使用的端口。

【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 21:10:44

双罐系统GPC控制Simulink仿真:建模、实现与参数整定

简介&#xff1a;双罐系统的GPC&#xff08;广义预测控制&#xff09;Simulink仿真资源&#xff0c;以Matlab为平台&#xff0c;面向自动化、电子信息工程、数学等专业的大学生及控制方向初学者&#xff0c;可用于课程设计、期末大作业与毕业设计。资源共8个文件&#xff0c;包…

作者头像 李华
网站建设 2026/9/13 21:07:40

EID规则定义详解:eSIM设备身份校验与实名制实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 21:06:53

PeakTech P1326:嵌入式硬件架构的PC显示示波器解析

1. 这台“PC虚拟示波器”到底是什么&#xff1f;不是软件&#xff0c;也不是USB线缆&#xff0c;而是一套完整信号捕获系统 PeakTech P 1326 这个型号&#xff0c;光看名字容易产生误解——很多人第一反应是“哦&#xff0c;又一个靠软件撑场面的虚拟示波器”&#xff0c;甚至以…

作者头像 李华
网站建设 2026/9/13 21:05:44

Vue+ASP.NET Web API部署实战:解决跨域、路由404与Token失效

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 21:05:05

MySQL连接假死排查:The last packet sent was 0 milliseconds ago

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华