为 Kerberos 配置 MongoDB Agent
MongoDB Enterprise支持 Kerberos。 Kerberos 是一种网络身份验证协议。可以对运行MongoDB Agent 的MongoDB Kerberos实例进行身份验证。
先决条件
配置 KDC 以颁发具有最短四小时生命周期的票证
Kerberos 票证可以在有限的时间内对用户进行身份验证。 您必须 配置 Kerberos 密钥分发中心 (KDC) 开具有效期为四小时或更长时间的票证。MongoDB Agent会定期更新票证。 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 相关的文件:
创建或配置 krb5 .confKerberos 配置文件。
平台默认路径注意Linux
/etc/krb5.conf
Windows
%WINDIR%\krb5.ini
这是非基于 Active 目录 的 Kerberos 实施的默认路径。请参阅适用于您的 Windows 版本的 Kerberos 实施文档,了解 Kerberos 配置文件的存储位置。
在 Linux 系统上:确保 kinit 二进制文件位于
/usr/bin/kinit
。kinit
获取或续订 Kerberos 票证授予票证,该票证使用 Kerberos 对代理进行身份验证。
步骤
为 MongoDB 助手创建 Kerberos 用户主体
KerberosMongoDB Agent为MongoDB 助手创建或选择Kerberos用户主体名称 (UPN)。
UPN的格式分为两部分,因此可以在 Kerberos 域 中唯一标识服务:
组件 | 说明 |
---|---|
服务名称 | 主机向 Kerberos 域 提供的一项服务的名称,例如 |
Kerberos Realm | 共享同一 Kerberos 数据库的一组托管主机和服务。 根据 Kerberos 命名规则, |
例子
在设置为EXAMPLE.COM
的 Kerberos 域 中,MongoDB Agent 会将其UPN设置为: mongodb-agent@EXAMPLE.COM
keytab
Kerberos为MongoDB 助手的Kerberos UPN 生成MongoDB Agent 文件。
生成 密钥表 文件 (*.keytab
) 的MongoDB Agent UPN ,并将其复制到运行MongoDB Agent 的主机。确保运行MongoDB Agent的操作系统用户与拥有 keytab
文件的操作系统用户相同。
为 MongoDB 助手 UPN 创建用户并分配角色
当自动化被激活时,Ops Manager 管理 MongoDB Agent 身份验证。
要为 MongoDB Agent 身份验证配置 Kerberos,请参阅为 Ops Manager 项目启用 Kerberos 身份验证。
为 创建Kerberos UPN MongoDB AgentMongoDBMongoDB Agent后,在部署上创建与 的 UPN 相对应的 用户并授予权限。
在何处创建MongoDB用户取决于您是否使用LDAP授权。
注意
从 MongoDB 8.0 开始,LDAP 身份验证和授权已弃用。该功能可用,并将在 MongoDB 的整个生命周期内继续运行,无需更改 8。LDAP 将在将来的主要版本中删除。
有关详细信息,请参阅 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" } ] } )