Як зберігати облікові дані, необхідні додатку?


13

Усі кажуть, що зберігання облікових даних у контролі версій (git) - це погана річ. Тому повинні бути інші способи зберігання облікових даних, які є набагато кращими.

Додаток повинен отримувати повноваження звідкись, щоб користуватися послугами, від яких залежить. Ці облікові дані зазвичай зберігаються у файлах конфігурації. Ручне введення кожного сервера для створення цього файлу не викликає сумнівів, оскільки сервери приходять і виходять без втручання людини.

Як керувати обліковими записами програми?


4
Крім того, це, мабуть, занадто широко для однієї відповіді, яка не має розмір книги.
кодерангер

1
@coderanger Переглядаючи вашу презентацію, ваша категоризація різних типів секретів чудова. І я можу побачити, як ви вважаєте, що її книга ... але вищенаведене питання не вимагає класифікації, а лише вирішення конкретної проблеми.
Євгеній

2
Якщо у вас є конкретна ситуація, то будь ласка, відредагуйте питання, щоб включити більше деталей, наприклад тип секрету, який використовується (пароль бази даних, ключі TLS тощо).
кодерангер

1
Це занадто широко. Для цього є щонайменше 14 інструментів, не включаючи спеціальні сценарії чи шаблони: gist.github.com/maxvt/bb49a6c7243163b8120625fc8ae3f3cd Потрібні додаткові деталі (наприклад, потрібен CLI, чи потрібне для хмарного рішення чи для великих монолітні додатки тощо)
Олександр

1
@Alexandre Hah, я відкрив це і подумав "так, хороший список збірників", а потім побачити себе, цитованим внизу :)
coderanger

Відповіді:


5

Правильне управління секретами програми завжди було проблемою. З прийняттям хмари виникли нові виклики. Існує чудова презентація OWASP про реальність та проблеми зберігання таємниць у хмарі.

Ви можете бути здивовані, почувши, що зберігання секретів у вихідному коді є одним із представлених рішень (або "архітектури"). Це тому, що зараз немає ідеальної архітектури чи способу цього зробити. Зрештою, ваші секрети можуть бути зашифровані ... але що захищає ключ шифрування? «Черепахи всю дорогу вниз», - сказали вони.

Кожен тип секретного управління має свої сильні та слабкі сторони, і презентація вже охоплює це. Натомість я спробую ознайомитись з деякими функціями, які ви можете шукати у секретному (обліковому) управлінському рішенні:

  • Контроль доступу: чи можете ви надати доступ для запису адміністраторам та доступ до читання програм? Чи можете ви обмежити, які програми можуть читати (програма A має доступ лише до цих секретів)?
  • Журнали аудиту: потрібні для багатьох звітів про відповідність і хороший спосіб визначити, чи щось не так
  • Безпечне зберігання секретів: як рішення зберігає секрети? Зашифровані БД? Зашифрований FS? Хто / що тримає ключ шифрування, якщо такий є? Як використовується цей ключ - один раз при запуску, а потім надійно відкинути?
  • Обертання або поновлення ключів / паролів: якщо секрет порушений, чи можете ви скасувати його та надіслати оновлену таємницю додаткам? Чи можуть / програми повинні об'єднати секретну службу управління?
  • Сумісність: Деякі з цих рішень пропонують тісну інтеграцію з певними мовами або рамками. Деякі пропонують API REST. Вас це цікавить?

Переглянувши ці пункти, наскільки вони важливі для вас і як вони реалізуються рішенням, ви зможете вибрати одну з секретних служб управління там .


3

У чисто середовищі, заснованому на EC2, найпростішим рішенням є використання AWS IAM ролей та S3 політики відра. Деякі рецептури цього шаблону також включають KMS для шифрування та DynamoDB замість S3 для зберігання, але я не знайшов надзвичайно вагомих причин для використання також. Ознайомтеся з https://github.com/poise/citadel , він спеціально спрямований на користувачів шеф-кухаря, але базовий зразок працює ні на що, вам, можливо, доведеться зробити власного помічника для фактичного завантаження з S3.


1
Надалі це відповідає на більш ранній і конкретніший варіант питання.
кодерангер

2
Тепер AWS надає спеціальний сервіс для зберігання ключових значень, включаючи шифрування через KMS: aws.amazon.com/ec2/systems-manager/parameter-store .
bnzmnzhnz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.