Управление учетными данными в CI / CD environment

Настройка: У меня есть приложение, которое я в настоящее время развертываю вручную на сервере. Для этого требуется несколько учетных данных (клиентские секреты внешних служб, токены, ключи AES, IV и т. Д.), Которые я в настоящее время храню в файле, зашифрованном с помощью gpg . Каждый раз, когда я перезапускаю приложение, я разблокирую на консоли клавишу gpg , и служба затем снова расшифровывает файл из сценария приложения (поскольку gpg-agent сохраняет кодовую фразу в памяти в течение ограниченного времени) и анализировать их через конвейер.

Преимущество этого метода заключается в том, что ни учетные данные, ни пароль gpg , необходимые для доступа к ним, НИКОГДА не сохраняются на диске, а хранятся только в памяти . Таким образом, даже с полным доступом root невозможно восстановить учетные данные. Единственный шанс - получить доступ в течение короткого промежутка времени, в течение которого клавиша gpg остается разблокированной.

Недостатки в том, что (а) ни один другой пользователь не может запустить службу (если мы не передадим мои аккаунт) и (б) приложение не может быть запущено никакими автоматическими средствами.

На github есть проект creds , который похож на то, что делаю я, но все еще имеет указанные выше недостатки. Можно зашифровать файл с помощью нескольких ключей gpg , а затем попытаться расшифровать его всеми ключами, пока один из них не добьется успеха.

Вопрос: Каковы лучшие способы обработки учетных данных ( а) доступен для нескольких пользователей без ключа или совместного использования учетной записи, (б) доступен для системы CI / CD (где у меня нет консоли каждый раз, когда происходит развертывание), и (в) хранятся только данные пароля в памяти? «Обходной путь» с несколькими ключами gpg выглядит как сложный взлом и не работает с системами CI / CD.

4
задан 1 August 2018 в 15:20
1 ответ

Я буду говорить о секретах вместо учетных данных, так как может быть другая конфиденциальная информация, которую вы хотите защитить. Неважно, что ваш вопрос сформулирован специально для систем CI / CD, проблема одинакова, говорим ли мы об использовании сертификатов X.509 для аутентификации, сохранении учетных данных базы данных или защите токена доступа для агента сборки.

Нет канонического способа справиться с этим, поскольку потребности приложений и организаций различаются по тому, что составляет секреты и как с ними обращаться. Некоторые приложения могут не предлагать другого способа хранения секретов, кроме как в файле.

Некоторые приложения шифруют секреты на диске, но, поскольку они часто имеют , чтобы быть симметричным, что является более или менее декоративным.

Итак. , что вы можете сделать?

  • Ваша первая линия защиты - это DAC (дискреционный контроль доступа) и MAC (обязательный контроль доступа) вашей операционной системы - если мы говорим о Linux, разрешения POSIX - это DAC и LSM, такие как App Armor, SELinux или GRSecurity - это MAC.

  • Проверка вашей ОС на соответствие стандартам, например CIS или DISA STIG .

  • Использование HSM или смарт-карты OpenPGP На ум приходит для хранения ключа PGP, который вы используете для шифрования секретов на диске. Подобные устройства гарантируют, что ключ никогда не покидает аппаратное обеспечение.

Помните, что никакая единственная мера не обеспечивает безопасность ключей в HSM - физический доступ все равно может их скомпрометировать. Аппаратные устройства хранения ключей должны быть объединены с физической безопасностью и надлежащими операционными процедурами для обеспечения их безопасности.

Проверьте основные политики корневого центра сертификации браузера ( Chrome , Firefox , Edge / IE ). Они предписывают использование аппаратных криптоустройств, а также несколько ограничений и правил, касающихся того, как ими пользоваться и какие проверки вы должны пройти.

  • Использование программного обеспечения, такого как Vault , для получения секрета по запросу, но это требуется поддержка приложения. В противном случае вы просто снова сохраняете его на диске. Что Vault может добавить к этому миксу, так это принудительно установленный TTL для секретов и возможность самостоятельно изменять их.
3
ответ дан 3 December 2019 в 03:39

Теги

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