Docs 菜单
Docs 主页
/
MongoDB Enterprise Kubernetes Operator
/ /

使用 LDAP 进行安全客户端身份验证

在此页面上

MongoDB Enterprise支持:

  • 将身份验证请求代理到轻量级目录访问协议 (LDAP) 服务。

  • 与 LDAP 服务器的简单 SASL 绑定。 MongoDB Enterprise 可以通过 saslauthd或通过操作系统库绑定到 LDAP 服务器。

要了解更多信息,请参阅 MongoDB Server 文档中的LDAP 代理身份验证LDAP 授权部分。

您可以使用 Kubernetes 操作符 配置 LDAP,对连接到 MongoDB 部署的应用程序进行身份验证。本指南介绍如何配置从客户端应用程序到 MongoDB 部署的 LDAP 身份验证。

注意

你无法在 Kubernetes 集群中保护 MongoDB 的独立实例。

  • CustomResourceDefinitions 中配置 LDAP ,使用 Kubernetes Operatorspec.security.authentication.ldap MongoDB 资源规范中 下的参数以及特定于 MongoDB 助手的其他 安全 LDAP 设置 。本部分中的过程描述了所需的设置,并提供了 LDAP 配置的示例。

  • 为了提高安全性,请考虑部署TLS 加密的副本集TLS 加密的分片集群。 使用TLS加密是可选的。 默认情况下, LDAP流量以纯文本形式发送。 这意味着用户名和密码会受到网络威胁。 许多现代目录服务(例如 Microsoft Active Directory)都需要加密连接。 考虑使用基于 TLS / SSL LDAP 对 Kubernetes 操作符 MongoDB 部署中的身份验证请求进行加密。

在为 MongoDB 部署配置 LDAP 身份验证之前,请完成以下任务:

1

更改此 YAML 文件的设立,以匹配所需的副本集配置。

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-replica-set>
6spec:
7 members: 3
8 version: "4.2.2-ent"
9 opsManager:
10 configMapRef:
11 # Must match metadata.name in ConfigMap file
12 name: <configMap.metadata.name>
13 credentials: <mycredentials>
14 type: ReplicaSet
15 persistent: true
16 security:
17 tls:
18 ca: <custom-ca>
19 certsSecretPrefix: <prefix>
20...
2

打开您首选的文本编辑器并粘贴 对象 规范位于资源文件末尾的spec 部分。

3

要在部署中启用LDAP ,请在 Kubernetes 对象中配置以下设置:

类型和必要性
说明
例子
boolean,
required
设置为true可启用 LDAP 身份验证。
true
string,
required
指定连接到 LDAP 服务器时 MongoDB 绑定到的 LDAP 标识名。
cn=admin,dc=example,dc=org
string,
required
指定 密钥 名称 包含连接到 LDAP 服务器时 MongoDB 绑定的 LDAP 绑定标识名的密码。
<secret-name>
string,
optional
添加 ConfigMap 的名称,该名称存储用于签署您部署的 TLS 证书的自定义 CA
<configmap-name>
string,
optional
添加用于存储验证 LDAP 服务器的 TLS 证书的 CA 的字段名称。
<configmap-key>
array of strings,
required
指定一个或多个 LDAP 服务器的hostname:port组合列表。 对于每个服务器,使用单独的一行。
<example.com:636>
string,
optional
设置为tls可使用 LDAPS (LDAP over TLS )。 如果 LDAP 服务器不接受 TLS,请留空。 在部署数据库资源时,必须启用 TLS 才能使用此设置。
tls
string,
required

指定映射,将提供给mongodmongos进行身份验证的用户名映射到 LDAP 标识名 (DN)。

要了解更多信息,请参阅security.ldap.userToDNMappingLDAP LDAP MongoDB Server文档中的 查询模板 。

<match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org">
string,
required
设置为LDAP可通过 LDAP 启用身份验证。
LDAP

生成的配置可能类似于以下示例:

security:
authentication:
enabled: true
# Enabled LDAP Authentication Mode
modes:
- "LDAP"
- "SCRAM"
# LDAP related configuration
ldap:
# Specify the hostname:port combination of one or
# more LDAP servers
servers:
- "ldap1.example.com:636"
- "ldap2.example.com:636"
# Set to "tls" to use LDAP over TLS. Leave blank if
# the LDAP server doesn't accept TLS. You must enable TLS when you deploy the database resource to use this setting.
transportSecurity: "tls"
# If TLS is enabled, add a reference to a ConfigMap that
# contains a CA certificate that validates the LDAP server's
# TLS certificate.
caConfigMapRef:
name: "<configmap-name>"
key: "<configmap-entry-key>"
# Specify the LDAP Distinguished Name to which
# MongoDB binds when connecting to the LDAP server
bindQueryUser: "cn=admin,dc=example,dc=org"
# Specify the password with which MongoDB binds
# when connecting to an LDAP server. This is a
# reference to a Secret Kubernetes Object containing
# one "password" key.
bindQueryPasswordSecretRef:
name: "<secret-name>"

有关 LDAP 设置的完整列表,请参阅 Kubernetes 操作符 MongoDB 资源规范中的安全设置。另请参阅启用 LDAP 的 Kubernetes 操作符 部署中 MongoDB Agent 用户的spec.security.authentication.agents.automationUserName设置。

4

使用 Kubernetes Operator MongoDB 资源规范中特定于助手的安全设置更新 MongoDB资源。 生成的配置可能类似于以下示例:

