Есть authentication сервер, который создает юзер-аккаунты в бд, занимается подтверждением почты, сбросом паролей и тд. Он генерирует JWT-токены используя алгоритм RSA, то есть ему нужна ключ-пара.
Есть веб-сервер, у которого некоторые эндпойты требуют авторизации. Для проверки токена ему нужен публичный ключ. В общем, всё стандартно.
Помимо них есть еще несколько сервисов, которым требуется публичный ключ, но это не важно. Представим, что такой сервис один. Планирую в продакшн деплоить всё это дело через AWS ECS, то есть каждый сервис будет упакован в контейнер, и ECS будет оркестрировать.
В dev на локальный машине я просто генерирую ключ-пару и даю доступ authentication серверу к обоим ключам и веб-серверу к публичному ключу через bind mount. То есть ключи хранятся на хосте в какой-то директории, которая маунтится в контейнеры. Сервисы читают ключи из файлов в "примаунченной" директории.
Вопрос в том как это дело организовать в продакшн. Я не хочу упаковывать ключи в images, но и использовать bind mount будет неудобно, так как ECS может запускать новые authentication и веб-сервер контейнеры и деплоить их как на уже существующих, так и на новых EC2-инстансах, если места на существующих больше нет. И новые инстансы тогда должны будут иметь ключи на своих файловых системах, что проблематично организовать.
Гораздо более удобный подход, как мне видится, — залить ключи в приватный AWS S3 bucket, и дать сервисам роли, позволяющие читать нужные ключи оттуда. Тогда новые контейнеры будут автоматически подхватывать роли и, соответственно, получать доступ к ключам. Есть ли у этого подхода недостатки?
Какие еще есть способы?
Я нигде не могу найти best practices для этой ситуации, хотя она рядовая. Если есть, тыкните пожалуйста.