文档菜单
文档首页
/
MongoDB 手册
/ / /

自管理部署上的 Kerberos 身份验证

本页内容

  • 概述
  • Kerberos 组件与 MongoDB
  • 运营注意事项
  • Kerberos 化 MongoDB 环境
  • 测试与验证

MongoDB企业版为MongoDB客户端到mongodmongos实例提供支持。Kerberos是一种适用于大型客户端/服务器系统的行业标准认证协议。Kerberos允许MongoDB和应用程序利用现有的认证基础设施和流程。MongoDB企业版仅支持Kerberos的MIT实现

在基于Kerberos的系统里,每个参与认证通信的参与者被称为“原则”,每个原则都必须有一个唯一名称。

原则属于称为“域”的行政单位。对于每个域,Kerberos密钥分发中心(KDC)维护一个包含该域原则及其相关“密钥”的数据库。

对于客户端-服务器认证,客户端从KDC请求访问特定资源的“票据”。KDC使用客户端的密钥和服务器密钥构造票据,允许客户端和服务器相互认证对方,同时隐藏密钥。

对于配置支持Kerberos的MongoDB,有两种类型的原则名称值得关注:用户原则服务原则

要使用Kerberos进行认证,您必须将Kerberos用户原则添加到MongoDB的$external数据库。用户原则名称的格式为

<username>@<KERBEROS REALM>

对于您希望使用Kerberos进行认证的每个用户,您必须在$external数据库中创建相应的用户。

要使用$external认证用户(Kerberos、LDAP或x.509用户)与客户端会话和因果一致性保证,用户名不能超过10k字节。

关于将用户添加到MongoDB以及以该用户身份进行认证的示例,请参阅在Linux上配置使用Kerberos认证的自托管MongoDB在Windows上配置使用Kerberos认证的自托管MongoDB

提示

另请参阅

在自托管部署中管理用户和角色,了解有关在MongoDB中创建和管理用户的通用信息。

每个MongoDB mongodmongos实例(或Windows上的mongod.exemongos.exe)都必须有一个关联的服务主体。服务主体名称的格式为

<service>/<fully qualified domain name>@<KERBEROS REALM>

对于MongoDB,<service>默认为mongodb。例如,如果m1.example.com是MongoDB服务器,并且example.com维护着EXAMPLE.COM Kerberos领域,那么m1应该有服务主体名称mongodb/m1.example.com@EXAMPLE.COM

要为<service>指定不同的值,请在启动mongodmongos(或mongod.exemongos.exe)时使用serviceName。使用mongosh或其他客户端也可以通过serviceName指定不同的服务主体名称。

服务主体名称必须可以通过其服务主体名称中的完全合格域名(FQDN)部分在网络上访问。

默认情况下,Kerberos在通过DNS解析主机之前,会尝试使用/etc/krb5.conf文件识别主机。

在Windows上,如果以服务方式运行MongoDB,请参阅将服务主体名称分配给MongoDB Windows服务

Linux系统可以将Kerberos认证密钥存储在密钥表文件中,用于服务主体。每个在Linux上运行的Kerberized mongodmongos实例都必须有权访问包含其服务主体密钥的密钥表文件。

为了确保密钥表文件的安全性,请使用文件权限限制只有运行mongodmongos进程的用户才能访问。

在Linux上,MongoDB客户端可以使用Kerberos的kinit程序初始化一个凭证缓存,用于认证用户主体到服务器。

与Linux系统不同,在Windows上运行的mongodmongos实例不需要访问keytab文件。相反,mongodmongos实例从特定于操作系统的凭证存储中读取其服务器凭证。

然而,您可以从Windows Active Directory导出keytab文件以在Linux系统上使用。有关更多信息,请参阅Ktpass

要配置MongoDB以支持Kerberos身份验证,请参阅在Linux上配置自管理MongoDB以使用Kerberos身份验证在Windows上配置自管理MongoDB以使用Kerberos身份验证

运行 mongodmongos 实例的每个主机都必须拥有 APTR DNS 记录,以提供正向和反向查找。

如果没有 APTR DNS 记录,则主机无法解析 Kerberos 域的组件或密钥分发中心 (KDC)。

要成功进行身份验证,每个 mongodmongos 实例的系统时间必须与 Kerberos 基础设施中其他主机的系统时间相差不超过 5 分钟。

以下MongoDB驱动程序支持Kerberos认证

尽管MongoDB支持与其他认证机制一起使用Kerberos认证,但仅根据需要添加其他机制。有关详细信息,请参阅在Linux上配置使用Kerberos认证的MongoDB在Windows上配置使用Kerberos认证的MongoDB中的“整合其他认证机制”部分。

程序 mongokerberos 提供了一种方便的方法来验证您的平台 Kerberos 配置是否适用于 MongoDB,并测试从 MongoDB 客户端进行的 Kerberos 认证是否按预期工作。有关更多信息,请参阅 mongokerberos 文档。

mongokerberos 仅在 MongoDB 企业版中可用。

返回

身份验证