Architecture Decision Record

Active theme: Light

← Примери за записи на решения

Съхранение на тайни

Съдържание:

Резюме

Проблем

Трябва да съхраняваме тайни, като пароли, частни ключове, токени за автентикация и др.

Някои от тайните са ориентирани към потребителя. Например нашият разработчик иска да може да използва мобилния си телефон, за да потърси парола за услуга.

Някои от тайните са ориентирани към системата. Например нашият конвейер за непрекъсната доставка трябва да може да търси идентификационните данни за нашия облачен хостинг.

Решение

Bitwarden за тайни, ориентирани към потребителя

Vault by HashiCorp за тайни, ориентирани към системата.

Състояние

Взето. Открити сме за нови алтернативи, когато се появят.

Подробности

Допускания

За тази цел и при сегашното ни състояние ценим удобството, ориентирано към потребителя, като използваеми мобилни приложения.

  • Искаме да осигурим бърз и лесен достъп в движение, например за разработчик, който извършва дежурно инженерство за надеждност на системите.

  • Искаме да можем да споделяме някои тайни между избрани хора, например екип.

Не се опитваме да решаваме за единствен доставчик, като съхраняване на всички тайни изключително в Amazon, Azure или Google.

Не искаме импровизирани подходи като „запомни го“ или „запиши го на бележка“ или „намери си свой собствен начин да го съхраняваш“.

Нашият модел на сигурност за тази цел е съгласен с използване на добре уважавани готови търговски (COTS) доставчици, като SaaS инструменти за управление на пароли.

Ограничения

В момента искаме нещо лесно, т.е. без нужда от писане на код, без нужда от инсталиране на сървъри, без нужда от голям ангажимент, без нужда да стандартизираме всички.

Позиции

Разгледахме:

  1. Готови мениджъри на пароли, ориентирани към потребителя: LastPass, 1Password, Bitwarden, Dashlane, KeePass, pass, GPG и др.

  2. Търговски готови мениджъри на пароли, ориентирани към системата: AWS KMS, Vault by HashiCorp, EnvKey, Secret Server by Thycotic, Devolutions Password Server, Confidant by Lyft.

  3. Подходи, ориентирани към споделяне: използване на споделен документ в Google, споделен канал в Slack, споделена мрежова папка и др.

  4. Нискотехнологични импровизирани подходи, като запомняне, записване на бележка или разчитане всеки потребител да измисли собствен подход.

Аргумент

Bitwarden, LastPass, 1Password и Dashlane са все готови търговски продукти.

  • Подобни видове функции за потребители, екипи, организации и др.

  • Настолни възможности за Windows и Mac и мобилни възможности за Android и iOS.

  • Разширения за браузъри за Chrome и Firefox за автоматично попълване на формуляри и др.

Bitwarden има две предимства пред останалите:

  • Bitwarden е с отворен код, което означава, че сигурността може да бъде преглеждана от колеги, а компанията е широко ценена от разработчици, ориентирани към сигурността.

  • Анекдотите от софтуерни работници описват значително предпочитание към Bitwarden пред останалите.

Типичен добър материал: https://jcs.org/2017/11/17/bitwarden

Типичен сайт за гласуване и сравнение един до друг: https://stackshare.io/stackups/bitwarden-vs-dashlane

Отлагаме KeyPass, pass, GPG и др., защото има допълнителна сложност. Всички те изглеждат като добри решения за технически потребители. GPG изглежда особено добър за технически потребители, които искат възможности, ориентирани към команди, в различни системи.

Отлагаме KMS, защото има зависимост от единствен доставчик.

За нуждите, ориентирани към системата, избираме Vault, защото отзивите са удивително положителни и защото HashiCorp има отлична история със софтуер и поддръжка от най-високо качество.

Налагаме вето върху подходите за споделяне, като чрез споделени документи, споделени канали, споделени мрежови папки и др. Те не осигуряват качествата на сигурност, които искаме.

Налагаме вето върху импровизираните нискотехнологични подходи, защото всички се съгласяваме, че това не е дългосрочен път напред.

Последици

Разработчиците може да се наложи да следят тайните на две места: Bitwarden за достъп, ориентиран към потребителя, и Vault за достъп, ориентиран към системата.

Свързани

Свързани решения

Решението кой CI/CD сървър да се използва трябва да включва доказателство за способност за достъп до тайните.

Ще трябва да решим как да управляваме тайните по отношение на политики, ротации, организации и др.

Свързани изисквания

Тайните ще имат свързани изисквания за съответствие, одит и въвеждане/извеждане на служители в HR.

Свързани артефакти

Очакваме, че може да експортираме някои тайни в променливи на средата.

Свързани принципи

Лесно обратимо.

Лесно паралелно, т.е. лесно е да се използват различни мениджъри на пароли.

