O Operador Kubernetes oferece suporte ao gerenciamento de usuários do banco de dados para sistemas em execução com TLS e a autenticação de cluster OIDC ativada. Isso permite que você crie objetos de usuário de banco de dados individuais que se autenticam em seu provedor de OIDC configurado.
Este método é utilizado principalmente quando seu provedor OIDC está configurado com um authorizationType
de UserID
.
Para a autorização GroupMembership
, as funções são gerenciadas diretamente na especificação do recurso MongoDB
, não por meio de recursos MongoDBUser
individuais.
Considerações
MongoDBUser
Recurso: cada usuário do OIDC gerenciado dessa forma requer um recurso personalizadoMongoDBUser
correspondente. O Kubernetes Operator usa esse recurso para configurar o usuário no MongoDB.$external
Banco de dados: todos os usuários que se autenticam por meio de um mecanismo externo como o OIDC devem ser criados no banco de dados virtual$external
. Você deve definirspec.db
como "$external" no recursoMongoDBUser
.Formato do nome de usuário: o spec.username deve seguir o formato <configurationName>/<userClaimValue>, combinando o nome de configuração do provedor OIDC com a declaração exclusiva do JSON web token do usuário. Esta reivindicação é especificada por
userClaim
na configuração do provedor OIDC e padrão parasub
.Autenticação versus autorização: seu provedor de identidade (IdP) do OIDC é responsável por autenticar o usuário (verificar sua identidade). O recurso
MongoDBUser
é responsável por autorizar o usuário (definindo o que ele tem permissão para fazer) dentro do MongoDB.
Pré-requisitos
Antes de gerenciar usuários do banco de dados, você deve implantar umconjunto de réplicas ou um cluster fragmentado com OpenID Connect habilitado. habilitado. Opcionalmente, você pode habilitar o TLS. Para saber mais, consulte Proteger um Recurso de Banco de Dados.
Adicionar um usuário do banco de dados
Crie um arquivo YAML do MongoDBUser.
Crie um arquivo (por exemplo, my-oidc-user.yaml
) para definir o usuário.
metadata.name
: um nome exclusivo para o recurso MongoDBUser no Kubernetes.spec.username
: A identidade OIDC do usuário, combinando o provedor de oidcconfigurationName
e a declaração de token exclusiva do usuário no formato<configurationName>/<userClaimValue>
.spec.db
: deve ser$external
.spec.mongodbResourceRef.name
: o nome do recursoMongoDB
ao qual este usuário pertence.spec.roles
: Uma array de funções do MongoDB para conceder a esse usuário.
Aqui está um exemplo que cria um usuário com acesso de leitura e gravação ao banco de dados 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"
Excluir um trigger de reconhecimento de data center
Para excluir um usuário de banco de dados, basta excluir o recurso MongoDBUser
associado a ele. O Operador Kubernetes removerá automaticamente o usuário do banco de dados MongoDB . Passe o metadata.name
do recurso MongoDBUser
para o seguinte comando:
kubectl delete mongodbuser oidc-app-user-1