El operador de Kubernetes admite la administración de usuarios de bases de datos para implementaciones que se ejecutan con Autenticación de clústerTLS y OIDC habilitada. Esto le permite crear objetos de usuario de base de datos individuales que se autentican con su proveedor OIDC configurado.
Este método se utiliza principalmente cuando su proveedor OIDC está configurado con un
authorizationType de UserID.
Para la autorización GroupMembership, los roles se administran directamente en la especificación de recursos MongoDB, no a través de recursos MongoDBUser individuales.
Considerations
MongoDBUserRecurso: Cada usuario de OIDC gestionado de esta manera requiere un recurso personalizadoMongoDBUsercorrespondiente. El operador de Kubernetes utiliza este recurso para configurar el usuario en MongoDB.$externalBase de datos: Todos los usuarios que se autentican mediante un mecanismo externo como OIDC deben crearse en la base de datos virtual$external. Debe configurarspec.dbcomo "$external" en el recursoMongoDBUser.Formato del nombre de usuario: El archivo spec.username debe seguir el formato <configurationName>/<userClaimValue>, combinando el nombre de configuración del proveedor OIDC con la reclamación única del JWT del usuario. Esta reclamación se especifica con
userClaimen la configuración del proveedor OIDC y su valor predeterminado essub.Autenticación vs. Autorización: Su proveedor de identidad (IdP) de OIDC es responsable de autenticar al usuario (verificar su identidad). El recurso
MongoDBUseres responsable de autorizar al usuario (definir sus permisos) en MongoDB.
Requisitos previos
Antes de administrar los usuarios de la base de datos, debe implementar una Conjunto de réplicas o clúster fragmentado con OpenID Connect habilitado. Opcionalmente, puede habilitar TLS. Para obtener más información, consulte Proteger un recurso de base de datos.
Agregar un usuario de base de datos
Cree un archivo YAML de MongoDBUser.
Crea un archivo (por ejemplo, my-oidc-user.yaml) para definir el usuario.
metadata.name:Un nombre único para el recurso MongoDBUser dentro de Kubernetes.spec.username:La identidad OIDC del usuario, que combina elconfigurationNamedel proveedor de OIDC y la reclamación de token única del usuario en el formato<configurationName>/<userClaimValue>.spec.db:Esto debe ser$external.spec.mongodbResourceRef.name:El nombre del recursoMongoDBal que pertenece este usuario.spec.roles:Una matriz de roles de MongoDB para otorgar a este usuario.
A continuación se muestra un ejemplo que crea un usuario con acceso de lectura y escritura a la base de datos de datos de la aplicación.
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"
Eliminar un usuario de base de datos
Para borrar un usuario de base de datos, simplemente borra el recurso MongoDBUser asociado a él. El operador de Kubernetes removerá automáticamente al usuario de la base de datos MongoDB. Pasa el metadata.name del recurso MongoDBUser al siguiente comando:
kubectl delete mongodbuser oidc-app-user-1