Problema de segurança de implantação do Google Cloud Compute MongoDB e problema de keyFile

Problema de segurança de implantação do Google Cloud Compute MongoDB e problema de keyFile

Eu me deparei com esse problema super chato hoje.

Basicamente, configurei um banco de dados MongoDB usando a oferta do GCP Marketplace. Ele configura um nó primário, secundário e um árbitro. O que é muito legal. O que isso não faz é segurança. Tipo, de jeito nenhum. Então é natural que eu mesmo tenha que configurá-lo. Bem, agora, 20 horas depois e alguns bons socos na minha cara, ainda estou lutando para fazê-lo funcionar.

Basicamente, esta é minha configuração parcial:

security:
  authorization: enabled
  keyFile: '/etc/mongodKey'

Se eu comentar, a keyFileinstância será executada. Mas ele não pode se conectar a nenhum outro nó, devido à segurança estar habilitada. E não, não posso desativá-lo, você está bravo?

A questão do keyFile, porém... Pelo que entendi, mongodnão consigo abri-lo, então ele não inicia. Suponho que /etcnão seja um bom lugar para colocá-lo? Tentei outras pastas, mas sem sucesso. Nada funciona.

E preciso ter essa medida de segurança, já que o banco de dados precisa ser conectado pelos meus colegas usando o Robo 3T. Portanto, descartar o endereço IP externo está fora de questão.

O que eu fiz de errado? Por favor, ajude enquanto estou arrancando meus próprios cabelos.

Esta é a saída de sudo service mongod status:

● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2019-08-21 15:28:08 UTC; 4min 29s ago
     Docs: https://docs.mongodb.org/manual
  Process: 1024 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=1/FAILURE)
 Main PID: 1024 (code=exited, status=1/FAILURE)
Aug 21 15:28:08 m-vm-0 systemd[1]: Started MongoDB Database Server.
Aug 21 15:28:08 m-vm-0 systemd[1]: mongod.service: Main process exited, code=exited, status=1/F
Aug 21 15:28:08 m-vm-0 systemd[1]: mongod.service: Unit entered failed state.
Aug 21 15:28:08 m-0 systemd[1]: mongod.service: Failed with result 'exit-code'.

Editar:

Eu verifiquei o mongod.log. Sim, é um problema de permissão. E não consigo resolver isso.

Eu tentei fazer sudo chmod 400 /etc/mongodKey, mas não faz nada. Por favor, alguém, onde coloco o arquivo de chave para que possa ser lido pelo mongodb? Isto é muito importante!

Responder1

Se você usar a implantação do mercado MongoDB do GCP chamada "MongoDB", que permite configurar a replicação, saiba o seguinte:

Eles não configuram a segurança na configuração inicial, portanto existem 2 opções:

  1. Desligue o IP externo
  2. Habilite a autorização nomongod.conf

Se você optar pela primeira solução, não conseguirá conectar-se facilmente ao banco de dados a partir de outras fontes externas.

Se você optar pela segunda solução, precisará fazer o seguinte:

  1. Gere uma chave, todo o processo pode ser encontrado aqui:https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existente-replica-set/

  2. Copie o conteúdo do arquivo

  3. SSH em todas as instâncias do Compute Engine
  4. Escolha um diretório
  5. sudo touch <path to key>
  6. sudo nano <path to key>
  7. Cole a chave que você gerou no seu computador e salve
  8. sudo chmod 600 <path to key>
  9. sudo chown mongodb: <path to key>
  10. Atualize o seu mongod.confque se encontra em/etc/mongod.conf
  11. Remova o comentário security, authorization,keyFile
  12. Forneça o caminho da chave keyFilepara o seu arquivo-chave
  13. Pare todas as instâncias e reinicie-as

Agora o MongoDB tem acesso ao arquivo-chave.

O que é um pesadelo. E chmod 400 <path to key>não funcionou para mim conforme especificado na documentação. Eu tive que configurá-lo para chmod 600 <path to key>.

informação relacionada