Почему любой пользователь может войти в систему infxdb? - PullRequest
0 голосов
/ 25 октября 2019

Я установил Infliff. Но на сервере каждый пользователь может войти в систему, когда наберет inlux.

Почему это так? Разве это не проблема безопасности. И как я могу это решить?

Я хочу войти с помощью специального администратора и его пароля администратора.

1 Ответ

1 голос
/ 27 октября 2019

«Почему»

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

В своей самой простой установке, <insert DBMS here> должен просто работать - для интеграционных тестов, простых целей оценки и т. д. Мы могли бы сгенерировать пароль пользователя root / admin / superhoncho, но чаще всего это не изменится, и это Bad Thing ™ .

И поскольку никто в здравом уме не запустит базу данных в рабочем режиме без аутентификации и авторизации, включенных, обеспечивая легкий доступ по умолчаниюВ любом случае установка не является проблемой, не так ли?

Я склонен согласиться с этим рассуждением, хотя я не согласен с тем, что в случае, если СУБД отключает аутентификацию и авторизацию по умолчанию, она должна связыватьсяпо умолчанию localhost. Вы делаете свою СУБД доступной для внешнего мира, и будь это только сеть вашей компании? Вы наверняка подумали о последствиях!

«Как»

Аутентификация

Я собираюсь использовать докер, чтобы проиллюстрировать это, и совершенно очевидно, что вы должны сделатьв среде без докера.

Сначала мы извлекаем образ докера infxdb и за один раз создаем файл конфигурации по умолчанию:

$ docker run --rm influxdb influxd config > influxdb.conf
Unable to find image 'influxdb:latest' locally
latest: Pulling from library/influxdb
...
Digest: sha256:0aa7fea5336b5e5cc1c80e16062865821ec772e06519c138947ef5ebd9b34907
Status: Downloaded newer image for influxdb:latest
Merging with configuration at: /etc/influxdb/influxdb.conf

Теперь мы изменим параметр аутентификации в [http] раздел нашего influxdb.conf в true:

...
[http]
  auth-enabled = true
...

Далее мы запускаем нашу InfluxDB, используя этот измененный файл конфигурации:

$ docker run -d --name influxdb -p 8086:8086 \
      -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
      influxdb -config /etc/influxdb/influxdb.conf
1987f962c331d2404a2564bb752d971553b13181dbbbb1e38cf50d345b3191c4

(Полученная вами хеш-сумма будет другой. )

Теперь мы подключаемся к нашей приливной базе данных и создаем пользователя-администратора

$ docker exec -it influxdb influx
Connected to http://localhost:8086 version 1.7.8
InfluxDB shell version: 1.7.8
> create user admin with password 'secret' with all privileges;

С этого момента учетные данные необходимы практически для всего

> show users
ERR: unable to parse authentication credentials
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".
> auth
username: admin
password: 
> show users
user  admin
----  -----
admin true

Авторизация

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

> create user berkancetin with password 'supersecret';
> create database foobar
> grant read on foobar to berkancetin
> show users
user        admin
----        -----
admin       true
berkancetin false
> show grants for "berkancetin"
database privilege
-------- ---------
foobar   READ

Дальнейшее чтение (!!!)

Игнорировать на свой страх и риск. Вы. Есть. Been. Предупрежден.

...