security:
authentication:
agents:
automationPasswordSecretRef:
key: automationConfigPassword
name: automation-config-password
automationUserName: mms-automation-agent
clientCertificateSecretRef:
name: agent-client-cert
mode: LDAP
enabled: true
ldap:
bindQueryPasswordSecretRef:
name: bind-query-password
bindQueryUser: cn=admin,dc=example,dc=org
servers:
- openldap.namespace.svc.cluster.local:389
userToDNMapping: '[{match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org"}]'
modes:
- LDAP
- SCRAM
requireClientTLSAuthentication: false
5
6

调用以下 Kubernetes 命令来更新副本集:

kubectl apply -f <replica-set-conf>.yaml
7

要检查 MongoDB 资源的状态,请使用以下命令:

kubectl get mdb <resource-name> -o yaml -w

设置 -w (观看) 标志后,当配置更改时,输出将立即刷新,直到状态阶段达到 Running 状态。要了解有关资源部署状态的详情,请参阅 Kubernetes Operator 故障排除

1

更改此 YAML 文件的设置,以匹配所需的分片集群配置。

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-sharded-cluster>
6spec:
7 shardCount: 2
8 mongodsPerShardCount: 3
9 mongosCount: 2
10 configServerCount: 3
11 version: "4.2.2-ent"
12 opsManager:
13 configMapRef:
14 name: <configMap.metadata.name>
15 # Must match metadata.name in ConfigMap file
16 credentials: <mycredentials>
17 type: ShardedCluster
18 persistent: true
19 security:
20 tls:
21 ca: <custom-ca>
22 certsSecretPrefix: <prefix>
23...
2

打开您首选的文本编辑器并粘贴 对象 规范位于资源文件末尾的spec 部分。

3

要在部署中启用LDAP ,请在 Kubernetes 对象中配置以下设置:

类型和必要性
说明
例子
boolean,
required
设置为true可启用 LDAP 身份验证。
true
string,
required
指定连接到 LDAP 服务器时 MongoDB 绑定到的 LDAP 标识名。
cn=admin,dc=example,dc=org
string,
required
指定 密钥 名称 包含连接到 LDAP 服务器时 MongoDB 绑定的 LDAP 绑定标识名的密码。
<secret-name>
string,
optional
添加 ConfigMap 的名称,该名称存储用于签署您部署的 TLS 证书的自定义 CA
<configmap-name>
string,
optional
添加用于存储验证 LDAP 服务器的 TLS 证书的 CA 的字段名称。
<configmap-key>
array of strings,
required
指定一个或多个 LDAP 服务器的hostname:port组合列表。 对于每个服务器,使用单独的一行。
<example.com:636>
string,
optional
设置为tls可使用 LDAPS (LDAP over TLS )。 如果 LDAP 服务器不接受 TLS,请留空。 在部署数据库资源时,必须启用 TLS 才能使用此设置。
tls
string,
required

指定映射,将提供给mongodmongos进行身份验证的用户名映射到 LDAP 标识名 (DN)。

要了解更多信息,请参阅security.ldap.userToDNMappingLDAP LDAP MongoDB Server文档中的 查询模板 。

<match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org">
string,
required
设置为LDAP可通过 LDAP 启用身份验证。
LDAP

生成的配置可能类似于以下示例:

security:
authentication:
enabled: true
# Enabled LDAP Authentication Mode
modes:
- "LDAP"
- "SCRAM"
# LDAP related configuration
ldap:
# Specify the hostname:port combination of one or
# more LDAP servers
servers:
- "ldap1.example.com:636"
- "ldap2.example.com:636"
# Set to "tls" to use LDAP over TLS. Leave blank if
# the LDAP server doesn't accept TLS. You must enable TLS when you deploy the database resource to use this setting.
transportSecurity: "tls"
# If TLS is enabled, add a reference to a ConfigMap that
# contains a CA certificate that validates the LDAP server's
# TLS certificate.
caConfigMapRef:
name: "<configmap-name>"
key: "<configmap-entry-key>"
# Specify the LDAP Distinguished Name to which
# MongoDB binds when connecting to the LDAP server
bindQueryUser: "cn=admin,dc=example,dc=org"
# Specify the password with which MongoDB binds
# when connecting to an LDAP server. This is a
# reference to a Secret Kubernetes Object containing
# one "password" key.
bindQueryPasswordSecretRef:
name: "<secret-name>"

有关 LDAP 设置的完整列表,请参阅 Kubernetes 操作符 MongoDB 资源规范中的安全设置。另请参阅启用 LDAP 的 Kubernetes 操作符 部署中 MongoDB Agent 用户的spec.security.authentication.agents.automationUserName设置。

4

使用 Kubernetes Operator MongoDB 资源规范中特定于助手的安全设置更新 MongoDB资源。 生成的配置可能类似于以下示例:

security:
authentication:
agents:
automationPasswordSecretRef:
key: automationConfigPassword
name: automation-config-password
automationUserName: mms-automation-agent
clientCertificateSecretRef:
name: agent-client-cert
mode: LDAP
enabled: true
ldap:
bindQueryPasswordSecretRef:
name: bind-query-password
bindQueryUser: cn=admin,dc=example,dc=org
servers:
- openldap.namespace.svc.cluster.local:389
userToDNMapping: '[{match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org"}]'
modes:
- LDAP
- SCRAM
requireClientTLSAuthentication: false
5
6

调用以下 Kubernetes 命令来更新分片集群:

kubectl apply -f <sharded-cluster-conf>.yaml
7

要检查 MongoDB 资源的状态,请使用以下命令:

kubectl get mdb <resource-name> -o yaml -w

设置 -w (观看) 标志后,当配置更改时,输出将立即刷新,直到状态阶段达到 Running 状态。要了解有关资源部署状态的详情,请参阅 Kubernetes Operator 故障排除