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

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

在此页面上

  • 支持的身份验证机制
  • 先决条件
  • 添加数据库用户
  • 删除数据库用户

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

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

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

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

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

在管理数据库用户之前,您必须部署启用了 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>
...
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 database 用户时,Kubernetes Operator 会自动创建新的Kubernetes 密钥 。Kubernetes 的 秘密 包含有关新数据库用户的以下信息:

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

  • password:数据库用户的密码

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

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

注意

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

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

7

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

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

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

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

kubectl delete mdbu <metadata.name>