El operador de Kubernetes admite la administración de usuarios de bases de datos para implementaciones que se ejecutan con TLS y la autenticación de clúster OIDC están activadas. Esto permite crear objetos de usuario individuales de la base de datos que se autentican en el proveedor OIDC configurado.
Este método se usa principalmente cuando tu 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 personalizado correspondiente deMongoDBUser. El Operador de Kubernetes utiliza este recurso para configurar al usuario dentro de MongoDB.$externalBase de datos: Todos los usuarios que se autentiquen mediante un mecanismo externo como OIDC deben crearse en la base de datos virtual$external. Debe configurarspec.dben "$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 gestionar los usuarios de la base de datos, debes implementar un set de réplicas o clúster con OpenID Connect habilitado. activado. Opcionalmente, puede activar TLS. Para obtener más información, consulta Protección de 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 oidc y la declaración de token única del usuario en el formato<configurationName>/<userClaimValue>.spec.dbEsto debe ser$external.spec.mongodbResourceRef.name: Nombre del recursoMongoDBal que pertenece este usuario.spec.roles:Una matriz de roles de MongoDB para otorgar a este usuario.
Aquí hay un ejemplo que crea un usuario con acceso de lectura y escritura a la base de datos 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"
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