Евтино за изпробване, т.е. има безплатен пробен период и няма ангажимент.

Бележки

Бележки за оценката тук. Всички бележки са публични коментари на различни дискусионни форуми за devops.

Vault by HashiCorp

Vault е точно това, което искате тук.

Не слагайте Vault направо в производство, първо го пуснете в тестова среда, защото документацията на HashiCorp може да е доста оскъдна, дори продуктите им да са страхотни.

Много стръмна крива на учене и не е тривиално да се пусне.

Първоначалната настройка е малко мъка. Струва си обаче и общността го подкрепя достатъчно, за да се справите.

Ужасна документация, но има много наръчници онлайн от хора, които са го настройвали, и ако съберете няколко от тях, ще имате работеща настройка.

Първоначалната настройка изискваше поправяне на техните helm диаграми (vault и consul). Макар технически да можете да използвате много други back-ендове, наистина, наистина не го препоръчвам. Back-ендът/consul може да е мъничък, ако нямате много данни за съхранение.

Определено свикнете да използвате CLI, защото GUI е по-скоро proof-of-concept/рекламен портал за тяхното корпоративно издание.

Фактът, че не можете просто да го „напълните“, е мъка. Например ако имате 5 полета, трябва ръчно да добавите всяко поле за всеки елемент. Така че не е като да дефинирате предварително полета за конкретна категория и да попълните тези полета за всички елементи в категорията, по-скоро е „генерирате всичко всеки път“, което (според мен) е голяма гадост.

Може също да погледнете goldfish като UI върху vault. Прави доста приятно привличането на екипа ви на ваша страна. Имат и демо. 1. Настройте consul. 2. Настройте vault, сочещ към consul. 3. Настройте goldfish, сочещ към vault. 3. Настройте някоя cron задача за изпълнение на consul snapshot за резервни копия.

LastPass

LastPass Teams. Използваме го, има персонализирани шаблони, ACL, нищо не липсва според мен.

Внедрих LastPass във своята организация и му давам C+/B-. Най-големият проблем напоследък е липсата на надеждност. През последните 90 дни е имало множество часове, в които трезорите са били принудително превключвани в офлайн режим. Това не е идеално за моята организация, защото имаме буквално 4 000+ пароли, съхранени в 20+ споделени папки. Както можете да си представите, при толкова пароли поне няколко се актуализират или добавят ежедневно. Имаме план за аварийно възстановяване (DR), ако проблемите продължат повече от час-два: скрипт всяка нощ подписва и криптира CSV дъмп на трезора, който може да бъде импортиран в keepass.

LastPass е имал неотчетени колебания на влошена услуга: влизането „работи“, но не зарежда сайтове, случайни функции в администраторския панел са счупени и не се споделят правилно ключове за нови споделени папки от най-високо ниво. Имам специален потребител за „key push“/резервно копиране, който е във всяка група. Обикновено влизането като този потребител отстранява всякакви проблеми със споделянето на ключове, но не и когато услугата е влошена, независимо какво казва страницата със състоянието...

За интеграция може да е лесно, ако имате подходящи ACL с модел на най-малките привилегии, напр. ако потребител има четене и запис и само четене за запис или папка, получава само разрешения само за четене. За съжаление ACL в моята организация не са най-добрите, така че накрая използвах JSON provisioning API и ~500 реда Python, защото зависимата природа на стотиците ни ACL не се съпоставя добре с модела на най-малките привилегии. Накрая получих всички ACL, в които е бил потребителят, и направих нещо като обхождане на зависимостите.

Ако вашата структура на ACL или групи вече е изградена с оглед на модел на най-малките привилегии, инструментът за синхронизация AD/LDAP за Windows ще работи добре.

Свържете се с техния екип по продажбите и те могат да ви осигурят по-дълъг пробен период за Enterprise. Уверете се, че разбирате напълно ограниченията му, преди да вземете решение. Имахме доста болки от растежа, но освен прекъсвания или влошавания от страна на сървъра, беше невероятно гладко.

Bitwarden

Bitwarden има хубави инструменти около себе си (WebUI, CLI, мобилно, настолно). Може да се хоства самостоятелно и е сравнително лесен за настройка. Сравнително добра документация и инструмент, препоръчван от PrivacyTools.

EnvKey

https://www.envkey.com/ е SaaS. Наистина лесен за внедряване, интегриране и управление.

Функции:

  • Защита на API ключове и идентификационни данни.

  • Поддържане на конфигурацията синхронизирана навсякъде.

  • Интелигентно, криптирано от край до край управление на конфигурация и тайни.

  • Предотвратяване на несигурно споделяне и разрастване на конфигурацията.

  • Интегриране за минути.

