Menu Docs
Página inicial do Docs
/
Operador de Kubernetes do MongoDB Enterprise
/ /

Managed trigger de banco de dados usando a autenticação SCRAM

Nesta página

  • Considerações
  • Pré-requisitos
  • Adicionar um usuário do banco de dados
  • Excluir um trigger de reconhecimento de data center
  • Alterar mecanismo de autenticação

O Kubernetes Operator oferece suporte ao gerenciamento de trigger de banco de dados usando a autenticação SCRAM em sistemas MongoDB.

Quando você especifica o SCRAM como o mecanismo de autenticação, a implementação do SCRAM utilizada depende:

  • A versão do MongoDB e

  • Se o reconhecimento de data center for o banco de dados de aplicativo ou outro reconhecimento de data center.

Versão do MongoDB
Database
Implementação de SCRAM

3.6 ou anterior

Qualquer um, exceto o banco de dados de aplicativo

SCRAM-SHA-1

4.0 ou posterior

Qualquer um, exceto o banco de dados de aplicativo

SCRAM-SHA-256

Any

Banco de dados de aplicativos

SCRAM-SHA-1

O Kubernetes Operator oferece suporte a mecanismos de autenticação SCRAM, LDAP e X.509 nos sistemas que ele cria. Em uma implantação criada pelo Kubernetes Operator, você não pode usar o MongoDB Ops Manager para:

  • Configure outros mecanismos de autenticação para sistemas.

  • Managed usuários não usando autenticação SCRAM, LDAP ou X.509.

Depois de habilitar a autenticação SCRAM, você pode adicionar usuários SCRAM usando a interface do Ops Manager ou configurando os usuários na CustomResourceDefinition com base na Especificação de recursos do usuário do MongoDB .

Antes de gerenciar trigger de banco de dados, você deve distribuir um autônomo, um conjunto de réplicas ou um cluster fragmentado.

Para sistemas MongoDB de cluster multi-Kubernetes, você deve implementar conjuntos de réplica. Consulte Implementar vários clusters.

Importante

Você não pode atribuir o mesmo trigger de banco de dados a mais de um MongoDB autônomo, conjunto de réplicas ou cluster fragmentado. Isso inclui usuários do banco de dados com funções admin .

1

Caso ainda não tenha feito isso, execute o seguinte comando para executar todos os comandos kubectl no namespace que você criou.

Observação

Se você estiver implantando um recurso MongoDB Ops Manager em um sistema do MongoDB de vários clusters Kubernetes:

  • Defina context como o nome do cluster central, como: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".

  • Defina --namespace para o mesmo escopo usado para sua implantação do MongoDB de vários clusters Kubernetes, como: kubectl config --namespace "mongodb".

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
2

Você pode optar por usar uma senha de texto não criptografado:

1---
2apiVersion: v1
3kind: Secret
4metadata:
5 name: <mms-user-1-password>
6 # corresponds to user.spec.passwordSecretKeyRef.name
7type: Opaque
8stringData:
9 password: <my-plain-text-password>
10 # corresponds to user.spec.passwordSecretKeyRef.key
11...

ou você pode optar por usar uma senha codificada em Base64:

1---
2apiVersion: v1
3kind: Secret
4metadata:
5 name: <mms-user-1-password>
6 # corresponds to user.spec.passwordSecretKeyRef.name
7type: Opaque
8data:
9 password: <base-64-encoded-password>
10 # corresponds to user.spec.passwordSecretKeyRef.key
11...

Observação

Certifique-se de copiar a configuração de senha desejada. As senhas de texto simples usam stringData.password e as senhas codificadas em Base64 usam data.password

3
  1. Abra seu editor de texto preferido.

  2. Cole este segredo de usuário em um novo arquivo de texto.

Se você estiver usando o HashiCorp Vault como sua ferramenta de armazenamento secreto, poderá Criar um Vault Secret .

Para saber mais sobre suas opções de armazenamento secreto, consulte Configurar armazenamento secreto.

4

Use a tabela a seguir para orientá-lo na alteração das linhas destacadas no segredo:

Chave
Tipo
Descrição
Exemplo

metadata.name

string

Nome do segredo da senha do reconhecimento de data center.

Os nomes de recursos devem ter 44 caracteres ou menos.

mms-scram-user-1-password

stringData.password

string

Senha do texto simples para o usuário desejado.

Use esta opção e valor ou data.password. Não é possível usar os dois.

