Думаю, я что-то здесь неправильно понял. Я установил Graphite с Docker (sitepeedio / graphite) и установил базовую аутентификацию для веб-панели. Я открыл Firwall для порта 2003, чтобы получить точки данных с других серверов, и он работал нормально.
Но аутентификации / авторизации нет. Даже библиотека python, которую я использовал для отправки некоторых тестов, не позволяет установить пароль, токен или другой механизм аутентификации.
Как обезопасить установку Graphite?
Думаю, здесь может быть недоразумение (вполне возможно, с моей стороны): похоже, вы говорите о двух разных компонентах.
Первый - Графит (https://graphite.readthedocs.io/en/latest/install.html):
Graphite отображает графики с использованием графической библиотеки Cairo
Другими словами, хотя мы обычно называем всю установку графитом, графит на самом деле является интерфейсом к базе данных, в которой хранятся данные углерода (Whisper или Ceres).
Basic-Auth, как вы говорите, предназначен для веб-интерфейсов, которые предлагает графит, в частности для API рендеринга (и, в более общем плане, для обслуживания графического процесса / демона по HTTP).
Чтобы это исправить (обычно - я не знаю подробностей для вашей конкретной ситуации), вы можете проверить этот вопрос: Graphiti / Graphite с использованием Apache с Proxy и BasicAuth запрашивает аутентификацию для каждого URL / запроса - у них противоположная проблема, когда они иметь для постоянной аутентификации (и ответ о том, почему это может быть).
Они предоставляют свою полную конфигурацию, но в целом важен следующий блок:
<Location "/">
require valid-user
order allow,deny
Allow from all
AuthType Basic
AuthName "Stats"
AuthBasicProvider file
AuthUserFile /etc/passwd_lp
</Location>
Однако вы также упоминаете порт 2003, который не имеет отношения ни к одному из веб-API или страниц.
Вместо этого порт 2003 используется углеродным кешем (или углеродным ретранслятором) для получения данных метрики.
За https://graphite.readthedocs.io/en/latest/carbon-daemons.html:
carbon-cache.py принимает метрики по различным протоколам и записывает их на диск максимально эффективно.
Он не использует HTTP, поэтому Basic-Auth не работает.
Я не уверен, что такое передовая практика или соглашение для защиты от углерода, но я всегда думал, что это в первую очередь вопрос ограничения доступа к услуге (то есть порту).
Вы можете добавить слой, который передает HTTP между вашими источниками метрик и вашим углеродным кешем, чтобы иметь для него базовую аутентификацию.
Вы также можете добавить что-то вроде HAProxy для завершения SSL и проверки клиента, но я не уверен, насколько легко было бы в первую очередь использовать SSL / TLS в источниках метрик.