Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

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

在此页面上

  • Overview
  • Kerberos 组件和 MongoDB
  • 操作注意事项
  • Kerberized MongoDB 环境
  • 测试与验证

MongoDB Enterprise支持MongoDB客户端对 mongodmongos实例进行Kerberos身份验证。 Kerberos是一种适用于大型客户端/服务器系统的行业标准身份验证协议。 Kerberos允许MongoDB和应用程序利用现有的身份验证基础架构和流程。 MongoDB Enterprise仅支持 MIT实施 的Kerberos。

在基于 Kerberos 的系统中,经身份验证的通信中的每个参与者都称为“主体”,并且每个主体都必须具有一个唯一的名称。

主体属于名为 Realm 的管理单位。对于每个 Realm,“Kerberos 密钥分发中心”(KDC) 都会维护该 Realm 主体和主体关联的“秘钥”数据库。

在客户端-服务器身份验证中,客户端向 KDC 请求访问特定资产的“票证”。KDC 使用客户端秘钥和服务器秘钥来构造票证,使客户端和服务器能够相互进行身份验证,同时保持秘钥为隐藏状态。

要为 MongoDB 配置 Kerberos 支持,需注意两种主体名称:用户主体服务主体

要使用 Kerberos 进行身份验证,必须将 Kerberos 用户主体添加到 MongoDB 的 $external 数据库。用户主体名称的格式为:

<username>@<KERBEROS REALM>

对于要使用 Kerberos 进行身份验证的每个用户,必须在 MongoDB 的 $external 数据库中创建相应的用户。

要对 $external 身份验证用户(Kerberos、LDAP 或 x.509 用户)使用客户端会话和因果一致性保证,用户名不能大于 10k 字节。

有关向MongoDB添加用户以及以该用户身份进行身份验证的示例,请参阅在Linux上使用Kerberos身份MongoDB配置自管理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 Server,并且 example.com 维护着 EXAMPLE.COM Kerberos Realm,则 m1 应具有服务主体名称 mongodb/m1.example.com@EXAMPLE.COM

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

服务主体名称必须可以通过网络进行访问,且需使用完全限定域名 (FQDN)。

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

在 Windows 上,如果将 MongoDB 作为服务运行,请参阅为 MongoDB Windows 服务分配服务主体名称

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

为保证 keytab 文件的安全,请使用文件权限,仅限运行 mongodmongos 进程的用户访问。

在 Linux 上,MongoDB 客户端可以使用 Kerberos 的 kinit 程序初始化凭证缓存,以在服务器中验证用户主体身份。

与 Linux 系统不同,在 Windows 上运行的mongodmongos实例不需要访问 keytab 文件。 相反,mongodmongos实例会从操作系统特有的档案存储区读取服务器档案。

不过,您可以从 Windows Active Directory 导出密钥表文件以在 Linux 系统上使用。有关更多信息,请参阅 Ktpass

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

运行 mongodmongos 实例的每个主机必须同时具有 APTR DNS 记录,才能提供正向和反向查询。

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

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

以下 MongoDB 驱动程序支持 Kerberos 身份验证:

尽管MongoDB支持将Kerberos身份验证与其他身份验证机制结合使用,但仅在需要时添加其他机制。 有关详细信息,请参阅在Linux上使用Kerberos身份MongoDB配置自管理MongoDB和在Windows上使用Kerberos身份验证配置自管理 MongoDB 中的Incorporate Additional Authentication Mechanisms部分。

mongokerberos 程序提供了一种便捷的方法,以验证您的平台的 Kerberos 配置是否与 MongoDB 一起使用,并测试 MongoDB 客户端的 Kerberos 身份验证是否按预期运行。有关更多信息,请参阅 mongokerberos 文档。

mongokerberos 仅在 MongoDB Enterprise 中可用。

后退

身份验证