Откройте для себя некоторые из лучших практик управления секретами
26 мая 2022 г.Для работы веб-приложениям часто требуются секреты, такие как ключи API, пароли и частные сертификаты, но хранение и доступ к этим ресурсам может сделать разработчиков уязвимыми для угроз безопасности.
В этой статье вы узнаете о проблемах управления секретами, а также о некоторых передовых методах управления, хранения и чтения секретов в веб-приложениях.
Что такое секреты?
Секреты — это цифровые учетные данные, используемые для аутентификации и авторизации. Они управляют правами доступа как на уровне «человек-приложение», так и на уровне «приложение-приложение».
Общие типы секретов включают в себя:
- Автоматически сгенерированные пароли
- Пароли пользователей
- Межсистемные пароли
- Пароли базы данных
- Токены авторизации
- Ключи приложений и API
- Частные ключи шифрования
- SSH-ключи
- Частные сертификаты (TLS, SSL)
- Одноразовые пароли
Секреты предоставляют пользователям и приложениям доступ к конфиденциальным данным, системам и службам. Вот почему так важно хранить секреты в безопасности при транспортировке и хранении.
Наиболее частым методом хранения секретов было использование файлов .env
, часто называемых переменными среды; однако эти файлы могут предоставлять данные неавторизованным пользователям, а ручное управление файлами может привести к ошибкам.
Подробнее о рисках, связанных с файлами .env
, [читайте здесь] (https://www.doppler.com/blog/the-triumph-and-tragedy-of-env-files).
Управление секретами предлагает более безопасную альтернативу.
Что такое секретное управление?
Чтобы понять секретное управление, вам сначала нужно знать секретный жизненный цикл.
Жизненный цикл секретов
Здоровый секрет должен следовать этому процессу:
- Генерация/создание: Секрет генерируется либо вручную пользователем, либо автоматически по мере необходимости. Пароли обычно придерживаются политики, которая регулирует их создание и использование.
- Ротация: После того, как секрет используется, его следует регулярно менять либо автоматически, либо с помощью запроса на создание вручную. Если секрет устарел или срок его действия истек, доступ блокируется до тех пор, пока секрет не будет изменен.
- Отзыв: Когда секрет больше не нужен или не нужен — например, когда сотрудник увольняется из компании или обнаруживается подозрительная активность — он удаляется из пользователя или программы, эффективно блокируя доступ к ресурсу. Удаление ненужных, просроченных, нарушенных или слабых секретов — важный шаг в поддержании идеальной гигиены секретов.
Управление секретами — это процесс безопасного и эффективного управления производством, ротацией, отзывом и хранением учетных данных на протяжении всего жизненного цикла секретов. Думайте об этом как об улучшенной версии управления паролями. В то время как объем управляемых учетных данных расширяется, цель остается прежней: защитить жизненно важные активы от нежелательного доступа.
Почему важно управление секретами?
Управление секретами уменьшает или устраняет участие пользователей в управлении секретами, чтобы ограничить потенциальные точки отказа.
В целом, это способствует безопасности на трех уровнях:
- Безопасность инфраструктуры предотвращает несанкционированный доступ к учетным записям пользователей и приложений, устройствам и другим элементам сети.
- Безопасность облачных служб ограничивает и управляет доступом к облачным учетным записям и важным облачным службам.
- Безопасность данных предотвращает компрометацию данных в жизненно важных системах, хранилищах, базах данных и других ресурсах.
Однако реализация секретного управления означает интеграцию мер безопасности в наиболее уязвимые уровни инфраструктуры организации — облака, код, данные и устройства, что может быть сложно.
Проблемы управления секретами
Некоторые из общих рисков для секретного управления включают в себя:
- Неполная видимость и осведомленность: Это особый недостаток децентрализованных моделей, в которых администраторы, разработчики и другие члены команды хранят свои секреты индивидуально, если вообще хранят свои секреты. Надзор здесь означает, что обязательно будут пробелы в безопасности, а также проблемы с аудитом.
- Жестко закодированные/встроенные учетные данные: Приложения и устройства IoT поставляются и развертываются с жестко запрограммированными учетными данными по умолчанию, которые легко взломать с помощью инструментов сканирования и простых атак на основе угадывания или словаря.
- Привилегированные учетные данные и облако: Консоли администратора облака и виртуализации (например, предоставляемые AWS или Office 365) предоставляют пользователям расширенные привилегии суперпользователя, позволяя им мгновенно запускать и останавливать виртуальные машины и приложения в больших масштабах. . Каждая из этих виртуальных машин имеет собственный набор привилегий и секретов, которыми необходимо управлять.
- Инструменты DevOps. Команды DevOps обычно используют несколько инструментов и технологий для оркестровки, управления конфигурацией и других целей (например, контейнеры Chef, Puppet, Ansible, Salt и Docker), которые основаны на автоматизации и других сценариях, требуют секретов для работы.
- Учетные записи сторонних поставщиков/решения для удаленного доступа: Трудно гарантировать, что авторизация, предоставленная посредством удаленного доступа или третьей стороне, используется надлежащим образом.
- Процессы ручного управления секретами: больше ручных методов управления секретами подразумевает более высокий риск недостатков и ошибок в системе безопасности.
Однако существуют решения и передовой опыт для решения этих проблем и обеспечения безопасности ваших конфиденциальных данных.
Рекомендации по управлению секретами
Существует несколько методов, которые вы можете использовать, чтобы предоставить вашим пользователям и приложениям безопасный и надежный способ получить то, что им нужно для доступа к системам.
Вот что вам нужно сделать, чтобы построить эффективную систему управления секретами в вашей организации.
Централизованный доступ/управление
Во-первых, вам нужно централизовать свои секреты. Многие проекты хранят секреты в системах контроля версий, таких как GitHub, Bitbucket и GitLab.
Централизация ваших данных упрощает контроль за тем, кто и в какое время может получить доступ к секретам.
Чтобы централизовать секреты, вы можете сохранить их в базе данных или использовать менеджер секретов.
Узнайте больше о менеджерах секретов [здесь] (https://www.doppler.com/blog/what-is-a-secrets-manager).
Создайте политику управления секретами
Единая политика управления секретами должна содержать строгие рекомендации по структуре секретов (минимальная длина, сложность, использование специальных символов, запрещенные пароли, повторное использование и продолжительность), а также запрещать использование секретов по умолчанию или жестко закодированных секретов.
В эту политику должны быть включены некоторые основные черты:
- Ограничьте использование жестко закодированных секретов и паролей по умолчанию.
- Установите строгие ограничения формата пароля.
- В определенных случаях укажите требуемый секретный отзыв.
- Установите ограничение по времени для обязательной секретной ротации.
Автоматизация процессов управления секретами
Когда действия не автоматизированы, вы рискуете получить ущерб, вызванный человеческим фактором. Старайтесь полагаться на технологии, а не на людей, для разработки, управления, распространения и поддержания секретов и удаления любых жестко закодированных или встроенных секретов.
Используйте детализированные разрешения, которые можно отозвать
Предоставляйте временные учетные данные уникальным физическим или юридическим лицам на детальном уровне, также известном как динамические секреты, чтобы в случае любого нарушения затронутые учетные данные можно было отозвать, не затрагивая всю инфраструктуру разработки.
По крайней мере, разные наборы учетных данных должны быть созданы для разных производственных систем или групп, в идеале для каждой среды.
Всегда шифровать секреты
Секреты должны быть зашифрованы при передаче и хранении, чтобы обеспечить максимальную безопасность в сети.
Ваши ключи шифрования должны быть объединены в решение для управления секретами, что позволит вам установить надлежащий контроль над тем, кто имеет доступ к этим ключам.
Аудит привилегированных сеансов
Чтобы улучшить контроль и подотчетность, используйте мониторинг привилегированных сеансов для регистрации, аудита и мониторинга всех привилегированных сеансов для учетных записей, пользователей, сценариев и инструментов автоматизации.
Захват нажатий клавиш и экранов также является опцией, позволяющей просматривать в реальном времени и воспроизводить.
Некоторые решения для управления сеансами бизнес-привилегий также позволяют ИТ-специалистам обнаруживать подозрительное поведение в процессе выполнения сеанса и останавливать, блокировать или завершать сеанс до тех пор, пока активность не будет тщательно исследована.
Держите данные отдельно
Воспользуйтесь преимуществом распределенного характера современных сетей. Храните секреты и конфиденциальные данные отдельно, а не собирайте их в одном месте. Это упрощает использование и обновление секретов в инфраструктуре разработки.
Вывод
Управление секретами имеет решающее значение для обеспечения кибербезопасности организации. Ваша организация должна разработать основную стратегию управления секретами, которая определяет единые правила и процессы для всех этапов жизненного цикла секретов, чтобы безопасно и эффективно управлять секретами.
Оригинал