Възможности:

  • Управление на конфигурацията и нивата на достъп за всички ваши приложения, среди и екипи на едно място.

  • Конфигуриране на всяка среда за разработка или сървърна среда само с една променлива на средата.

Плюсове:

  • Добра начална страница.

  • Ясно ценностно предложение.

  • Визуално отлично уеб приложение.

  • Превъзходни примерни данни, напр. Algolia, AWS, Datadog, GitHub, Stripe и др.

  • Говорих с основателя 30 минути за компанията, UI и др. Dane звучи добре информиран, честен за плюсовете/минусите и като жизнеспособен партньор.

  • Компанията е по същество типична компания от Y Combinator с 1 основател. Събрала е 120 хил. долара през 2018-01.

  • Фокусът е върху достигането до корпоративни функции, особено преминаване от облачен хостинг на EnvKey към on-prem или BYOC.

  • Потенциален път напред: да се започне с EnvKey за лекота на употреба, а по-късно (или паралелно) да се добави Vault.

Confidant by Lyft

https://lyft.github.io/confidant/

Confidant е услуга с отворен код за управление на тайни, която осигурява удобно за потребителя съхранение и достъп до тайни по сигурен начин, от разработчиците в Lyft.

Автентикация чрез KMS: Confidant решава проблема „кокошката и яйцето“ при автентикацията, като използва AWS KMS и IAM, за да позволи на IAM ролите да генерират сигурни токени за автентикация, които могат да бъдат проверени от Confidant. Confidant управлява и KMS грантове за вашите IAM роли, което позволява на IAM ролите да генерират токени, които могат да се използват за автентикация между услуги или за предаване на криптирани съобщения между услуги.

Криптиране в покой на версионирани тайни: Confidant съхранява тайните само с добавяне в DynamoDB, като генерира уникален KMS ключ за данни за всяка ревизия на всяка тайна, използвайки симетрична автентикирана криптография Fernet.

Удобен за потребителя уеб интерфейс за управление на тайни: Confidant предоставя уеб интерфейс на AngularJS, който позволява на крайните потребители лесно да управляват тайните, съпоставянията на тайни със услуги и историята на промените.

Devolutions Password Server

https://server.devolutions.net/

Осигурете, управлявайте и наблюдавайте достъпа до привилегировани акаунти и сесии.

Изчерпателен, високо защитен трезор за пароли, който ви позволява да контролирате достъпа до вашите привилегировани акаунти, като същевременно подобрява цялостната видимост на мрежата за системните администратори и осигурява безпроблемно изживяване за крайните потребители.

Функции: централизиран организационен трезор за пароли, частен трезор, специфичен за потребителя, мениджър на пароли, инжектиране на идентификационни данни, интеграция с Active Directory, контрол на достъпа въз основа на роли, двуфакторна автентикация, готовност за корпоративна употреба, ограничения по IP, възможности за управление, автоматичен генератор на пароли, достъп от мобилно приложение, история на паролите, отчети за достъпа, имейл известия.

  • поддържа криптиране на данни

  • поддържа множество схеми за автентикация, включително LDAP, O365 и локални потребители С поддръжка на MFA от множество източници

  • множество хранилища/трезори с фино настроени контроли на достъпа за множество екипи

  • съвременен уеб UI

  • частни трезори за идентификационни данни и връзки за лични идентификационни данни/връзки

  • мобилни приложения за iOS/Android

  • одитни дневници за всеки запис, кой/какво/кога с незадължителна подкана защо имат достъп

  • персонализируеми шаблони (макар че нативно поддържат стотици типове връзки)

  • още много функции и дебел клиент за Windows/Mac (Remote Desktop Manager), с който можете да синхронизирате и който значително разширява възможностите... връзки с едно щракване

  • цената не е чак толкова лоша - до 15 потребители са 500 долара годишно за password server

Secret Server by Thycotic

https://thycotic.com/products/secret-server/

Функции на версията on-premise:

  • Пълен контрол върху вашите end-to-end системи за сигурност и инфраструктура

  • Внедряване на софтуера във вашия on-premise център за данни или във ваша собствена инстанция на виртуален частен облак

  • Изпълнение на законови и регулаторни задължения, които изискват всички данни и системи да се намират on premise

Функции на облачната версия:

  • Моделът софтуер като услуга ви позволява да се регистрирате и да започнете веднага

  • Еластична мащабируемост с растежа ви

  • Контролите и излишъкът се осигуряват от Azure със SLA за наличност от 99,9%

Обратна връзка от потребителите:

  • Преди използвахме този продукт. Лесно се заобикаляше и правилата работят само за умни хора. Мързеливи или глупави потребители лесно могат да го объркат в екипна област. Цените са договорими, когато говорите с тях.

  • Можете да го стартирате с SQL express и машина с Win 7.

  • Евтин.