на Net5.0. Приложению необходимо ходить в БД MS SQL, которая развернута на винде. СУБД пускает пользователей только по доменной аутентификации. Чтобы подключиться к БД с применением доменной аутентификации я использовал Kerberos. В итоге приложение работает, подключение к БД есть, но возникает вопрос в обновлении билетов Kerberos. Вопрос не в renew билета, а в перевыпуске его, так как по умолчанию в домене срок жизни билета составляет 7 дней, и менять этот параметр админы не дают. Приложение должно работать 24\7 и перезапускать контейнер с целью перевыпуска билетов - не вариант.
Исходя из этого я решил воспользоваться Crond, который бы просто запускал kinit один раз в день, тем самым перевыпуская билет.
Здесь я столкнулся с настройкой Dockerfile, entrypoint при запуске контейнера регистрирует crond в Runlevel: sysinit и пытается запустить crond, и при старте контейнера вижу в логе сообщение "WARNING: crond is already starting". Но по факту crond не запускается. Как правильно настроить заупск crond в docker alpine linux?
если у вас приложение должно работать 24/7 в единственном экземпляре, то вы уверены, что докер это то что вам нужно?
Сейчас такой сервис работает на винде, там докер и керберос не нужен и проблемы озвученной не стоит, но планируется переезд с виндовых сервисов в кубернетис. А проблема с доступом к БД c AD аутентификацией остается
вариантов несколько 1 использовать init сервис в контейнере, который будет управлять приложением и кроном 2 использовать дополнительный контейнер, который будет обновлять тикеты и шарить их с контейнером приложения 3 научить приложение обновлять тикеты 4 запускать кронтаску с хоста чтоб она обновляла тикет в контейнере приложения
Продавить админов сделать не доменную учётку.
да, я думал над такими же решениями. Пока решил пойти в сторону Kubernetes CronJob
не секурно
https://www.openshift.com/blog/kerberos-sidecar-container
надо хранить пароли доступов в плейнтексте конфига приложения
по сравнению с керберос несекурно
очень интересно, спасибо, почитаю
А как ты керберос тикет получаешь?
во время деплоя приложения подкидываю заранее изготовленный кейтаб в докер контейнер
А его. где хранишь?
в шифрованном хранилище, куда имеет доступ только Ci\CD
ну, кейтаб считай пароль. Т.е. тебе по сути всё равно приходится менеджить нечто, что позволяет тебе авторизоваться. Пароль или кейтаб файл
кейтаб != пароль
Получив кейтаб я смогу получить тикет и зайти в базу?
Обсуждают сегодня