为 BI Connector 配置 Kerberos
2.5 版本新增功能。
MongoDB Connector for BI 支持 Kerberos 身份验证,用于连接 BI 工具以及 BI Connector 的管理员用户与 MongoDB 进行身份验证。
以下部分将指南您配置 BI Connector,通过两个最常见的使用案例使用 Kerberos 身份验证:
向 Active Directory 进行身份验证的 Windows/Linux 客户端计算机
向 Linux KDC进行身份验证的 macOS 客户端计算机
如果您有其他使用案例,请联系 MongoDB 支持部门以获取帮助。
重要
任何用户名的域部分必须全部大写字母。 这部分用户名对应于Kerberos 域或 Active Directory 域。 区分大小写。
Active Directory 配置
确保您已配置域。
创建用户 对于您创建的域上的MongoDB 。
创建用户 用于您创建的域上的 MongoSQL。
为MongoDB服务注册一个SPN 。
为 MongoSQL 服务注册一个SPN 。
为您的 MongoSQL 服务用户启用委派。
例子
假设此配置:
你的名字是
Grace Smith
。您的Windows域名为
EXAMPLE.COM
。您正在名为
BI.EXAMPLE.COM
的Windows托管上运行BI工具。
在 Active Directory 中,您可以创建三个用户:
对于MongoDB:
mongodb@EXAMPLE.COM
对于BI Connector:
mongosql@EXAMPLE.COM
为您:
grace.smith@EXAMPLE.COM
为每个服务创建一个SPN :
setspn.exe -S mongodb/BI.EXAMPLE.COM mongodb setspn.exe -S mongosql/BI.EXAMPLE.COM mongosql
注意
这些名称可以是您选择的任何名称,只要您在整个设置过程中一致使用这些名称即可。
打开 Active Directory 管理中心 ,然后双击MongoDB服务用户 (mongodb
)。
将mongosql
用户设置为BI.EXAMPLE.COM
托管中mongodb
用户的委托。
注意
Linux模式用户向 ADC 进行身份验证
如果您从Linux托管对用户进行身份验证,并且模式用户使用 keytab文件而不是密码,则除了在MongoDB中创建用户之外,还需要执行以下操作:
为模式用户创建UPN 。
设置 KRB5 _CLIENT_KTNAME 此用户的密钥表的环境变量。
此
KRB5_CLIENT_KTNAME
必须包含模式用户和BI Connector服务用户的密钥。
MongoDB 配置
net: bindIp: <fullHostnameOfBIConnector> setParameter: authenticationMechanisms: "GSSAPI" 有关更多信息,请参阅net.bindIp 、 setParameter和authenticationMechanisms。
以您在 Active Directory 中创建的MongoDB Windows用户身份运行
mongod
。
BI Connector 配置
以您在 Active Directory 中创建的 MongoSQL Windows用户身份启动
mongosqld
。将以下BI Connector身份验证设置添加到
mongosqld
配置文件:security: enabled: true defaultMechanism: "GSSAPI" defaultSource: "$external" gssapi: hostname: <host running mongosqld> serviceName: <name of mongosqld service> 重要
设置约束
如果已将 Active Directory 配置为使用 约束委派 ,将
security.gssapi.constrainedDelegation
: true
添加到mongosqld
配置文件,否则身份验证将失败。
有关更多信息,请参阅:
添加BI Connector将用于与MongoDB进行身份验证的以下设置:
mongodb: net: uri: "mongodb://<hostname and port of mongodb database>/" auth: username: <database username> password: <database password> source: "$external" mechanism: "GSSAPI" 有关更多信息,请参阅:
例子
你的名字是
Grace Smith
。您的Windows域名为
EXAMPLE.COM
。您正在名为
BI.EXAMPLE.COM
的Windows托管上运行BI工具。
在BI.EXAMPLE.COM
上:
将MongoDB和MongoDB Connector for BI安装为服务。
编辑
mongod.cfg
文件,使其类似于以下内容:systemLog: destination: "file" path: "c:\\data\\log\\mongod.log" verbosity: 2 storage: dbPath: "c:\\data\\db" net: bindIp: BI.EXAMPLE.COM setParameter: authenticationMechanisms: "GSSAPI" 登录到
mongo
shell 并创建 BI Connector 用户。db.getSiblingDB("$external").createUser( { user: "grace.smith@EXAMPLE.COM", roles: [ { role: "readAnyDatabase", db: "admin" } ] } ) 编辑
mongosqld.cfg
文件,使其类似于以下内容:systemLog: path: "c:\\data\\log\\mongosqld.log" logAppend: true logRotate: "reopen" verbosity: 3 runtime: memory: maxPerStage: 102400 net: bindIp: BI.EXAMPLE.COM port: 3306 security: enabled: true defaultSource: "$external" defaultMechanism: "GSSAPI" gssapi: hostname: "BI.EXAMPLE.COM" serviceName: "mongosql" mongodb: net: uri: "mongodb://BI.EXAMPLE.COM/" auth: username: "grace.smith@EXAMPLE.COM" password: "abc123!" source: "$external" mechanism: "GSSAPI" processManagement: service: displayName: "MongoDB BI Connector" 打开 Services 。
将MongoDB设置为 Log on as: This account:
mongodb@EXAMPLE.COM
将MongoDB Connector for BI设置为 Log on as: This account:
mongosql@EXAMPLE.COM
启动MongoDB和MongoDB Connector for BI服务。
注意
Linux模式用户向 ADC 进行身份验证
如果要从Linux托管对用户进行身份验证,并且模式用户将使用用户名和密码,则需要满足以下条件:
将
mongodb.net.auth.username
设置为模式用户的UPN 。将
mongodb.net.auth.password
设置为无值。
MongoDB 配置
确保您的
mongod
和mongos
实例正在运行MongoDB Enterprise。确认您在 MongoDB配置文件中设置了以下选项:
net: bindIp: <fullHostnameOfBIConnector> setParameter: authenticationMechanisms: "GSSAPI" 创建密钥表文件 在具有
mongosql
和 所需的Kerberos 服务主体 的 KDCmongosql2
上。例子
mongosql/<fullHostnameOfBIConnector>@<KERBEROS_REALM>
BI Connector 配置
将您为 MongoDB 部署创建的
keytab
文件复制到为 BI Connector 提供服务的同一主机。如果您的密钥表不使用默认名称 (
krb5.keytab
),则必须将 KRB5 _KTNAME 环境变量。注意
macOS 上的 Kerberos 实施, Heimdal ,与
default_keytab_name
MIT Kerberos 不同,不支持 配置设置。您必须设置KRB5_KTNAME
环境变量。如果 Kerberos 配置文件不使用默认名称 (
krb5.conf
),则必须将 KRB5 _CONFIG 环境变量。(Heimdal 还支持 此环境变量 。)将以下BI Connector身份验证设置添加到
mongosqld
配置文件:security: enabled: true defaultMechanism: "GSSAPI" defaultSource: "$external" gssapi: hostname: <host running mongosqld> serviceName: <name of mongosqld service> 有关更多信息,请参阅:
添加BI Connector将用于与MongoDB进行身份验证的以下设置:
mongodb: net: uri: "mongodb://<hostname and port of mongodb database>/" auth: username: <database username> password: <database password> source: "$external" mechanism: "GSSAPI" 有关更多信息,请参阅:
提示
在本地主机上使用 Kerberos 测试 BI Connector
如果您使用在mongosqld
上运行的 来测试 Kerberos,则必须在localhost
net.unixDomainSocket.enabled
true
mongosqld 配置文件中将 设置为 。