<my-plain-text-password>

data.password

string

Senha codificada em Base64 para o usuário desejado.

Use esta opção e valor ou stringData.password. Não é possível usar os dois.

Você mesmo deve codificar sua senha em Base64 e colar o valor resultante com esta opção. Existem ferramentas para quase todas as plataformas e também várias ferramentas baseadas na web.

<my-base64-encoded-password>

5
1
---
apiVersion: mongodb.com/v1
kind: MongoDBUser
metadata:
name: <mms-scram-user-1>
spec:
passwordSecretKeyRef:
name: <mms-user-1-password>
# Match to metadata.name of the User Secret
key: password
username: "<mms-scram-user-1>"
db: "admin" #
mongodbResourceRef:
name: "<my-replica-set>"
# Match to MongoDB resource using authenticaiton
roles:
- db: "admin"
name: "clusterAdmin"
- db: "admin"
name: "userAdminAnyDatabase"
- db: "admin"
name: "readWrite"
- db: "admin"
name: "userAdminAnyDatabase"
...
2
  1. Abra seu editor de texto preferido.

  2. Cole este MongoDBUser em um novo arquivo YAML.

3

Use a tabela a seguir para orientá-lo nas alterações das linhas destacadas na Especificação de recursos do usuário do MongoDB:

Chave
Tipo
Descrição
Exemplo

metadata.name

string

Nome do recurso do trigger de banco de dados.

Os nomes de recursos devem ter 44 caracteres ou menos.

mms-scram-user-1

spec.username

string

Nome do trigger de banco de dados.

mms-scram-user-1

spec.passwordSecretKeyRef.name

string

metadata.name valor do segredo que armazena a senha do usuário.

my-resource

spec.mongodbResourceRef.name

string

Nome do recurso MongoDB ao qual este usuário está associado.

my-resource

spec.roles.db

string

Banco de dados no qual a função pode atuar.

admin

spec.roles.name

string

Nome do role a ser concedido ao usuário do banco de dados. O nome da função pode ser qualquer função MongoDB integrada ou função personalizada que exista no Cloud Manager ou no MongoDB Ops Manager.

readWriteAnyDatabase

4

Você pode conceder funções adicionais a esse usuário.

5
6

Invoque o seguinte comando do Kubernetes para criar seu trigger de reconhecimento de data center:

kubectl apply -f <database-user-conf>.yaml

Quando você cria um novo MongoDB database usuário do , o operadorKubernetes cria automaticamente um novo Kubernetes segredo. O segredo do Kubernetes contém as seguintes informações sobre o novo usuário do banco de dados:

  • username: Nome de usuário para o utilizador de banco de dados

  • password: Senha para o usuário do banco de dados

  • connectionString.standard: stringde conexão padrão que pode conectar você ao banco de dados como este usuário do banco de dados.

  • connectionString.standardSrv: stringconexão da lista de sementes de DNS que pode conectar você ao banco de dados como este usuário do banco de dados.

Observação

Como alternativa, você pode especificar um campo spec.connectionStringSecretName opcional na Especificação de Recurso de Usuário do MongoDB para especificar o nome do segredo da string de conexão que o Kubernetes Operator cria.

Você pode usar essas credenciais para se conectar a um recurso de banco de dados MongoDB a partir de Kubernetes internos.

7

Você pode visualizar o usuário recém-criado no Cloud Manager ou Ops Manager:

  1. Na visualização Deployment do projeto, clique na guia Security.

  2. Clique no separador MongoDB Users aninhado.

Para excluir um trigger de banco de dados, passe o metadata.name do usuário MongoDBUser para o seguinte comando:

kubectl delete mdbu <metadata.name>

Para alterar seu mecanismo de autenticação de usuário para SCRAM:

  1. Desabilite a autenticação.

    Em spec.security.authentication, altere enabled para false.

    spec:
    security:
    authentication:
    enabled : false
  2. Reaplique a definição de recurso do usuário.

  3. Aguarde o MongoDBResource atingir o estado running .

  4. Habilitar a autenticação SCRAM.

    Em spec.security.authentication, altere enabled para true e defina spec.security.authentication.modes para `` ["SCRAM"]``.

    spec:
    security:
    authentication:
    enabled : true
    modes: ["SCRAM"]
  5. Reaplique o recurso MongoDBUser.

  6. Aguarde o MongoDBResource atingir o estado running .