@KoreanGuy

Хранить ключи в приватном AWS S3 bucket?

Есть authentication сервер, который создает юзер-аккаунты в бд, занимается подтверждением почты, сбросом паролей и тд. Он генерирует JWT-токены используя алгоритм RSA, то есть ему нужна ключ-пара.

Есть веб-сервер, у которого некоторые эндпойты требуют авторизации. Для проверки токена ему нужен публичный ключ. В общем, всё стандартно.

Помимо них есть еще несколько сервисов, которым требуется публичный ключ, но это не важно. Представим, что такой сервис один. Планирую в продакшн деплоить всё это дело через AWS ECS, то есть каждый сервис будет упакован в контейнер, и ECS будет оркестрировать.

В dev на локальный машине я просто генерирую ключ-пару и даю доступ authentication серверу к обоим ключам и веб-серверу к публичному ключу через bind mount. То есть ключи хранятся на хосте в какой-то директории, которая маунтится в контейнеры. Сервисы читают ключи из файлов в "примаунченной" директории.

Вопрос в том как это дело организовать в продакшн. Я не хочу упаковывать ключи в images, но и использовать bind mount будет неудобно, так как ECS может запускать новые authentication и веб-сервер контейнеры и деплоить их как на уже существующих, так и на новых EC2-инстансах, если места на существующих больше нет. И новые инстансы тогда должны будут иметь ключи на своих файловых системах, что проблематично организовать.

Гораздо более удобный подход, как мне видится, — залить ключи в приватный AWS S3 bucket, и дать сервисам роли, позволяющие читать нужные ключи оттуда. Тогда новые контейнеры будут автоматически подхватывать роли и, соответственно, получать доступ к ключам. Есть ли у этого подхода недостатки?

Какие еще есть способы?

Я нигде не могу найти best practices для этой ситуации, хотя она рядовая. Если есть, тыкните пожалуйста.
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
inoise
@inoise Куратор тега Amazon Web Services
Solution Architect, AWS Certified, Serverless
aws secrets manager или aws parameter store
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы