Проблема безопасности развертывания Google Cloud Compute MongoDB и проблема keyFile

Проблема безопасности развертывания Google Cloud Compute MongoDB и проблема keyFile

Сегодня я столкнулся с этой очень раздражающей проблемой.

По сути, я настроил базу данных MongoDB с помощью предложения GCP Marketplace. Он настраивает первичный узел, вторичный узел и арбитр. Что очень круто. Чего он не делает, так это безопасности. Вообще. Так что вполне естественно, что мне пришлось настраивать ее самому. Ну, теперь, спустя 20 часов и получив несколько хороших ударов по лицу, я все еще пытаюсь заставить ее работать.

По сути, вот моя частичная конфигурация:

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

Если я закомментирую keyFileэкземпляр, он запустится. Но он не сможет подключиться ни к одному другому узлу, так как включена безопасность. И нет, я не могу его отключить, вы что, с ума сошли?

Но вот насчет keyFile... Насколько я понимаю, mongodего нельзя открыть, поэтому он не запускается. Полагаю, /etcэто не лучшее место для его размещения? Я пробовал другие папки, но безрезультатно. Ничего не работает.

И мне нужна эта мера безопасности, поскольку к базе данных должны подключаться мои коллеги с помощью Robo 3T. Поэтому об удалении внешнего IP-адреса не может быть и речи.

Что я делаю не так? Помогите, пожалуйста, а то я вырываю себе волосы.

Это вывод 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'.

Редактировать:

Я проверил mongod.log. Да, это проблема с разрешением. И я не могу ее решить.

Я пробовал, sudo chmod 400 /etc/mongodKeyно ничего не получается. Пожалуйста, кто-нибудь, куда мне положить файл ключа, чтобы он был доступен для чтения mongodb? Это очень важно!

решение1

Если вы используете развертывание GCP MongoDB marketplace под названием «MongoDB», которое позволяет вам настраивать репликацию, учтите следующее:

Они не настраивают безопасность в первоначальной конфигурации, поэтому есть 2 варианта:

  1. Отключить внешний IP
  2. Включить авторизацию вmongod.conf

Если вы выберете первое решение, вы не сможете легко подключиться к базе данных из других внешних источников.

Если вы выберете второе решение, вам нужно будет сделать следующее:

  1. Сгенерируйте ключ, весь процесс можно найти здесь:https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set/

  2. Скопируйте содержимое файла

  3. Подключитесь по SSH ко всем экземплярам Compute Engine
  4. Выберите каталог
  5. sudo touch <path to key>
  6. sudo nano <path to key>
  7. Вставьте сгенерированный вами ключ на свой компьютер и сохраните.
  8. sudo chmod 600 <path to key>
  9. sudo chown mongodb: <path to key>
  10. Обновите свой mongod.conf, который находится под/etc/mongod.conf
  11. Раскомментировать security, authorization,keyFile
  12. Укажите путь keyFileк вашему ключевому файлу.
  13. Остановите все экземпляры и запустите их снова.

Теперь MongoDB имеет доступ к ключевому файлу.

Какой кошмар. И chmod 400 <path to key>не работало у меня так, как указано в документации. Пришлось установить chmod 600 <path to key>.

Связанный контент