尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

StarRocks Group Provider 指南:对接 LDAP/AD/Ranger 实现用户组认证与授权

StarRocks Group Provider 指南:对接 LDAP/AD/Ranger 实现用户组认证与授权 StarRocks Group Provider 指南对接 LDAP/AD/Ranger 实现用户组认证与授权【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocksStarRocks 从 v3.5.0 起提供 Group Provider组提供者机制用于从 LDAP、Apache Ranger 等外部认证与授权系统中采集用户组信息实现批量化的用户组管理。本文以官方文档为主体结合 GroupProvider.java 等前端源码系统讲解 Group Provider 的概念、三种类型LDAP/Unix/File、CREATE GROUP PROVIDER完整语法与参数语义、与 Security Integration 的联动、向用户组授权GRANT ... TO EXTERNAL GROUP以及对接 Apache Ranger 的完整流程读完即可在企业环境中落地 LDAP/AD 场景的用户组集成。概述Group Provider 是什么为了深化与外部用户认证和授权系统如 LDAP 与 Apache Ranger的集成StarRocks 支持采集外部系统中的用户组信息用于集体化的用户管理体验。Group Provider 本质上是一个用户与组的映射关系mapping。任何需要组信息的流程都可以按需查询这一映射例如登录认证时的用户组记录、授权过程中的组判定等。组信息独立存在可以与认证、授权或其他流程灵活集成而不与任何特定工作流强耦合。从源码看这一设计落地为抽象基类 GroupProvider.java其核心抽象方法为SetString getGroup(UserIdentity userIdentity, String distinguishedName)即给定用户身份与认证时记录的 DN返回该用户所属的组集合。具体实现由工厂 GroupProviderFactory.java 按type属性分发创建。支持的三种类型StarRocks 支持三种 Group Provider详见 unix_file_intro.mdxLDAP group provider在 LDAP 服务中搜索并匹配用户与组Unix group provider在操作系统层面搜索并匹配用户与组File group provider根据一个文件中定义的用户组进行搜索与匹配。工作流程以下流程图以 LDAP 和 Apache Ranger 为例说明 Group Provider 的整体工作流程创建 Group Provider语法总览CREATE GROUP PROVIDER用于创建组提供者三种类型共用一个 DDL区别仅在于type属性-- LDAP group provider CREATE GROUP PROVIDER group_provider_name PROPERTIES ( type ldap, ldap_info, ldap_search_group_arg, ldap_search_attr, [ldap_cache_attr] ) ldap_info :: ldap_conn_url , ldap_bind_root_dn , ldap_bind_root_pwd , ldap_bind_base_dn , [ldap_conn_timeout ,] [ldap_conn_read_timeout ] [ldap_ssl_conn_allow_insecure ] [ldap_ssl_conn_trust_store_path ] [ldap_ssl_conn_trust_store_pwd ] ldap_search_group_arg :: { ldap_group_dn | ldap_group_filter }, ldap_group_identifier_attr ldap_search_user_arg :: ldap_group_member_attr , ldap_user_search_attr ldap_cache_arg :: ldap_cache_refresh_interval -- Unix group provider CREATE GROUP PROVIDER group_provider_name PROPERTIES ( type unix )-- File group provider CREATE GROUP PROVIDER group_provider_name PROPERTIES ( type file, group_file_url )参数说明type要创建的组提供者类型。取值与 GroupProviderFactory.java 中SUPPORT_GROUP_PROVIDER集合一一对应ldap创建 LDAP 组提供者需指定ldap_info、ldap_search_group_arg、ldap_search_user_arg可选ldap_cache_argunix创建 Unix 组提供者file创建文件组提供者需指定group_file_url。group_file_url定义用户组的文件 URL 或相对路径位于fe/conf下。:::note组文件包含一组组及其成员的列表每行定义一个组组名与成员之间用冒号分隔多个用户之间用逗号分隔。示例group_name:user_1,user_2,user_3。:::ldap_info参数组用于连接 LDAP 服务的连接信息。结合 LDAPGroupProvider.java 中声明的属性常量各参数如下ldap_conn_urlLDAP 服务器的 URL格式ldap://ldap_server_host:ldap_server_port。源码中对应常量LDAP_LDAP_CONN_URL属于必填项REQUIRED_PROPERTIES之一。ldap_bind_root_dnLDAP 服务的管理员 Distinguished NameDN必填。ldap_bind_root_pwdLDAP 服务的管理员密码必填。ldap_bind_base_dn集群搜索用户的 LDAP 基础 DNbase DN必填。ldap_conn_timeout可选。连接 LDAP 服务的超时时间。ldap_conn_read_timeout可选。连接中 LDAP 服务读操作的超时时间。ldap_ssl_conn_allow_insecure可选。是否允许与 LDAP 服务器建立非加密连接。默认值true。设为false表示访问 LDAP 必须使用 SSL 加密。ldap_ssl_conn_trust_store_path可选。存储 LDAP 服务器 SSL CA 证书的本地路径支持 pem 与 jks 格式。若证书由受信任机构签发则无需设置。ldap_ssl_conn_trust_store_pwd可选。访问本地存储的 LDAP 服务器 SSL CA 证书的密码。pem 格式证书无需密码仅 jks 格式证书需要。ldap_search_group_arg参数组控制 StarRocks 如何搜索组的参数。:::noteldap_group_dn与ldap_group_filter只能二选一同时指定二者不受支持源码注释同样明确了这一约束见 LDAPGroupProvider.java。 :::ldap_group_dn待搜索组的 DN。将直接使用该 DN 查询组。示例cnldapgroup1,ouGroup,dcstarrocks,dccom;cnldapgroup2,ouGroup,dcstarrocks,dccom多个组用分号分隔。ldap_group_filter可被 LDAP 服务器识别的自定义组过滤器将直接发送给 LDAP 服务器用于搜索组。示例((objectClassgroupOfNames)(cntestgroup))。ldap_group_identifier_attr用作组名称标识符的属性。ldap_search_user_arg参数组控制 StarRocks 如何识别组内用户的参数。ldap_group_member_attr表示组成员的属性。有效值member和memberUid。ldap_user_search_attr指定如何从成员属性值中提取用户标识符。可以显式定义一个属性如cn或uid也可以使用正则表达式。:::noteDN 匹配机制配置了ldap_user_search_attr时系统从组成员 DN 中提取指定值作为用户名并在组搜索时以登录用户名为 key未配置ldap_user_search_attr时系统直接用完整 DN 作为用户标识符并在组搜索时以认证时记录的 DN 作为 key。该设计使 LDAP Group Provider 能够适配不同 LDAP 环境尤其是 Microsoft AD 这类复杂环境。::::::tip与authentication_ldap_simple_bind_dn_pattern的交互当使用 DN 模式认证例如uid${USER}abc.com,ouPeople,dcexample,dccom${USER}替换被嵌入在更大的属性值中时推荐做法不配置ldap_user_search_attr系统将使用完整 DN 进行组匹配避免提取错误。如果必须配置使用只提取用户名的正则。例如 DN 模式为uid${USER}abc.com,ouPeople,dcexample,dccom时将ldap_user_search_attr设为uid([^,])abc.com只提取${USER}部分。简单的uid或uid([^,])会错误地提取出aliceabc.com而非alice。:::ldap_cache_arg参数组定义 LDAP 组信息缓存行为的参数。ldap_cache_refresh_interval可选。StarRocks 自动刷新已缓存 LDAP 组信息的间隔。单位秒。默认90015 分钟。从源码实现看所有 LDAP Group Provider 共享同一个调度线程池ScheduledExecutorService线程数由Config.group_provider_refresh_thread_num控制见 LDAPGroupProvider.java缓存以“用户 → 组集合”的形式保存在userToGroupCacheConcurrentHashMap中并通过调度任务周期性刷新组提供者被销毁时会取消对应的周期调度任务。示例一LDAP 环境假设 LDAP 服务器中包含如下组与成员信息-- Group information # testgroup, Group, starrocks.com dn: cntestgroup,ouGroup,dcstarrocks,dccom objectClass: groupOfNames cn: testgroup member: uidtest,oupeople,dcstarrocks,dccom member: uidtom,oupeople,dcstarrocks,dccom -- User information # test, People, starrocks.com dn: cntest,ouPeople,dcstarrocks,dccom objectClass: inetOrgPerson cn: test uid: test sn: FTE userPassword::为testgroup的成员创建组提供者ldap_group_providerCREATE GROUP PROVIDER ldap_group_provider PROPERTIES( typeldap, ldap_conn_urlldap://xxxx:xxx, ldap_bind_root_dncnadmin,dcstarrocks,dccom, ldap_bind_root_pwd123456, ldap_bind_base_dndcstarrocks,dccom, ldap_group_filter((objectClassgroupOfNames)(cntestgroup)), ldap_group_identifier_attrcn, ldap_group_member_attrmember, ldap_user_search_attruid([^,]) )上例使用ldap_group_filter搜索objectClass为groupOfNames且cn为testgroup的组因此在ldap_group_identifier_attr中指定cn来标识组名ldap_group_member_attr设为member即使用groupOfNames对象类中的member属性标识成员ldap_user_search_attr设为表达式uid([^,])用于从member属性值中识别用户。示例二Microsoft AD 环境假设 Microsoft AD 服务器中包含如下组与成员信息-- Group information # ADGroup, Groups, company.com dn: CNADGroup,OUGroups,DCcompany,DCcom objectClass: group cn: ADGroup member: CNJohn Doe,OUUsers,DCcompany,DCcom member: CNJane Smith,OUUsers,DCcompany,DCcom -- User information # John Doe, Users, company.com dn: CNJohn Doe,OUUsers,DCcompany,DCcom objectClass: user cn: John Doe sAMAccountName: johndoe为 Microsoft AD 环境创建 Group ProviderCREATE GROUP PROVIDER ad_group_provider PROPERTIES( typeldap, ldap_conn_urlldap://ad.company.com:389, ldap_bind_root_dnCNadmin,OUUsers,DCcompany,DCcom, ldap_bind_root_pwdpassword, ldap_bind_base_dnDCcompany,DCcom, ldap_group_filter((objectClassgroup)(cnADGroup)), ldap_group_identifier_attrcn, ldap_group_member_attrmember -- 注意不要配置 ldap_user_search_attr系统将使用完整 DN 进行匹配 )由于本示例未配置ldap_user_search_attr系统将在组缓存构建阶段直接使用完整 DN例如CNJohn Doe,OUUsers,DCcompany,DCcom作为用户标识符在组搜索阶段使用认证时记录的 DN 作为 key 搜索用户所属的组。这一方式特别适合 Microsoft AD 环境因为 AD 中的组成员可能缺少简单的用户名属性。将 Group Provider 与 Security Integration 结合创建组提供者后可将其与安全集成Security Integration结合使组提供者指定的用户能够登录 StarRocks。关于创建安全集成的更多信息参见 Authenticate with Security Integration。语法ALTER SECURITY INTEGRATION security_integration_name SET ( group_provider , permitted_groups )参数说明group_provider要与安全集成结合的组提供者名称多个组提供者用逗号分隔。设置后用户登录时 StarRocks 会在每个指定提供者下记录该用户的组信息。permitted_groups可选。允许登录 StarRocks 的组名多个组用逗号分隔。请确保指定的组能被所结合的组提供者检索到。示例ALTER SECURITY INTEGRATION LDAP SET ( group_providerldap_group_provider, permitted_groupstestgroup );向用户组授予角色可以通过 GRANT 向用户组授予角色。以下示例将角色example_role授予用户组analystsGRANT example_role TO EXTERNAL GROUP analysts;将 Group Provider 与外部授权系统Apache Ranger结合一旦在安全集成中配置了关联的组提供者StarRocks 会在用户登录时记录其组信息这些组信息会自动包含在与 Ranger 的授权流程中无需额外配置。更多关于 StarRocks 集成 Ranger 的操作指引参见 Manage permissions with Apache Ranger。总结Group Provider 是 StarRocks 面向企业级认证授权场景的关键扩展点它以“用户 → 组”映射的抽象见 GroupProvider.java为核心通过 LDAP、Unix、File 三种实现由 GroupProviderFactory.java 统一创建覆盖不同的组信息来源再经由 Security Integration 的group_provider、permitted_groups属性接入登录认证与 Ranger 授权链路配合GRANT ... TO EXTERNAL GROUP完成组级权限下发。生产环境中推荐重点关注 LDAP 场景下的 DN 匹配机制ldap_user_search_attr配置与否、缓存刷新间隔默认 900 秒以及 AD 环境下完整 DN 匹配的用法从而构建稳定、可维护的外部用户组管理体系。【免费下载链接】starrocksThe worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in-class performance for multi-dimensional analytics, real-time analytics, and ad-hoc queries. A Linux Foundation project.项目地址: https://gitcode.com/GitHub_Trending/st/starrocks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表