Kerberos 认证

概述

MongoDB Enterprise支持MongoDB客户端到mongod和mongos实例的Kerberos身份验证。Kerberos是用于大型客户机/服务器系统的行业标准身份验证协议。Kerberos允许MongoDB和应用程序利用现有的身份验证基础设施和流程。MongoDB Enterprise仅支持 MIT 执行 的Kerberos。

Kerberos 组件和 MongoDB

Principals

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

校长属于称为领域的行政单位。对于每个领域,Kerberos Key Distribution Center (KDC) 维护一个数据库,其中包含领域的主体和主体的关联“秘密密钥”。

对于客户端-服务器身份验证,客户端向 KDC 请求“票证”以访问特定资产。KDC 使用客户端的秘密和服务器的秘密构造票证,允许客户端和服务器相互认证,同时保持秘密隐藏。

对于 Kerberos 支持的 MongoDB 配置,有两种主体名称很重要:用户主体服务负责人。

User Principal

要使用 Kerberos 进行身份验证,您必须将 Kerberos 用户主体添加到 MongoDB 的$external数据库中。用户主体名称具有以下形式:

<username>@<KERBEROS REALM>

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

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

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

提示:

也可以看看:

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

Service Principal

每个 MongoDBmongodmongos实例(或 exeWindowsexe上的)都必须有一个关联的服务主体。服务主体名称具有以下形式:

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

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

要为 指定不同的值<service>,请 serviceName在启动期间使用mongodor mongos(或exeor exe)。 mongosh或者其他客户端也可以使用指定不同的服务主体名称serviceName

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

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

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

Linux 密钥表文件

Linux 系统可以存储 Kerberos 身份验证密钥 服务负责人密钥表 文件中。在 Linux 上运行的每个 Kerberizedmongod实例mongos都必须有权访问包含其密钥的密钥表文件服务负责人。

mongod为保证 keytab 文件的安全,请使用文件权限将访问权限限制为仅运行或进程的用户mongos

Tickets

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

Windows 活动目录

mongod与在 Linux 系统上不同,mongos 在 Windows 上运行的实例不需要访问密钥表文件。相反,mongodmongos实例从特定于操作系统的凭据存储中读取它们的服务器凭据。

但是,您可以从 Windows Active Directory 导出密钥表文件以在 Linux 系统上使用。看通行证了解更多信息。

使用 Kerberos 进行身份验证

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

操作注意事项

域名系统

每个运行mongodormongos实例的主机必须同时具有APTRDNS 记录以提供正向和反向查找。

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

系统时间同步

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

Kerberized MongoDB 环境

驱动程序支持

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

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

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

测试和验证

该程序与 MongoDB 4.4 一起推出,mongokerberos 提供了一种方便的方法来验证平台的 Kerberos 配置以用于 MongoDB,并测试来自 MongoDB 客户端的 Kerberos 身份验证是否按预期工作。mongokerberos有关详细信息,请参阅 文档.

mongokerberos仅在 MongoDB Enterprise 中可用。

翻译:韩鹏帅

原文:Kerberos Authentication

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""