托管 LDAP 身份验证数据库用户
Kubernetes 操作符支持管理在启用 TLS和 LDAP 集群身份验证的情况下运行的部署的数据库用户。
Considerations
通过LDAP进行身份验证的用户的配置依赖于 LDAP 查询模板和 MongoDB 建立的映射。
要了解更多信息,请参阅 MongoDB Server 文档中的以下部分:
支持的身份验证机制
Kubernetes Operator 在其创建的部署中支持 SCRAM、LDAP 和 X. 509身份验证机制。 在Kubernetes Operator 创建的部署中,您不能使用MongoDB Ops Manager执行以下操作:
为部署配置其他身份验证机制。
托管不使用 SCRAM、LDAP 或 X.509 身份验证的用户。
先决条件
在管理数据库用户之前,您必须部署启用了 LDAP 的 副本集 或 分片集群 。已启用。 (可选)您可以启用TLS 。 要学习;了解更多信息,请参阅保护数据库资源。
添加数据库用户
将kubectl
配置为默认命名空间。
如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 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>
复制以下示例CustomResourceDefinition 。
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" ...
打开您首选的文本编辑器,并将示例CustomResourceDefinition 粘贴到新的文本文件中。
根据需要更改以下参数的行。
使用下表作为指南来更改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 | 字符串 | readWriteAnyDatabase | |
spec.username | 字符串 | 根据 要了解更多信息,请参阅 MongoDB 手册中的LDAP 查询模板。 | uid=mdb0,dc=example,dc=org |
将用户的任何其他角色添加到 CustomResourceDefinition 。
您可以使用以下示例中定义的格式向此用户授予其他角色:
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" ...
创建用户。
调用以下 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.standardSrv
: DNS 种子列表连接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
删除数据库用户
要删除数据库用户,请将metadata.name
从用户 ConfigMap 传递给 到以下命令:
kubectl delete mdbu <metadata.name>