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

托管 LDAP 身份验证数据库用户

在此页面上

  • 注意事项
  • 先决条件
  • 添加数据库用户
  • 删除数据库用户

Kubernetes 操作符支持管理在启用 TLS和 LDAP 集群身份验证的情况下运行的部署的数据库用户。

通过LDAP进行身份验证的用户的配置依赖于 LDAP 查询模板和 MongoDB 建立的映射。

要了解更多信息,请参阅 MongoDB Server 文档中的以下部分:

  • LDAP 授权

  • LDAP 查询模板

  • security.ldap.userToDNMapping

Kubernetes Operator 在其创建的部署中支持 SCRAM、LDAP 和 X. 509身份验证机制。 在Kubernetes Operator 创建的部署中,您不能使用MongoDB Ops Manager执行以下操作:

  • 为部署配置其他身份验证机制。

  • 托管使用 SCRAM、LDAP 或 X.509 身份验证的用户。

在管理数据库用户之前,您必须部署启用了 LDAP 的 副本集 或 分片集群 。已启用。 (可选)您可以启用 TLS 。要了解更多信息,请参阅 保护数据库资源。

1

如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl 命令。

注意

MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:

  • context 设置为中心集群的名称,例如:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"

  • --namespace设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如: kubectl config --namespace "mongodb"

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
2
---
apiVersion: mongodb.com/v1
kind: MongoDBUser
metadata:
name: ldap-user-1
spec:
username: "uid=mdb0,dc=example,dc=org"
db: "$external"
mongodbResourceRef:
name: ldap-replica-set
roles:
- db: "admin"
name: "clusterAdmin"
- db: "admin"
name: "readWriteAnyDatabase"
- db: "admin"
name: "dbAdminAnyDatabase"
...
3
4

使用下表作为指南来更改MongoDB 用户资源规范中的相关行。有关 LDAP 用户设置的完整列表,请参阅 Kubernetes 操作符 MongoDB 资源规范中的安全设置

类型
说明
例子
metadata.name
字符串

MongoDB 数据库用户的资源名称。

资源名称必须少于或等于 44 个字符。

ldap-user-1
spec.db
字符串
将添加用户的 MongoDB database 的名称。此值必须是$external
$external
spec.mongodbResourceRef.name
字符串
与此用户关联的MongoDB 资源的名称。
my-resource
spec.opsManager.configMapRef.name
字符串
包含将添加用户的 MongoDB database 的项目的名称。spec.cloudManager.configMapRef.name设置是此设置的别名,可以用来代替它。
my-project
spec.roles.db
字符串
角色可以操作的数据库。
admin
spec.roles.name
字符串
要授予数据库用户的角色名称。 角色名称可以是任何 MongoDB内置 角色 Cloud ManagerMongoDB Ops Manager,也可以是 或 中存在的 自定义角色 。
readWriteAnyDatabase
spec.username
字符串

根据spec.security.authentication.ldap.userToDNMapping映射到 LDAP 标识名 (DN) 的经过身份验证的用户名。 该 DN 必须已存在于 LDAP 部署中。 此用户名必须符合 RFC2253 LDAPv3 标识名标准。transformed

要了解更多信息,请参阅 MongoDB 手册中的LDAP 查询模板

uid=mdb0,dc=example,dc=org
5

您可以使用以下示例中定义的格式向此用户授予其他角色:

---
apiVersion: mongodb.com/v1
kind: MongoDBUser
metadata:
name: ldap-user-1
spec:
username: "uid=mdb0,dc=example,dc=org"
db: "$external"
mongodbResourceRef:
name: ldap-replica-set
roles:
- db: "admin"
name: "clusterAdmin"
- db: "admin"
name: "readWriteAnyDatabase"
- db: "admin"
name: "dbAdminAnyDatabase"
...
6

调用以下 Kubernetes 命令来创建数据库用户:

kubectl apply -f <database-user-conf>.yaml

以下示例说明了在 Kubernetes 操作符 MongoDB 部署中启用 LDAP 身份验证时可以使用的连接字符串格式。这些示例使用mongodb命名空间和名为replica-set-ldap的副本集部署。 分片集群的示例类似。

  • connectionString.standard标准连接string ,可以让您以此数据库用户的身份连接到数据库。

    mongodb://replica-set-ldap-0-0-svc.mongodb.svc.cluster.local/?connectTimeoutMS=20000&replicaSet=replica-set-ldap&serverSelectionTimeoutMS=20000&ssl=true&authSource=$external
  • connectionString.standardSrvDNS 种子列表连接string ,可以让您以此数据库用户的身份连接到数据库。

    mongodb+srv://replica-set-ldap-svc.mongodb.svc.cluster.local/?connectTimeoutMS=20000&replicaSet=replica-set-ldap&serverSelectionTimeoutMS=20000&ssl=true&authSource=$external

使用前面显示的格式,您可以通过 MongoDB Shell ( mongosh ) 连接到 MongoDB database,如以下示例所示:

mongosh <connection-string> \
--host <my-replica-set>/web1.example.com \
--port 30907 \
--authenticationMechanism PLAIN \
--username cn=rob,cn=Users,dc=ldaps-01,dc=myteam,dc=com

您可以使用这些凭证从 Kubernetes 内部连接到 MongoDB database 资源。

7

您可以在 Cloud Manager 或 Ops Manager 中查看新创建的用户:

  1. 在项目的 Deployment视图中,单击Security标签页。

  2. 单击 MongoDB Users 嵌套标签页。

要删除数据库用户,请将metadata.name 从用户 ConfigMap 传递给 到以下命令:

kubectl delete mdbu <metadata.name>