You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Superset配置基于Active Directory的单点登录(SSO)

RHEL 7.5 下Superset 1.3.1对接AD SSO操作步骤

一、安装依赖

首先安装系统级依赖:
yum install -y openldap-devel python3-devel gcc krb5-devel
激活Superset运行的虚拟环境(路径替换为你实际的虚拟环境路径):
source /opt/superset/venv/bin/activate
安装Python依赖包,适配Superset 1.3.1版本:
pip install python-ldap flask-ldap3-login==0.9.16

二、配置AD账号密码登录(基础版本)

如果只需要AD用户用域账号密码登录Superset,无需免密SSO,按以下配置:
编辑Superset配置文件superset_config.py(默认路径为~/.superset/superset_config.py,或你自定义的SUPERSET_CONFIG_PATH对应路径),添加以下内容,占位符替换为实际AD信息:

from flask_appbuilder.security.manager import AUTH_LDAP

# 认证方式设置为LDAP
AUTH_TYPE = AUTH_LDAP
# AD域控地址,启用SSL请替换为ldaps://<域控IP>:636
AUTH_LDAP_SERVER = "ldap://<AD域控IP>:389"
# 开启SSL时打开以下配置
# AUTH_LDAP_USE_SSL = True
# AUTH_LDAP_TLS_CACERTFILE = "/path/to/ad_ca.crt"

# 用于查询AD的服务账号,格式为 域名\\账号名 或完整DN
AUTH_LDAP_BIND_USER = "DOMAIN\\query_user"
AUTH_LDAP_BIND_PASSWORD = "<服务账号密码>"

# AD用户搜索基准路径,替换为你实际的域结构
AUTH_LDAP_SEARCH = "DC=yourdomain,DC=com"
# AD账号登录名字段,AD默认用sAMAccountName
AUTH_LDAP_UID_FIELD = "sAMAccountName"

# 首次登录自动创建Superset用户
AUTH_USER_REGISTRATION = True
# 新用户默认角色,可设置为Admin/Gamma/Viewer等自定义角色
AUTH_USER_REGISTRATION_ROLE = "Gamma"

# 可选:AD安全组映射Superset角色
AUTH_LDAP_GROUP_FIELD = "memberOf"
AUTH_LDAP_SEARCH_GROUP = "OU=Groups,DC=yourdomain,DC=com"
AUTH_ROLES_MAPPING = {
    "CN=Superset_Admin,OU=Groups,DC=yourdomain,DC=com": ["Admin"],
    "CN=Superset_Viewer,OU=Groups,DC=yourdomain,DC=com": ["Viewer"],
}
# 登录时自动同步角色
AUTH_LDAP_SYNC_ROLES_AT_LOGIN = True

三、配置域内免密SSO(Kerberos方案)

如果需要域内已登录AD的用户无需输入密码直接访问Superset,在上述基础配置外,额外执行以下操作:

3.1 配置系统Kerberos

编辑/etc/krb5.conf,替换为实际域信息:

[libdefaults]
 default_realm = YOURDOMAIN.COM
 dns_lookup_kdc = true
 dns_lookup_realm = true

[realms]
 YOURDOMAIN.COM = {
  kdc = <AD域控IP>
  admin_server = <AD域控IP>
  default_domain = yourdomain.com
 }

[domain_realm]
 .yourdomain.com = YOURDOMAIN.COM
 yourdomain.com = YOURDOMAIN.COM

3.2 生成服务keytab

在AD中为Superset服务创建服务主体,导出keytab文件上传到RHEL服务器的/etc/superset.keytab,设置权限:

chown superset:superset /etc/superset.keytab
chmod 600 /etc/superset.keytab

3.3 调整Superset配置

在superset_config.py中修改认证方式,保留之前的LDAP配置用于同步用户信息:

from flask_appbuilder.security.manager import AUTH_REMOTE_USER
AUTH_TYPE = AUTH_REMOTE_USER
# 读取Kerberos认证传递的用户头
AUTH_REMOTE_USER_HEADER = "REMOTE_USER"

3.4 配置Web服务Kerberos认证

以Apache为例,启用mod_auth_kerb模块,在Superset对应的虚拟主机配置中添加以下内容:

<Location />
    AuthType Kerberos
    AuthName "Superset SSO"
    KrbMethodNegotiate On
    KrbMethodK5Passwd Off
    KrbAuthRealms YOURDOMAIN.COM
    KrbServiceName HTTP/superset.yourdomain.com@YOURDOMAIN.COM
    Krb5KeyTab /etc/superset.keytab
    Require valid-user
    RequestHeader set REMOTE_USER %{REMOTE_USER}s
</Location>

四、生效验证

  • 测试配置合法性:在Superset虚拟环境下执行superset check,无报错说明配置正确。
  • 重启所有Superset相关服务:如果用systemd管理,执行systemctl restart superset-*,同步重启Web服务(Apache/Nginx)。
  • 验证登录:基础AD认证模式直接用域账号密码登录即可;免密SSO模式下,域内已登录用户访问Superset地址可直接进入系统,无需输入账号密码。

注意事项:

  1. 不要升级flask-ldap3-login到1.x版本,和Superset 1.3.1依赖的Flask-AppBuilder 3.x版本存在兼容性问题。
  2. 组映射配置的安全组DN必须和AD中的完全一致,否则无法正常同步角色。
  3. 启用LDAPS时需将AD的CA证书加入系统信任存储,避免证书校验失败。

内容的提问来源于stack exchange,提问作者SkOleg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:54:04