Docs 菜单
Docs 主页
/
适用于Kubernetes Operator 的MongoDB控制器
/ /

使用 OIDC 身份验证管理数据库用户

Kubernetes Operator 支持管理在启用 TLS 和 OIDC集群身份验证的情况下运行的部署的数据库用户。这允许您创建单独的数据库用户对象,根据您配置的 OIDC提供商进行身份验证。

此方法主要在 OIDC提供商配置为 UserIDauthorizationType 时使用。

对于 GroupMembership授权,直接在 MongoDB资源规范中托管角色,而不是通过单独的 MongoDBUser 资源。

  • MongoDBUser 资源:以这种方式托管的每个 OIDC 用户都需要相应的 MongoDBUser 自定义资源。Kubernetes Operator 使用此资源在MongoDB中配置用户。

  • $external 数据库:通过 OIDC 等外部机制进行身份验证的所有用户都必须在 $external 虚拟数据库中创建。您必须在 MongoDBUser资源中将 spec.db设立为“$external”。

  • 用户名格式:规范。 用户名必须遵循 <configurationName>/<userClaimValue> 格式,将 OIDC 提供商的配置名称 与用户的JSON web token中的唯一声明相结合。 此声明由 OIDC提供商配置中的 userClaim 指定,默认为 sub

  • 身份验证与授权:OIDC 身份提供者 (IdP) 负责对用户进行身份验证(验证其身份)。MongoDBUser资源负责在MongoDB中授权用户(定义他们有权执行的操作)。

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

1

创建一个文件(例如 my-oidc-user.yaml)来定义用户。

  • metadata.name: Kubernetes中 MongoDBUser资源的唯一名称。

  • spec.username:用户的 OIDC 身份,以 oidc 提供商的 configurationName 和用户的唯一令牌声明相结合,格式为 <configurationName>/<userClaimValue>

  • spec.db:必须是 $external

  • spec.mongodbResourceRef.name:此用户所属的 MongoDB资源的名称。

  • spec.roles:要授予此用户的MongoDB角色大量。

以下示例创建了一个对 app-data数据库具有读写访问权限的用户。

apiVersion: mongodb.com/v1
kind: MongoDBUser
metadata:
# A unique name for this Kubernetes resource.
name: oidc-app-user-1
spec:
# This username MUST match the 'userClaim' from the OIDC token.
username: "idp0/a1b2c3d4e5f6g7h8"
# OIDC users MUST be created in the $external database.
db: "$external"
# Point to the MongoDB deployment where this user should be created.
mongodbResourceRef:
name: my-oidc-replicaset
# Grant MongoDB roles to the user.
roles:
- db: "app-data"
name: "readWrite"
2
kubectl apply -f my-oidc-user.yaml

要删除数据库用户,只需删除与其关联的 MongoDBUser资源即可。Kubernetes Operator 将自动从MongoDB 数据库中删除用户。将 MongoDBUser资源的 metadata.name 传递给以下命令:

kubectl delete mongodbuser oidc-app-user-1

在此页面上