资讯详情

资讯详情

Label Studio Enterprise 身份与访问管理(IAM)实战:LDAP、SSO/SAML 与 SCIM 2.0 集成指南

Label Studio Enterprise 身份与访问管理IAM实战LDAP、SSO/SAML 与 SCIM 2.0 集成指南【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studioLabel Studio Enterprise 提供了企业级的身份与访问管理Identity and Access Management, IAM能力用于集中化认证、自动化用户生命周期管理并跨组织Organization、工作空间Workspace与项目Project控制访问权限。本文基于 docs/source/guide/admin_auth.md 及其配套子文档系统讲解 LDAP、SSOSAML 2.0与 SCIM 2.0 三种机制的定位、配置参数与实操步骤并结合本仓库源码说明其底层实现帮助你在自托管或云环境中正确落地认证 授权体系。三种机制的分工认证、同步与目录Label Studio Enterprise 的身份体系由三块能力组成它们解决的是不同层面的问题SSOSAML 2.0处理认证Authentication让用户通过你的身份提供商IdP如 Okta、Google SAML、Microsoft Entra ID/Azure AD、Ping Identity、OneLogin 等完成登录实现跨工具的单点登录并由 IdP 强制执行企业安全策略。SCIM 处理自动化用户与组的配置Provisioning负责用户的自动创建/更新/停用Create/Update/Deactivate与组推送Push Groups包括工作空间和项目的成员关系管理并支持将组映射到组织角色和项目级角色。LDAP 用于本地化on-prem部署在自托管环境中直接对接你的目录服务如 AD/LDAP用企业目录凭据登录同时把 RBAC 与项目/工作空间权限继续保留在 Label Studio 内管理。官方建议的落地顺序是大多数企业先启用 SSO 完成认证再启用 SCIM 做持续的用户/组同步LDAP 则主要面向 on-prem 场景。SSO 管你是谁SCIM 管你的账号和权限怎么跟随组织目录自动流转两者配合才能实现完整的身份治理闭环。从源码角度这一分工在仓库中同样有清晰体现。label_studio/core/settings/base.py 中定义了RoleSourceEnum角色来源枚举包含manual手动、samlSAML、scimSCIM、ldapLDAP、apiAPI、billingBilling六种来源意味着同一份成员/项目角色数据可以追溯其来源由不同认证机制写入的角色不会被混为一谈同文件第 59 行还为django_auth_ldap配置了独立日志级别说明 LDAP 认证基于 Django 生态的django-auth-ldap组件实现。LDAP面向 on-prem 部署的目录认证LDAP 认证仅适用于 Label Studio Enterprise 且仅限本地on-prem安装。启用后用户使用企业目录凭据如 AD/LDAP登录同时角色的管理仍保留在 Label Studio 内RBAC 与项目/工作空间权限由 Label Studio 维护。若要了解社区版与企业版的能力差异可参考 label_studio_compare.md。一个重要前提是启用 LDAP 认证后将无法再使用 Label Studio 原生认证登录 UI。同时django_auth_ldap的日志默认跟随LOG_LEVEL环境变量见 base.py排查登录问题时可通过调整日志级别获得详细链路信息。基础环境变量配置通过 Docker 环境变量即可完成 LDAP 对接。官方提供了一份可参考的完整示例见 auth_ldap.mdAUTH_LDAP_ENABLED1 # Use ldaps to secure the LDAP connection AUTH_LDAP_SERVER_URIldaps://ldap.example.com # LDAP admin credentials AUTH_LDAP_BIND_DNuiduser,ousysadmins,o123abc,dczexample,dccom AUTH_LDAP_BIND_PASSWORDpassword123 # Allow users to use usernames (not only emails) to log into Label Studio USE_USERNAME_FOR_LOGIN1 # Simple user search in LDAP groups AUTH_LDAP_USER_DN_TEMPLATEuid%(user)s,ouUsers,o123abc,dcexample,dccom # Specify organization to assign it to all users on the platform # Warning: the user with this email must be registered before any LDAP users log in AUTH_LDAP_ORGANIZATION_OWNER_EMAILheartexheartex.net # Populate the user from the LDAP directory: # firstName, lastName, mail, sAMAccountName are taken from your LDAP record AUTH_LDAP_USER_ATTR_MAP_FIRST_NAMEfirstName AUTH_LDAP_USER_ATTR_MAP_LAST_NAMElastName # Specify the field to use for AUTH_LDAP_USER_QUERY_FIELD as email AUTH_LDAP_USER_ATTR_MAP_EMAILmail # Specify the field to use for AUTH_LDAP_USER_QUERY_FIELD as username AUTH_LDAP_USER_ATTR_MAP_USERNAMEsAMAccountName # Query the authenticating user in Label Studio, it can be [email|username] AUTH_LDAP_USER_QUERY_FIELDemail # Group parameters AUTH_LDAP_GROUP_SEARCH_BASE_DNouUsers,ogroup-id,dcexample,dccom AUTH_LDAP_GROUP_SEARCH_FILTER_STR(objectClassgroupOfNames) AUTH_LDAP_GROUP_TYPEou各参数要点说明环境变量作用AUTH_LDAP_ENABLED置1启用 LDAP 认证AUTH_LDAP_SERVER_URILDAP 服务器地址使用ldaps://前缀走加密连接AUTH_LDAP_BIND_DN/AUTH_LDAP_BIND_PASSWORD用于绑定查询的 LDAP 管理员凭据USE_USERNAME_FOR_LOGIN允许用户用用户名而不只是邮箱登录AUTH_LDAP_USER_DN_TEMPLATE简单的用户 DN 模板%(user)s为登录名占位符用于简单搜索场景AUTH_LDAP_ORGANIZATION_OWNER_EMAIL指定组织归属者邮箱所有平台用户会被分配到该组织注意该邮箱对应的用户必须先注册否则后续 LDAP 用户登录会失败AUTH_LDAP_USER_ATTR_MAP_*将 LDAP 记录的firstName、lastName、mail、sAMAccountName等字段映射到 Label Studio 用户属性AUTH_LDAP_USER_QUERY_FIELD查询 Label Studio 内认证用户时所依据的字段取值为email或usernameAUTH_LDAP_GROUP_SEARCH_BASE_DN/AUTH_LDAP_GROUP_SEARCH_FILTER_STR/AUTH_LDAP_GROUP_TYPE组搜索的基准 DN、过滤条件如(objectClassgroupOfNames)与组类型递归扫描多个 LDAP 组如果希望跨多个 LDAP 组做递归扫描来授予 Label Studio 访问权而不是依赖AUTH_LDAP_USER_DN_TEMPLATE的简单搜索改用以下配置# Leave this parameter empty AUTH_LDAP_USER_DN_TEMPLATE # Specify the groups that you want to be able to log in, separated by ; AUTH_LDAP_USER_SEARCH_BASESouguests,dcdomain,dccom;ouowners,dcdomain,dccom注意必须将AUTH_LDAP_USER_DN_TEMPLATE置空多个搜索基以分号;分隔。用户角色映射LDAP 组 → 组织角色将 LDAP 组映射到 Label Studio Enterprise 的具体组织角色多个组用;分隔。角色级别与 RBAC 体系一一对应便于规模化地按目录分组授权AUTH_LDAP_ORGANIZATION_ROLE_ADMINISTRATORcnadmins,ouusers,o123abc,dcexample,dccom AUTH_LDAP_ORGANIZATION_ROLE_MANAGERcnmanagers,ouusers,o123abc,dcexample,dccom AUTH_LDAP_ORGANIZATION_ROLE_REVIEWERcnreviewers,ouusers,o123abc,dcexample,dccom AUTH_LDAP_ORGANIZATION_ROLE_ANNOTATORcnannotators,ouusers,o123abc,dcexample,dccom;cnguests,ouusers,o123abc,dcexample,dccom AUTH_LDAP_ORGANIZATION_ROLE_NOT_ACTIVATEDcnnot,ouusers,o123abc,dcexample,dccom AUTH_LDAP_ORGANIZATION_ROLE_DEACTIVATEDcndeactivated,ouusers,o123abc,dcexample,dccom工作空间映射LDAP 组 → 工作空间将 LDAP 组映射到具体工作空间使用 JSON 格式键为工作空间标题值为 LDAP 组多个组同样以;分隔AUTH_LDAP_ORGANIZATION_WORKSPACES{Workspace 1:cnteam1,ouusers,o60cbc901ec2e8e387a3b2d3e,dcjumpcloud,dccom,Workspace 2:cnteam2,ouusers,o60cbc901ec2e8e387a3b2d3e,dcjumpcloud,dccom}完全由 LDAP 管理角色与工作空间如果希望角色的分配、工作空间的成员关系完全由 LDAP 驱动不再允许在 Label Studio 内手动指派加入以下环境变量MANUAL_PROJECT_MEMBER_MANAGEMENT0 MANUAL_WORKSPACE_MANAGEMENT0 MANUAL_ROLE_MANAGEMENT0置0会禁用 Label Studio API 和 UI 中针对具体用户的角色/工作空间指派入口一切以环境变量文件中的映射为准。这套MANUAL_*开关在 SSO 场景中同样适用见下文。启用 LDAP/AD 的 TLS 安全连接为 LDAP/Active Directory 启用 TLS 连接配置如下AUTH_LDAP_CONNECTION_OPTIONSOPT_X_TLS_CACERTFILE/path/to/cert.crt;OPT_X_TLS_NEWCTX0其中OPT_X_TLS_CACERTFILE指向证书文件如果使用自签名证书必须将OPT_X_TLS_NEWCTX0作为AUTH_LDAP_CONNECTION_OPTIONS的最后一项。SSOSAML 2.0通过 IdP 实现单点登录SSO/SAML 认证仅适用于 Label Studio Enterprise。启用后组织 Owner 或 Administrator 即可为实例配置 SSO SAML。官方明确支持的 IdP 包括OktaGoogle SAML参见 google_saml.mdPing Federate / Ping Identity SAML参见 pingone.mdOneLoginMicrosoft Entra ID原 Azure Active Directory / Azure ADAuth0其他支持 SAML 断言的 IdP配置完成后用户仍可使用原生认证登录 UI但官方不推荐尤其是 Owner 角色的账号。可结合DISABLE_SIGNUP_WITHOUT_LINK选项阻止用户自行创建组织详见 admin_user.md。将 Label Studio Enterprise 作为服务提供商SP对接 IdP在 Label Studio 侧进入Organization页面若看不到Organization选项说明当前登录角色权限不足。在右上角选择SSO SAML。在Organization字段中确保域名与 IdP 中组织使用的域名一致。复制以下 URLAssertion Consumer Service (ACS) URL含 Audience/EntityID 与 Recipient/Reply 详情IdP 在认证成功后用于重定向用户的地址Login URL用户登录 Label Studio 使用的地址Logout URL用户退出 Label Studio 后重定向的地址。在 IdP 侧将上述 URL 粘贴到 IdP 的对应位置。生成 IdP 的元数据 XML 文件或元数据 URL。配置 SAML 属性映射。Label Studio Enterprise 期望的用户身份属性默认名如下数据默认属性名邮箱地址Email名given nameFirstName姓family nameLastName组名Groups不同 IdP 的属性名各不相同因此 SSO SAML 设置页为常见 IdP 提供了预设presets可一键配置正确的属性映射也支持为自定义 IdP 手动配置属性名。各 IdP 的预设映射IdPEmailFirstNameLastNameGroupsDefaultEmailFirstNameLastNameGroupsAuth0emailgiven_namefamily_namegroupsEntra ID (short)emailAddressgivenNamesurnamegroupsGoogleEmailFirstNameLastNameGroupsPingOneemailAddressgivenNamesurnameGroupsOktaemailfirstNamelastNamegroups若 Entra ID 使用默认声明 URI全 URI 格式则使用属性URIEmailhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressFirstNamehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/givennameLastNamehttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/surnameGroupshttp://schemas.microsoft.com/ws/2008/06/identity/claims/groups回到 Label Studio 完成对接返回 SSO SAML 页面。上传 IdP 的元数据 XML 文件或填写元数据 URL。配置组映射之后也可增改。务必保证填写的组名与 IdP 在 SAML 认证响应中发送的组属性值一致Organization Roles to Groups Mapping组织角色到组映射将组映射到组织级角色。组织级角色是用户的默认角色会自动应用到工作空间和项目。可将多个组映射到同一角色处于Not Activated未激活或Deactivated已停用状态的用户不占用订阅坐席seat额度。组织级角色的完整说明见 manage_users.md。Workspaces to Groups Mapping工作空间到组映射将组作为成员加入工作空间。Manager、Reviewer、Annotator 角色只有在被加入某工作空间后才能看到该工作空间。可选择已有工作空间或新建多个组可映射到同一工作空间。Projects to Groups Mapping项目到组映射将组映射到项目级角色可选Annotator、Reviewer或Inherit。同一组可在多个项目上映射不同角色多个组也可映射到同一角色/同一项目。选择Inherit时组继承上面Organization Roles to Groups Mapping设定的角色若组继承的是 Not Activated 角色用户虽然被映射到项目但只有在组完成同步即用户首次通过 SSO 认证后才真正被分配到项目。点击Save。用 SSO 账号登录 Label Studio Enterprise 验证配置。完全由 SSO 管理角色与工作空间与 LDAP 一致若希望角色与工作空间完全由 SSO 驱动MANUAL_PROJECT_MEMBER_MANAGEMENT0 MANUAL_WORKSPACE_MANAGEMENT0 MANUAL_ROLE_MANAGEMENT0这些选项会禁用 Label Studio API 和 UI 中手动指派角色/工作空间的入口。此外可将LOGIN_PAGE_URL环境变量设置为指定 URL让登录页重定向到该地址在 SaaS 版Label Studio Enterprise Cloud中如需启用这些限制或完全禁用通用登录仅保留 SSO 登录入口需向官方支持提交工单申请。SCIM 2.0自动化用户与组的生命周期管理System for Cross-domain Identity ManagementSCIM是组织范围内管理服务与应用访问的通用协议。通过 SCIM 提供商你可以管理 Label Studio Enterprise 工作空间的访问并为个人用户与组授予角色。SCIM 2.0 基于 SSO 集成——前置条件是你已配置好 SSO参见 auth_setup.md并且需要准备一个与组织Owner角色关联的 Legacy token 作为调用凭据。SCIM 的完整工作流说明见 scim_workflow.md。与 Okta 集成Okta 通过 Bearer Token请求头为Authorization: Bearer token调用 Label Studio 的 REST API 端点来配置/解除访问。集成步骤概览添加应用进入 OktaApplications Applications点击Create App Integration选择SAML 2.0并命名如Label Studio Enterprise在Configure SAML中按 auth_setup.md 完成 SAML 配置确认应用出现在活动应用列表中。启用 SCIM 配置进入应用General标签页勾选Enable SCIM provisioning然后在Provisioning标签页的Integration中点击Edit填写字段值/说明SCIM connector base URLhttps://LABEL_STUDIO_BASE_URL/scim/v2/其中LABEL_STUDIO_BASE_URL是你的 Label Studio Enterprise 实例基础 URLUnique identifier field for users使用email。Label Studio Enterprise 以 email 作为用户唯一标识Supported provisioning actions勾选Import New Users and Profile Updates、Push New Users、Push Profile Updates、Push GroupsHTTP Header →Authorization: Bearer token填入与 Label Studio Owner 账号关联的 Legacy token。Label Studio 中Token与Bearer是同一类令牌但请求头必须使用Bearer而非Token配置应用触发动作在Provisioning标签页选择To App点击Edit启用 Create Users、Update User Attributes、Deactivate Users。将应用分配给单个用户在应用Assignments标签页点击Assign Assign to People选择用户后点击DoneOkta 会随即向 Label Studio 发送创建用户的请求。取消分配时在Assignments中选择People点击对应用户右侧的删除符号并确认。将应用分配给组官方推荐通过组来管理应用访问——将 Label Studio 分配给组并在 Okta 中管理组变更会自动传播到应用。在Assignments中选择Assign Assign to Groups并选择组将属性Active 设为 true保存后更新会排队发送也可立即推送。同步组到应用在应用的Push Groups标签页点击Push Groups Find groups by name选择要同步的组然后选择Create Group新建或Link Group关联到 SCIM Settings 页面中同名的现有工作空间。组映射配置在 Label Studio 中点击左上角菜单进入Organization选择右上角SCIM配置与 SSO 相同的三类映射——组织角色到组、工作空间到组、项目到组。组名必须与 SCIM 提供商发送的组名一致角色体系详见 admin_roles.md。同样的规则适用多组可映射同一角色、Not Activated/Deactivated 不占坐席、Manager/Reviewer/Annotator 需被加入工作空间才能看到它、Inherit 继承组织级角色。重要提醒视频教程中演示了在 Okta 的 Unique Identifier Field for Users 中使用userName但必须使用email作为唯一标识否则 SCIM 无法正确处理 SCIM 集成之前创建的用户。与 Microsoft Entra IDAzure AD集成Label Studio Enterprise 同样支持 Microsoft Entra ID 的 SCIM 配置步骤与 Okta 类似但需要特定的属性映射配置。受支持的用户属性仅限以下列表超出即报错SCIM 属性描述是否必填emails[type eq work].value用户邮箱地址主标识是userName用户名映射为 Label Studio 中的邮箱是active用户是否活跃是name.givenName用户的名否name.familyName用户的姓否警告映射 Label Studio 不支持的属性会导致 SCIM 配置时返回HTTP 501 (Not Implemented)错误。必须移除 Entra ID 多余的属性映射例如displayName、preferredLanguage、name.formatted、externalId。Entra ID 配置步骤在 Microsoft Entra 管理中心选择Enterprise apps选中你的企业应用。选择Provisioning。将Tenant URL设为https://LABEL_STUDIO_BASE_URL/scim/v2/。将Secret Token设为与 Label Studio Owner 账号关联的Legacy token注意必须是 Legacy token 而非 Personal Access Token且必须关联 Owner 角色用户。在Mappings下打开Provision Microsoft Entra ID Users删除除上表支持项之外的所有属性映射保留emails[type eq work].value→userPrincipalNameuserName→userPrincipalNameactive→Switch([IsSoftDeleted], , False, True, True, False)name.givenName→givenNamename.familyName→surname如需基于组的角色分配打开Provision Microsoft Entra ID Groups并确保其启用。组的 SCIM 设置按上文 组映射配置 在 Label Studio 中完成。从源码看三种机制的落地实现除了文档层面的配置本仓库源码也印证了这套 IAM 体系的具体实现方式统一的可追溯角色来源label_studio/core/settings/base.py 中的RoleSourceEnum将成员/项目角色的来源区分为manual、saml、scim、ldap、api、billing。这意味着无论用户是通过 SSO 登录、被 SCIM 配置还是经 LDAP 组映射获得角色系统都能追踪角色的赋值来源为审计与治理提供依据。SCIM 请求的识别与鉴权label_studio/core/middleware.py 中通过request.is_scim标识 SCIM 请求并隐式分配request.user对应注释中提到的CustomSCIMAuthCheckMiddleware中间件——SCIM 端点使用独立的鉴权路径与常规 API 用户鉴权分离。LDAP 基于 Django 生态组件django_auth_ldap被集成进 Django 设置并支持独立日志配置base.py前述所有AUTH_LDAP_*环境变量本质上都是在驱动这一组件的行为。SAML 与组织的绑定label_studio/organizations/functions.py 中在组织相关操作时会同步清理关联的org.saml记录说明每个组织维护独立的 SAML 配置对象SSO 设置与组织实例一一绑定。选型与落地建议认证层优先无论选择 LDAP 还是 SSO认证先行。on-prem 且已有 AD/LDAP 目录、希望保持简单直接选 LDAP多工具协同、云上 IdPOkta/Entra/Google选 SAML 2.0。生命周期同步补位需要用户开通/停用自动化、组到角色/工作空间/项目的动态映射时在 SSO 之上叠加 SCIM 2.0。权限治理闭环利用MANUAL_PROJECT_MEMBER_MANAGEMENT、MANUAL_WORKSPACE_MANAGEMENT、MANUAL_ROLE_MANAGEMENT三个开关将角色与成员管理完全交由目录侧驱动避免双写导致的权限漂移。安全加固LDAP 场景务必使用ldaps://并配置AUTH_LDAP_CONNECTION_OPTIONS的 TLS 选项SCIM 场景使用与 Owner 关联的 Legacy token 并以Bearer头传递属性映射严格遵循支持列表避免 501 错误。相关文档索引auth_ldap.mdLDAP 详细配置、auth_setup.mdSSO/SAML 详细配置、scim_setup.mdSCIM 详细配置、scim_workflow.mdSCIM 工作流、manage_users.md 与 admin_roles.md角色体系、access_tokens.mdLegacy token 获取、google_saml.md 与 pingone.md特定 IdP 示例、admin_user.mdDISABLE_SIGNUP_WITHOUT_LINK等用户策略。【免费下载链接】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),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →