Аутентификация
NORA поддерживает базовую аутентификацию (htpasswd с bcrypt) и отзываемые токены с управлением доступом на основе ролей.
Быстрая настройка
Заголовок раздела «Быстрая настройка»1. Создание файла htpasswd
Заголовок раздела «1. Создание файла htpasswd»# Создание файла с первым пользователемhtpasswd -cbB users.htpasswd admin yourpassword
# Добавление пользователейhtpasswd -bB users.htpasswd ci-user ci-secrethtpasswd -bB users.htpasswd developer dev-passПримечание: Флаг
-Bвключает хеширование bcrypt — обязательное требование NORA. Утилитаhtpasswdвходит в пакетapache2-utils(Debian/Ubuntu) илиhttpd-tools(RHEL/CentOS/Astra/РЕД ОС).
2. Запуск NORA с аутентификацией
Заголовок раздела «2. Запуск NORA с аутентификацией»docker run -d -p 4000:4000 \ -v nora-data:/data \ -v ./users.htpasswd:/data/users.htpasswd:ro \ -e NORA_AUTH_ENABLED=true \ ghcr.io/getnora-io/nora:latestDocker Compose:
services: nora: image: ghcr.io/getnora-io/nora:latest ports: - 4000:4000 volumes: - nora-data:/data - ./users.htpasswd:/data/users.htpasswd:ro environment: NORA_AUTH_ENABLED: true restart: unless-stopped
volumes: nora-data:3. Проверка
Заголовок раздела «3. Проверка»# Ожидается ответ 401curl -s http://localhost:4000/v2/_catalog# {error:Authentication required}
# Ожидается ответ 200curl -s -u admin:yourpassword http://localhost:4000/v2/_catalogТокены доступа
Заголовок раздела «Токены доступа»Токены обеспечивают программный доступ без раскрытия учётных данных htpasswd. Каждый токен имеет роль, срок действия и необязательное описание.
Создание токена
Заголовок раздела «Создание токена»curl -s -X POST http://localhost:4000/api/tokens \ -H Content-Type: application/json \ -d '{ username: admin, password: yourpassword, role: write, ttl_days: 90, description: Конвейер сборки }'Ответ:
{ token: nra_a1b2c3d4e5f6..., expires_in_days: 90}Сохраните токен сразу — он отображается только один раз.
Использование с Docker
Заголовок раздела «Использование с Docker»docker login localhost:4000 -u token -p nra_a1b2c3d4e5f6...docker push localhost:4000/myapp:latestИспользование с curl
Заголовок раздела «Использование с curl»curl -H Authorization: Bearer nra_a1b2c3d4e5f6... \ http://localhost:4000/v2/_catalogПросмотр токенов
Заголовок раздела «Просмотр токенов»curl -s -X POST http://localhost:4000/api/tokens/list \ -H Content-Type: application/json \ -d '{username: admin, password: yourpassword}'Отзыв токена
Заголовок раздела «Отзыв токена»curl -s -X POST http://localhost:4000/api/tokens/revoke \ -H Content-Type: application/json \ -d '{ username: admin, password: yourpassword, hash_prefix: a1b2c3d4e5f6g7h8 }'Значение hash_prefix — первые 16 символов хеша из списка токенов.
Роли доступа
Заголовок раздела «Роли доступа»Токены поддерживают три роли:
| Роль | Чтение | Запись | Удаление/Администрирование |
|---|---|---|---|
read | Да | Нет | Нет |
write | Да | Да | Нет |
admin | Да | Да | Да |
Роль по умолчанию для новых токенов: read.
Публичные конечные точки
Заголовок раздела «Публичные конечные точки»Следующие адреса не требуют аутентификации, даже если она включена:
| Адрес | Назначение |
|---|---|
/health | Проверка работоспособности (балансировщики, Kubernetes) |
/ready | Проверка готовности |
/metrics | Сбор метрик Prometheus |
/v2/ | Проверка версии Docker Registry v2 |
/ui/* | Веб-интерфейс |
/api-docs/* | Документация Swagger |
/api/tokens | Создание токена (требует Basic Auth в теле запроса) |
/api/tokens/list | Список токенов (требует Basic Auth в теле запроса) |
/api/tokens/revoke | Отзыв токена (требует Basic Auth в теле запроса) |
Справочник параметров
Заголовок раздела «Справочник параметров»| Переменная | По умолчанию | Описание |
|---|---|---|
NORA_AUTH_ENABLED | false | Включить аутентификацию |
NORA_AUTH_HTPASSWD_FILE | users.htpasswd | Путь к файлу htpasswd |
NORA_AUTH_TOKEN_STORAGE | data/tokens | Каталог хранения токенов |
config.toml:
[auth]enabled = truehtpasswd_file = users.htpasswdtoken_storage = data/tokensСм. также
Заголовок раздела «См. также»- Параметры конфигурации — полный справочник
- TLS / HTTPS — настройка защищённого соединения
- Развёртывание — рекомендации