Рекомендации по защите секретов

В этой статье приводятся рекомендации по защите секретов и снижению риска несанкционированного доступа. Следуйте этим рекомендациям, чтобы убедиться, что вы не храните конфиденциальную информацию, например учетные данные в коде, GitHub репозитории, журналы, конвейеры непрерывной интеграции и непрерывного развертывания (CI/CD) и т. д. Рекомендации в этой статье компилируются из рекомендаций отдельных служб, а также из Microsoft Cloud Тест безопасности (MCSB).

Эта статья соответствует модели безопасности Microsoft "Никому не доверяй", которая требует явной проверки, доступа к наименьшей привилегии и допущения нарушения. Инструкции по обеспечению безопасности с применением Политика Azure см. в разделе Microsoft Cloud Security Benchmark версии 2 — привилегированный доступ и MCSB версии 2 — Защита данных.

Обнаружение секретов и предотвращение

Прежде чем защитить свои секреты, необходимо понять, где они находятся, и не допустить их раскрытия.

  • Провести аудит, чтобы определить секреты: проведение тщательного аудита систем и приложений помогает определить все конфиденциальные сведения, необходимые для защиты. К ним относятся пароли, ключи API, строка подключения и другие учетные данные. Регулярные аудиты гарантируют учёт новых секретов и правильное управление существующими. Даже динамически созданные секреты, такие как токены OAuth, которые могут быть временными, по-прежнему должны быть защищены с той же строгостью, что и долгосрочные секреты.

  • Избегайте хардкодинга секретов: размещение секретов непосредственно в вашем коде или конфигурационных файлах представляет значительный риск для безопасности. Если ваша кодовая база скомпрометирована, то и ваши секреты тоже будут под угрозой. Вместо этого используйте переменные среды или средства управления конфигурацией, которые сохраняют секреты из исходного кода. Эта практика сводит к минимуму риск случайного воздействия и упрощает процесс обновления секретов. Кроме того, интеграция извлечения секретов в конвейер автоматического развертывания и использование шаблонов внедрения секретов может предотвратить случайную утечку секретов в журналах или системе контроля версий. Дополнительные сведения см. в рекомендациях по защите секретов приложений.

  • Реализуйте средства проверки секретов: регулярное сканирование кодовой базы на встроенные секреты может предотвратить случайное раскрытие. Такие средства, как Azure DevOps сканер учетных данных и GitHub сканирование секретов могут автоматически обнаруживать и предупреждать вас о любых секретах, найденных в репозиториях. Интеграция этих средств в конвейер CI/CD обеспечивает непрерывный мониторинг. Обрабатывать все секреты, найденные этими средствами сканирования, как скомпрометированные, что означает, что они должны быть немедленно отозваны и заменены для поддержания целостности вашей защитной позиции.

Безопасное хранилище и шифрование

Защита секретов требует безопасных механизмов хранения и правильного шифрования на всех этапах.

  • Использовать безопасные хранилища ключей: службы, такие как Azure Key Vault и Azure Managed HSM предоставляют надежные функции безопасности, включая управление доступом, ведение журнала и автоматическую смену. Этот подход позволяет централизованно управлять секретами и снижает риск несанкционированного доступа. Для обеспечения еще большей безопасности, особенно для высокочувствительных или критически важных секретов, рассмотрите возможность шифрования секрета с помощью хранилища ключей в аппаратном модуле безопасности (HSM), который обеспечивает расширенную защиту по сравнению с хранилищами секретов на основе программного обеспечения. Для сценариев с ключами, управляемыми клиентом, используйте Azure Key Vault уровня "Премиум" (на базе HSM) как минимум или Azure Managed HSM для требований к суверенитету данных ключей. Общие сведения о всех вариантах управления ключами в Azure и рекомендациях по выбору см. в Управление ключами в Azure и Как выбрать подходящее решение для управления ключами.

  • Шифрование секретов в состоянии покоя и при передаче: Azure Key Vault безопасно сохраняет секреты с помощью оболочечного шифрования, где ключи шифрования данных (DEKs) шифруются ключами шифрования ключей (KEKs), обеспечивая дополнительный уровень безопасности. Используйте протоколы безопасной связи, такие как HTTPS, для шифрования данных между приложениями и хранилищем ключей. В Azure шифрование неактивных данных реализуется в различных службах с помощью шифрования AES 256, а данные, передаваемые через TLS и MACsec, защищены. Дополнительные сведения см. в разделе «Шифрование данных в состоянии покоя и при передаче».

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

