Kerberos Authentication

在本页面

Overview

MongoDB Enterprise 为 MongoDBClient 端对mongodmongos的 Kerberos 身份验证提供支持。 Kerberos 是用于大型 Client 端/服务器系统的行业标准身份验证协议。 Kerberos 允许 MongoDB 和应用程序利用现有的身份验证基础结构和流程。

Kerberos 组件和 MongoDB

Principals

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

校长属于称为* realms *的 Management 单位。对于每个领域,Kerberos 密钥分发中心(KDC)维护该领域的主体和与主体相关联的“Secret 密钥”的数据库。

对于 Client 端服务器认证,Client 端从 KDC 请求“票证”以访问特定资产。 KDC 使用 Client 端的机密和服务器的机密来构造票证,该票证允许 Client 端和服务器相互进行身份验证,同时将机密隐藏起来。

对于用于 Kerberos 支持的 MongoDB 的配置,有两种主要名称是感兴趣的:user principalsservice principals

User Principal

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

<username>@<KERBEROS REALM>

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

在版本 3.6.3 中更改:要与$external个身份验证用户(即 Kerberos,LDAP,x.509 用户)一起使用会话,用户名不能超过 10k 字节。

有关将用户添加到 MongoDB 以及对该用户进行身份验证的示例,请参阅在 Linux 上使用 Kerberos 身份验证配置 MongoDB在 Windows 上使用 Kerberos 身份验证配置 MongoDB

See also

Management 用户和角色,了解有关在 MongoDB 中创建和 Management 用户的一般信息。

Service Principal

每个 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)启动期间使用serviceNamemongo shell 或其他 Client 端也可以使用serviceName指定其他服务主体名称。

服务主体名称必须使用其服务主体名称的完全限定域名(FQDN)部分可通过网络访问。

默认情况下,Kerberos 尝试使用/etc/krb5.conf文件识别主机,然后再使用 DNS 解析主机。

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

Linux Keytab 文件

Linux 系统可以将service principal的 Kerberos 身份验证密钥存储在* keytab *文件中。在 Linux 上运行的每个 Kerberized mongodmongos实例必须有权访问包含其service principal密钥的密钥表文件。

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

Tickets

在 Linux 上,MongoDBClient 端可以使用 Kerberos 的kinit程序来初始化凭据缓存,以向服务器验证用户主体。

Windows Active Directory

与 Linux 系统不同,Windows 上运行的mongodmongos实例不需要访问密钥表文件。而是,mongodmongos实例从特定于 os 的凭据存储中读取其服务器凭据。

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

使用 Kerberos 进行身份验证

要为 MongoDB 配置 Kerberos 支持并进行身份验证,请参阅在 Linux 上使用 Kerberos 身份验证配置 MongoDB在 Windows 上使用 Kerberos 身份验证配置 MongoDB

Operational Considerations

DNS

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

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

系统时间同步

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

Kerberos 化的 MongoDB 环境

Driver Support

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

与其他 MongoDB 身份验证机制一起使用

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