# 🔐 Авторизация для мониторинга ## Что было добавлено Добавлена HTTP Basic Authentication для следующих сервисов мониторинга: - **Prometheus** (`/prometheus/`) - метрики и мониторинг - **Alertmanager** (`/alerts/` и `/api/v1/`) - управление алертами ## Быстрый старт ### 1. Автоматическая настройка через Ansible ```bash # Развертывание с паролями по умолчанию ansible-playbook -i infra/ansible/inventory.ini infra/ansible/playbook.yml # Развертывание с кастомными паролями ansible-playbook -i infra/ansible/inventory.ini infra/ansible/playbook.yml \ -e monitoring_username=myuser \ -e monitoring_password=mypassword ``` ### 2. Ручная настройка ```bash # Настроить авторизацию make auth-setup # Добавить пользователя make auth-add-user USER=admin # Добавить еще одного пользователя make auth-add-user USER=operator ``` ## Управление пользователями ### Добавление пользователя ```bash make auth-add-user USER=username ``` ### Сброс пароля ```bash make auth-reset USER=username ``` ### Просмотр пользователей ```bash make auth-list ``` ## Доступ к сервисам После настройки авторизации: - **Prometheus**: `https://your-server/prometheus/` - **Alertmanager**: `https://your-server/alerts/` - **Alertmanager API**: `https://your-server/api/v1/` При первом обращении браузер запросит логин и пароль. ## Health Check endpoints Следующие endpoints остаются доступными без авторизации: - `https://your-server/prometheus/-/healthy` - проверка состояния Prometheus - `https://your-server/nginx-health` - проверка состояния nginx ## Файлы конфигурации ### Nginx конфигурации - `infra/nginx/conf.d/prometheus.conf` - авторизация для Prometheus - `infra/nginx/conf.d/alertmanager.conf` - авторизация для Alertmanager ### Ansible - `infra/ansible/playbook.yml` - автоматическая настройка авторизации - `infra/ansible/group_vars/all.yml` - переменные по умолчанию ### Скрипты - `scripts/generate_auth_passwords.sh` - генерация паролей - `infra/nginx/AUTH_SETUP.md` - подробная документация ## Безопасность - Пароли хранятся в зашифрованном виде в `/etc/nginx/passwords/monitoring.htpasswd` - Файл доступен только для чтения пользователю root и группе www-data - Используется HTTPS для всех соединений - Настроена защита от брутфорса через fail2ban ## Устранение проблем ### Проверка конфигурации nginx ```bash sudo nginx -t ``` ### Проверка файла паролей ```bash make auth-list ``` ### Проверка логов ```bash sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/nginx/access.log ``` ### Перезапуск nginx ```bash sudo systemctl reload nginx ``` ## Переменные Ansible В файле `infra/ansible/group_vars/all.yml`: ```yaml monitoring_username: "admin" # Имя пользователя по умолчанию monitoring_password: "admin123" # Пароль по умолчанию ``` Можно переопределить через: - Переменные окружения - `--extra-vars` в ansible-playbook - Vault файлы для безопасного хранения паролей