feat(security): Authelia — SSO для домашних сервисов (envoy-internal) #54
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/authelia"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Поднимает Authelia — SSO для домашних сервисов, которые пойдут через
envoy-internal. Порядок согласован ранее: сначала Authelia, потом Hindsight (второй MR).Что в PR
authelia/ks.yamldependsOnнаcloudnative-pg,dragonfly-operatorвdatabaseиexternal-secrets-stores;healthChecksна HelmRelease)app/helmrelease.yamlauthelia:9091, HTTPRoutesso.<домен>наenvoy-internalapp/postgres.yamlCluster/postgres:instances: 3, 1 ГиБ, SCproxmox-ssdapp/dragonfly.yamlDragonfly/dragonflyпод сессии: 1 реплика,--maxmemoryиз лимита, пароль из секретаapp/externalsecret.yamlkv/authelia→ Secretauthelia(три ключа +users_database.yml)app/externalsecret-dragonfly.yamlPassword/dragonfly+ExternalSecret/dragonfly(refreshInterval: 0)Своих
ocirepository.yamlиhttproute.yamlнет: источник чарта — общийflux-system/app-template, маршрут — вroute.internalтого же HelmRelease (как у firecrawl).Где что хранится (три разных места, не одно)
users_database.yml. У Authelia два бэкенда первого фактора —fileиldap(официальная JSON-схема v4.39), SQL-бэкенда нет; файл не «лишний», а единственный вариант без LDAP-каталога.authentication_logs(попытки по username),identity_verification(токены подтверждения),totp_configurations, webAuthn/u2f,user_preferences,encryption,migrations(по миграциямinternal/storage/migrations/postgresv4.39.24), позже — таблицы OIDC (consent/PAR/device code/claims) и regulation.session.redis), не Postgres.Поэтому и ФС БД — 1 ГиБ: там несколько десятков строк, а не данные, которые растут с пользователями.
Почему app-template, а не официальный чарт Authelia
Так было в плане и это подтверждается фактами: сам чарт в README заявляет «No stability guarantees — Anything may change in any release including a breaking change» (ломающие релизы 0.5/0.9/0.10/0.11), а его значения — свой диалект поверх конфига Authelia. С app-template конфиг — обычный
configuration.yml, а реплик можно держать три.Проверки
v4.39черезjsonschema: 0 ошибок.values.schema.jsonустановленного app-template (тег изmain): 0 ошибок.flate test all— 72 passed;flate build all+ разбор рендера: 3 реплики, uid/fsGroup 1000,readOnlyRootFilesystem: true,/tmp— tmpfs, каждыйAUTHELIA_*_FILEуказывает внутрь смонтированного тома,Service/authelia:9091,HTTPRoute/authelia→authelia:9091.Решения, которые стоит видеть в ревью
AUTHELIA_*_FILE, файлы — из секретов ESO/CNPG/генератора.filesystem/smtp, «must configure exactly one»); выбранfilesystemс файлом в tmpfs (/tmp,emptyDir medium: Memory), стартовая проверка включена.readOnlyRootFilesystem:entrypoint.shv4.39.24 веткуchown -R ${PUID}:${PGID} /configберёт только под root, приid -u != 0— простоexec authelia.refreshInterval: 0): генератор ESO stateless, оператор Dragonfly за Secret'ами не следит; ротация — руками (удалить секрет → reloader перекатит обе стороны).SecurityPolicy+ReferenceGrantвместе с первым защищённым маршрутом).После мёржа
kv/authelia— уже создан, ESO подхватит послеflux reconcile.:resolve sso.grachevko.ruнаrb5009-gw→192.168.40.11. Остаточная A-записьsso.grachevko.ru A 192.168.1.2(комментарий «old cluster h1») предложена к удалению отдельно — сейчас её перебивает CNAME.postgres, подdragonfly, три подаauthelia; вход наhttps://sso.<домен>(TOTP — при первом входе).Pull request closed