Перейти к содержимому

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

Анонимный доступ, Basic Auth, зашифрованные сеансы и HTTPS.

Поддерживаемая аутентификация

Crateview поддерживает анонимные реестры, встроенную службу htpasswd Basic Auth и дополнительную службу Crateview auth в режиме токена. Он исследует /v2/ и отображает форму входа, когда реестр требует обычной проверки подлинности.

Внешние службы токенов Bearer и OIDC не интегрированы. Ненастроенные внешние службы токенов создают явное уведомление неподдерживаемого auth.

Сторона реестра Basic Auth

Создайте файл htpasswd с хешем пароля bcrypt. В следующем примере используется временный официальный контейнер Apache; замените учетные данные примера и защитите полученный файл:

mkdir -p auth
docker run --rm --entrypoint htpasswd httpd:2   -Bbn your-user choose-a-strong-password > auth/htpasswd

Пример настроек Distribution:

auth:
  htpasswd:
    realm: Registry
    path: /auth/htpasswd

Смонтируйте сгенерированный файл в контейнер реестра по адресу /auth/htpasswd. Конфигурация реестра отличается от конфигурации Crateview. Используйте HTTPS для удаленного доступа; Basic Auth — это кодирование, а не транспортное шифрование. Не оставляйте настоящие пароли в общей истории оболочки или общедоступных примерах.

Сеансы пользовательского интерфейса

Сервер Nitro проверяет учетные данные по реестру. Он сохраняет их в зашифрованном файле cookie HttpOnly, SameSite=Strict. Браузерный JavaScript и localStorage не получают учетные данные. Сеансы истекают через восемь часов.

Установите случайный секрет производственного сеанса:

openssl rand -base64 32

Используйте сгенерированное значение как NUXT_SESSION_PASSWORD, содержащее не менее 32 символов. Каждый экземпляр внешнего интерфейса за балансировщиком нагрузки должен использовать одно и то же значение. Без настройки Crateview генерирует локальный секрет процесса, поэтому перезапуск делает существующие сеансы недействительными.

HTTPS и выход из системы

Файл cookie сеанса использует Secure, если протоколом общедоступных запросов является HTTPS. Правильно настройте пересылаемый протокол обратного прокси. Выход из системы очищает сеанс пользовательского интерфейса; он не удаляет и не изменяет пользователей реестра.

Docker и другие клиенты CLI аутентифицируются непосредственно через прокси-сервер /v2/**, используя свои обычные учетные данные реестра. Вход в веб-интерфейс не приводит к автоматическому входу в интерфейс командной строки Docker.

Дополнительное управление учетной записью

Независимая служба auth/управления поддерживает создание учетной записи и изменение собственного пароля. Docker подключается напрямую к реестру и работает без контейнера пользовательского интерфейса. Пользователи и хеши bcrypt остаются в htpasswd; разрешения токена находятся в permissions.json. Хранилище учетной записи не использует SQLite.

  • Базовый режим: Distribution проверяет общий файл htpasswd; все пользователи имеют равный доступ к реестру. Docker не требует запуска службы управления.
  • Режим токена: Независимый сервис auth выдает подписанные пятиминутные токены; Distribution обеспечивает соблюдение разрешений репозитория. Docker требует реестра и службы auth. Новые пользователи изначально не имеют доступа к хранилищу.
  • Интерфейс: Пользователи меняют свой пароль, указав текущий пароль. NUXT_USER_CREATION_ALLOWED_USERS по умолчанию пуст; alice,bob позволяет создавать учетные записи только этим пользователям, * позволяет каждому аутентифицированному пользователю. Эта политика применяется на стороне сервера.
  • Разрешения: CLI предоставляет целевые точные репозитории, пространства имен (team/*) или все (*); профили: reader (pull), writer (pull/push) и manager (pull/push/delete). Базовый режим не имеет ролей реестра.

Явно включите NUXT_AUTH_MODE=htpasswd или token и настройте внутренний NUXT_AUTH_SERVICE_URL и только серверный NUXT_AUTH_SERVICE_SECRET. Режим токена дополнительно требует, чтобы NUXT_AUTH_TOKEN_REALM точно соответствовал конечной точке общедоступного токена. Анонимные реестры и внешние службы токенов не поддерживают управление локальными учетными записями. Для сброса разрешений и административного пароля используется интерфейс командной строки auth; Пользовательский интерфейс не может изменять пароли других пользователей или назначать разрешения.

См. руководство по обслуживанию учетных записей для наложений Compose, настройки, миграции и команд CLI. Направьте общедоступный доступ Docker непосредственно к реестру независимо от пользовательского интерфейса. Ранее выданные токены остаются действительными в течение пяти минут после изменения пароля или отзыва разрешения.

Администрирование объединяет Настройки и Пользователей. Меню аккаунта также содержит язык и тему. Аккаунт позволяет сменить свой пароль с подтверждением текущего. Серверный список разрешений управляет просмотром и созданием аккаунтов; права токенов доступны только для чтения. Новый пароль: минимум 12 символов и максимум 72 байта UTF-8. Новые токенные аккаунты изначально не имеют доступа к репозиториям.

NUXT_AUTH_MODE=htpasswd
NUXT_AUTH_SERVICE_URL=http://auth:8080
NUXT_AUTH_SERVICE_SECRET=REPLACE_WITH_SEPARATE_MANAGEMENT_SECRET
NUXT_USER_CREATION_ALLOWED_USERS=alice,bob