对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

使用 X.509 身份验证管理数据库用户

Kubernetes Operator 支持管理在运行TLS 和 X.509 内部集群身份验证的情况下运行的部署的数据库用户。

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

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

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

启用 X.509身份验证后,您可以使用MongoDB Ops Manager界面或CustomResourceDefinition添加 X.509 用户。

在管理数据库用户之前,必须部署启用了 TLS 和 X.509 的副本集或分片集群。

如果您需要为 MongoDB 用户生成 X.509 证书,请参阅生成 X.509 客户端证书。

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: <resource-name>
spec:
username: <rfc2253-subject>
db: "$external"
mongodbResourceRef:
name: '<MongoDB-Resource-name>'
roles:
- db: <database-name>
name: <role-name>
...
3
4

使用下表指导您更改MongoDB 用户资源规范中的相关行:

类型
说明
例子

metadata.name

字符串

数据库用户资源的名称。

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

mms-user-1

spec.username

字符串

由Kubernetes CA (Kube CA) 签名的 x509客户端证书的主题行。

重要提示:用户名必须符合 RFC2253 LDAPv3 标识名标准。

要获取 X.509 证书的主题行,请运行以下命令:

openssl x509 -noout \
-subject -in <my-cert.pem> \
-nameopt RFC2253

CN=mms-user,U=My Organizational Unit,O=My Org,L=New York,ST=New York,C=US

spec.opsManager.configMapRef.name

字符串

包含将添加用户的 MongoDB database 的项目的名称。spec.cloudManager.configMapRef.name设置是此设置的别名,可以用来代替它。

my-project

spec.roles.db

字符串

角色可以操作的数据库。

admin

spec.mongodbResourceRef.name

字符串

与此用户关联的MongoDB 资源的名称。

my-resource

spec.roles.name

字符串

要授予数据库用户的角色名称。 角色名称可以是任何 MongoDB内置 角色 Cloud ManagerMongoDB Ops Manager,也可以是 或 中存在的 自定义角色 。

readWriteAnyDatabase

5

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

---
apiVersion: mongodb.com/v1
kind: MongoDBUser
metadata:
name: mms-user-1
spec:
username: CN=mms-user,U=My Organizational Unit,O=My Org,L=New York,ST=New York,C=US
project: my-project
db: "$external"
roles:
- db: admin
name: backup
- db: admin
name: restore
...
6

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

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

当您创建新的MongoDB 数据库用户时, Kubernetes Operator 会自动创建新的Kubernetes 密钥。Kubernetes密钥包含有关新数据库用户的以下信息:

  • username:数据库用户的用户名

  • password:数据库用户的密码

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

  • connectionString.standardSrvDNS 种子列表连接string ,可以让您以此数据库用户的身份连接到数据库。

注意

或者,您可以在MongoDB 用户资源规范中指定可选的spec.connectionStringSecretName字段,以指定 Kubernetes Operator 创建的连接字符串密钥的名称。

By default, both connection strings omit the database from the URI path, so the database that clients use depends on the client. To set the database in the URI path, specify the optional spec.connectionStringDatabase field.

You can use these credentials to Connect to a MongoDB Resource from Inside Kubernetes.

7

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

  1. 从项目的 Deployment 视图中,点击 Security 选项卡。

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

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

kubectl delete mdbu <metadata.name>