MongoDB Enterprise支持Kerberos。Kerberos 是一种网络身份验证协议。MongoDB 助手可以对运行Kerberos 的MongoDB实例进行身份验证。
先决条件
配置 KDC 以颁发具有最短四小时生命周期的票证
Kerberos票证可以在有限的时间内对用户进行身份验证。您必须配置Kerberos密钥分发中心 (KDC),以颁发有效期为四小时或更长时间的票证。MongoDB 助手会定期更新票证。 KDC 服务为用户和主机提供会话票证和临时会话密钥。
添加 Kerberos 作为部署的身份验证机制
MongoDB Agent与部署中的MongoDB数据库交互,就像MongoDB用户一样。因此,您必须配置 MongoDB 部署和 MongoDB Agent 以支持身份验证。
您可以在添加部署时指定部署的身份验证机制,也可以编辑现有部署的设置。 部署必须至少启用您希望MongoDB Agent使用的身份验证机制。 MongoDB Agent可以使用任何受支持的身份验证机制。
就本教程而言,您必须确保满足以下条件:
您的部署支持 Kerberos 身份验证和
MongoDB Agent 使用 Kerberos 身份验证。
要了解如何启用 Kerberos 身份验证,请参阅为 Ops Manager 项目启用 Kerberos 身份验证。
配置 MongoDB Agent 主机以使用 Kerberos
必须在任何运行监控或备份的主机上安装两个与 Kerberos 相关的文件:
步骤
为 MongoDB 助手创建 Kerberos 用户主体
KerberosMongoDB Agent为MongoDB 助手创建或选择Kerberos用户主体名称 (UPN)。
UPN的格式分为两部分,因此可以在 Kerberos 域 中唯一标识服务:
组件 | 说明 |
|---|---|
服务名称 | 托管向Kerberos 域提供的一项服务的名称,例如 重要MongoDB Ops Manager 6.0.0 弃用SNMP警报。 MongoDB Ops Manager 7.0.0 将不包含SNMP警报。 要学习;了解有关其他警报选项的更多信息,请参阅第三方服务集成。 |
Kerberos Realm | 共享同一 Kerberos 数据库的一组托管主机和服务。 根据 Kerberos 命名规则, |
例子
在设置为EXAMPLE.COM的 Kerberos 域 中,MongoDB Agent 会将其UPN设置为: mongodb-agent@EXAMPLE.COM
keytabKerberos为MongoDB 助手的Kerberos UPN 生成MongoDB Agent 文件。
为MongoDB 助手UPN 生成 keytab文件(),并将其复制到运行MongoDB *.keytab助手的托管。确保运行MongoDB 助手的系统用户与拥有 keytab文件的系统用户相同。
为 MongoDB 助手 UPN 创建用户并分配角色
当自动化被激活时,Ops Manager 管理 MongoDB Agent 身份验证。
要为 MongoDB Agent 身份验证配置 Kerberos,请参阅为 Ops Manager 项目启用 Kerberos 身份验证。
为 创建Kerberos UPN MongoDB AgentMongoDBMongoDB Agent后,在部署上创建与 的 UPN 相对应的 用户并授予权限。
在何处创建MongoDB用户取决于您是否使用LDAP授权。
如果在部署中使用LDAP授权,则必须在MongoDB服务器上为创建LDAP用户和LDAPMongoDB AgentLDAP群组。 创建LDAP用户和群组后,将LDAP群组映射到部署的admin数据库中的MongoDB角色。
警告
使用LDAP授权时,请勿在$external数据库中创建任何MongoDB用户。 如果$external数据库中存在MongoDB用户并且已启用LDAP授权,则MongoDB 3.4及更高版本不会启动。
对于代表MongoDB 的MongoDB Agent 用户:
在LDAPLDAP 服务器上创建一个以 的MongoDB Agent UPN 命名的新 用户。
LDAP创建名称与MongoDB Agent 角色匹配的 群组。
在
admin数据库中创建具有适当权限的MongoDB Agent角色。注意
激活自动化后,自动化会自动为MongoDB Agent用户创建角色以进行LDAP身份验证。
将LDAP用户分配到LDAP群组。
提示
要学习;了解如何: | 看 |
|---|---|
创建LDAP用户 | LDAP实施的文档。 |
创建LDAP群组 | LDAP实施的文档。 |
为MongoDB Agent分配适当的角色 | |
映射LDAP群组和MongoDB角色 | MongoDB手册中 LDAP授权 页面的 LDAP角色部分 。 |
在没有 自动化的情况下配置LDAP 授权MongoDB Ops Manager | MongoDB手册中的LDAP授权页面。 |
如果您不使用LDAP授权,则必须将MongoDB Agent的UPN作为用户添加到MongoDB部署的 $external数据库中。 如果没有LDAP授权, MongoDB会使用$external数据库根据Kerberos对用户进行身份验证。
注意
要查找 MongoDB 助手的适当角色,请参阅MongoDB Agent MongoDB Agent的访问权限。
从mongosh中,发出以下命令以创建MongoDB用户:
db.getSiblingDB("$external").createUser( { user : "<Kerberos Principal>", roles : [ { role : "clusterAdmin", db : "admin" }, { role : "readWriteAnyDatabase", db : "admin" }, { role : "userAdminAnyDatabase", db : "admin" }, { role : "dbAdminAnyDatabase", db : "admin" }, { role : "backup", db : "admin" }, { role : "restore", db : "admin" } ] } )