Управление доступом и удостоверение

Управление тем, кто и что может получить доступ к секретам, критически важно для обеспечения безопасности.

  • Управляемые удостоверения: Управляемые удостоверения в Azure обеспечивают безопасный способ аутентификации приложений в службах Azure без хранения учетных данных в коде. Включив управляемые удостоверения для ресурсов Azure, вы можете безопасно получать доступ к Azure Key Vault и другим службам, уменьшая потребность в обработке секретов вручную. Этот подход не только сводит к минимуму создание секретов, но и уменьшает область поверхности для потенциальных нарушений, так как ответственность за управление учетными данными делегирована платформе.

  • Примените детализированный контроль доступа. Следуйте принципу наименьших привилегий, применяя детализированный контроль доступа к секретам. Используйте Azure управление доступом на основе ролей (RBAC), чтобы обеспечить доступ только авторизованных сущностей к определенным секретам. Регулярно просматривайте и обновляйте разрешения доступа, чтобы предотвратить несанкционированный доступ. Реализуйте отдельные роли, такие как пользователь, администратор и аудитор, для управления доступом к секретам, гарантируя, что только доверенные идентификации имеют соответствующий уровень разрешений. См. руководство Azure Key Vault RBAC.

Управление жизненным циклом секретов

Секреты требуют постоянного управления на протяжении всего жизненного цикла, от создания до выхода на пенсию.

  • Регулярно обновлять секреты: Секреты подвержены утечке или воздействию с течением времени. Регулярное смена секретов снижает риск несанкционированного доступа. Секреты можно ротацией в Azure Key Vault для определенных секретов; для тех, которые не могут быть автоматически ротацией, установите процесс ротации вручную и убедитесь, что они удаляются, когда больше не используются. Автоматизация процесса смены секретов и внедрение избыточности в управление секретами могут гарантировать, что смена не нарушает доступность службы. Реализация логики повторных попыток и шаблонов параллельного доступа в вашем коде может помочь свести к минимуму проблемы в ходе интервала ротации.

  • Безопасное распространение секретов: при распространении секретов убедитесь, что они безопасно используются внутри организации и за ее пределами. Используйте инструменты, предназначенные для безопасного обмена, и включите процедуры восстановления секретов в ваши планы аварийного восстановления. Если ключ скомпрометирован или утёк, его следует перегенерировать немедленно. Используйте отдельные ключи для каждого потребителя, а не ключи общего доступа, даже если они имеют аналогичные шаблоны доступа. Эта практика упрощает управление ключами и отзыв, обеспечивая возможность отзыва скомпрометированных ключей без влияния на других потребителей.

Мониторинг и ведение журналов

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

  • Мониторинг и ведение журнала доступа: Включите ведение журнала и мониторинг в вашей системе управления секретами для отслеживания доступа и использования. Используйте ведение журнала Key Vault и/или службы, такие как Azure Monitor и Сетка событий Azure для отслеживания всех действий, связанных с секретами. Это позволяет видеть, кто получил доступ к вашим секретам, и помогает обнаружить любое подозрительное поведение или потенциальные инциденты, связанные с безопасностью. Ведение подробных следов аудита имеет решающее значение для инспекции и верификации доступа к секретам, что может помочь предотвратить кражу удостоверений, избежать отречения и уменьшить избыточную уязвимость.

Руководство по обработке секретов для конкретной службы

Отдельные службы могут иметь дополнительные лучшие практики и руководства по защите секретов. Далее приводятся некоторые примеры.

Следующие шаги

Минимизация рисков безопасности является общей ответственностью. Вам нужно проактивно принимать меры по защите рабочих процессов. Узнайте больше о общей ответственности в облаке.