ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Label Studio 用户注册与邀请协作:从创建账号到安全管控的完整指南

Label Studio 用户注册与邀请协作:从创建账号到安全管控的完整指南 Label Studio 用户注册与邀请协作从创建账号到安全管控的完整指南【免费下载链接】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多类型数据标注工具的用户管理体系展开讲解如何创建账号、通过命令行快速初始化用户、借助组织邀请链接拉入协作者以及如何通过环境变量将注册入口收紧为“仅限邀请”保障数据标注团队的访问安全。读完本篇你将掌握 Label Studio 用户从创建、登录、受邀加入到 API 令牌获取与邀请链接重置的完整实操链路并能结合源码理解其底层校验逻辑。用户体系概览Label Studio 是面向多类型数据标注与注释的工具账号是其一切协作的起点。首次启动服务时你会看到注册Sign up页面在此创建的账号会本地存储在 Label Studio 服务器上这些账号允许多名标注员annotator协作处理同一个数据标注项目。账号体系与“组织Organization”概念深度绑定——每个账号在创建后都会归属组织后续的邀请、成员管理、项目共享都围绕组织展开。需要特别注意的是在 Label Studio 社区版Community Edition中所有用户拥有相同的功能权限并且可以看到所有项目。如果你的团队需要基于角色的访问控制RBAC与精细化权限管理则需要评估升级到 Label Studio Enterprise。本指南面向社区版的本地部署场景聚焦注册、邀请与注册入口管控三大主题。创建账号通过界面创建当你第一次启动 Label Studio 后会看到注册界面。创建账号只需两步使用你的邮箱地址和密码创建一个账号登录 Label Studio。这个流程对应前端user/signup页面与后端 注册视图。从源码可以看到注册页面在提交时会校验邀请令牌token并将新用户注册流程委托给proceed_registration完成组织归属绑定。注册表单本身由users/forms.py中的UserSignupForm和organizations/forms.py中的OrganizationSignupForm共同承担。通过命令行创建你还可以在启动 Label Studio 时通过命令行直接创建账号这在自动化部署、CI 初始化和脚本化安装场景中非常实用label-studio start --username username --password password [--user-token token-at-least-5-chars]参数说明--username默认用户的邮箱/用户名--password默认用户的密码--user-token可选参数用于 API 访问的用户令牌最短长度为 5 个字符。这些参数在 命令行解析器 中定义并在 服务启动逻辑 的_create_user函数中生效。从源码可以看到用户名、密码、令牌的取值优先级依次为命令行参数 配置文件config 环境变量。令牌的实际写入发生在_create_user末尾——只有满足len(token) 5时才会真正更新到用户记录上否则会打印提示信息并跳过if token and len(token) 5: Token.objects.filter(keyuser.auth_token.key).update(keytoken) elif token: print(fToken {token} is not applied to user {DEFAULT_USERNAME} because its empty or len(token) 5)创建出的用户会被自动设为is_staff True与is_superuser True并加入或创建名为 Label Studio 的默认组织以保证后续可以管理项目与成员。用户令牌User Token的用途用户令牌用于API 访问认证。如果你不显式指定系统会自动为当前用户生成一个令牌。令牌可以用于通过 HTTP 请求头Authorization: Token your-token调用 Label Studio 的 REST APISDK 与自动化脚本的身份认证集成第三方数据管道时的安全凭证。你可以通过api/current-user/token接口获取当前用户令牌或者通过api/current-user/reset-token接口重置令牌相关路由定义见 users/urls.py接口实现见 users/api.py。在账号设置页面中也提供了重置令牌的入口参见 user_account.html 中调用current-user-reset-token的代码。邀请用户加入组织一旦初始组织账号创建完成你就可以开始邀请协作者。邀请机制的核心是每个组织持有一个唯一的邀请令牌token注册链接中携带该令牌即可免审核注册。其实现位于 organizations/api.pyGET /api/invite获取当前组织的邀请链接返回结构为invite_url {}?token{}.format(reverse(user-signup), org.token)POST /api/invite/reset-token重置邀请令牌旧链接立即失效并返回新的邀请链接。界面操作步骤打开 Label Studio点击左上角的菜单选择Organization组织在组织页面点击Add Members添加成员。此时你可以复制一个对该组织唯一的邀请链接将其分享给团队成员对方打开链接即可完成注册并自动加入该组织。重置邀请链接在组织页面点击Reset Link重置链接即可重置邀请令牌。重置之后任何持有旧链接的人都无法再注册新账号已注册的用户不受影响系统会生成新的链接供重新分发。这一行为有对应的自动化测试保障见 test_invites.py测试先获取邀请链接并完成注册返回 302随后调用/api/invite/reset-token重置再用旧链接注册时返回 403Permission Denied而用新链接注册则恢复正常。安全提示重置邀请链接是一种安全手段但应纳入更完整的访问控制策略其中就包括下文提到的“关闭公开注册页面”。请参见下一节“仅允许邀请注册”。仅允许邀请注册Require Invites邀请链接解决了“定向拉人”的问题但它并不能阻止任何人在注册页面自行创建新账号。如果希望只有持有邀请链接的用户才能加入组织必须通过环境变量收紧注册入口。关闭注册入口的底层校验逻辑该开关在 核心配置 中定义DISABLE_SIGNUP_WITHOUT_LINK get_bool_env(DISABLE_SIGNUP_WITHOUT_LINK, False)即环境变量LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK的布尔值默认关闭。真正执行校验的逻辑在 注册视图if settings.DISABLE_SIGNUP_WITHOUT_LINK is True: if not (token and organization and token organization.token): raise PermissionDenied() else: if token and organization and token ! organization.token: raise PermissionDenied()两种模式下的行为差异清晰可见开关开启注册请求必须携带与组织令牌一致的 token否则直接拒绝403。即“无链接不可注册”开关关闭不要求 token但若携带了错误的 token 同样会被拒绝。即“公开注册 校验链接有效性”。模板层同样会根据该开关决定是否渲染注册入口见 user_base.html 与 new-ui 登录页模板当开关开启时页面上不再展示“Create Account”入口从 UI 层面配合后端双保险。本地部署限制注册本地部署Docker、裸机等在安装 Label Studio 后执行export LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINKtrue设置后注册页面将保持可见但无法直接提交注册只有通过组织邀请链接访问user/signup?tokenorg-token才能完成注册。test_signup_setting测试对此有完整验证见 test_invites.py开关开启时直接 POST/user/signup返回 403通过邀请链接 POST 则返回 302注册成功重定向。云部署限制注册并初始化管理员账号云部署容器化、云主机场景下在启动 Label Studio之前设置以下环境变量LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINKtrue LABEL_STUDIO_USERNAMEusername LABEL_STUDIO_PASSWORDpassword # token 可选未设置时会自动生成 LABEL_STUDIO_USER_TOKENtoken-at-least-5-chars设置完成后启动 Label Studio注册入口即被关闭你需要使用上述环境变量中设定的用户名和密码登录。这些环境变量正是_create_user中 CLI 参数的“环境变量兜底”参见 server.pyusername input_args.username or config.get(username) or get_env(USERNAME) password input_args.password or config.get(password) or get_env(PASSWORD) token input_args.user_token or config.get(user_token) or get_env(USER_TOKEN)部署要点云部署建议在初始化阶段就设置LABEL_STUDIO_USERNAME/LABEL_STUDIO_PASSWORD因为关闭公开注册后若没有预置管理员账号你将无法从界面创建首个用户。安全加固建议汇总结合社区版的用户模型推荐的安全基线如下默认关闭公开注册生产环境一律设置LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINKtrue避免陌生人涌入你的组织通过邀请链接定向拉人使用GET /api/invite获取链接通过安全渠道如企业 IM、邮件分发给协作者定期重置邀请令牌成员变动或链接泄露后调用POST /api/invite/reset-token或点击界面上的Reset Link使旧链接立即失效令牌最小化暴露--user-token/LABEL_STUDIO_USER_TOKEN用于 API 集成注意保管最短 5 字符建议使用强随机字符串必要时通过api/current-user/reset-token轮换账号本地存储认知社区版账号存储于 Label Studio 服务器本地数据库无角色/权限隔离多团队严格隔离需求应评估 Enterprise 方案。相关资源注册/登录/登出视图实现label_studio/users/views.py用户 API令牌获取/重置label_studio/users/api.py用户路由定义label_studio/users/urls.py组织邀请链接 APIlabel_studio/organizations/api.py命令行启动与用户初始化label_studio/server.py、label_studio/core/argparser.py注册开关配置项label_studio/core/settings/base.py注册与邀请的自动化测试label_studio/tests/test_invites.py注册页面模板label_studio/users/templates/users/user_base.html【免费下载链接】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),仅供参考
返回列表