Рекомендации по автоматизации
Если ресурсы созданы непосредственно из API или командной строки StarVault, то принудительно применять к ним соответствующие политики управления может быть непросто. Для управления крупными развертываниями StarVault рекомендуется систематизировать управление ресурсами с помощью Terraform и Terraform-провайдера StarVault.
Terraform применяет политику и управляет, используя подход "инфраструктура как код" (IaC), что позволяет программно управлять такими ресурсами StarVault как методы аутентификации, плагины, пространства имен и политики. Если, например, определенные политики ACL или Sentinel должны применяться к каждому пространству имен StarVault, то Terraform обеспечит корректное применение при создании каждого нового пространства имен.
1. Рекомендации по Terraform
-
Работая через Terraform, избегайте чтения/записи долгосрочных статических секретов в StarVault. Данные, прочитанные в Terraform или записанные из него, сохраняются в файле состояния Terraform и всех сгенерированных файлах плана.
-
Шифруйте файл состояния Terraform. Защищайте файл состояния с помощью надежного шифрованного бэкенда.
-
Соблюдайте принцип минимальных привилегий. Ограничьте доступ на чтение/запись к файлу состояния Terraform.
-
Ограничьте возможности прямого управления ресурсами StarVault. Используйте политики Sentinel, чтобы ограничить разрешения на управление теми ресурсами, которыми нужно управлять через Terraform.
-
Используйте краткосрочные учетные данные. Учетные данные сохраняются в файле состояния Terraform. Использование краткосрочных учетных данных снижает риск утечки в случае компрометации файла состояния.
2. Рекомендации по StarVault
-
Используйте динамические учетные данные, сохраняемые в StarVault, для разных провайдеров облачных услуг. При использовании динамических учетных данных, сохраняемых в StarVault, не нужно создавать уникальные динамические учетные данные под каждого провайдера облачных услуг, что позволяет централизованно управлять конфиденциальными данными с помощью StarVault и создавать лишь временные учетные данные под различных облачных провайдеров.
-
Используйте атрибут пространства имен в ресурсах и источниках данных. Использование имеющегося у ресурса атрибута "пространство имен" вместо псевдонима провайдера упрощает настройку и избавляет от необходимости иметь несколько блоков для разных провайдеров.
-
Точечно используйте функции токенов. Используйте минимально необходимые возможности токенов StarVault для управления ресурсами StarVault. Например, для чтения данных из источника данных KV и обнаружения дрейфа нужна только функция
read, в то время как управление ресурсом KV требует функцииcreateилиupdateв зависимости от того, существует ли уже ресурс или нет, а удаление ресурса KV из конфигурации Terraform требует функцииdelete. -
Перенесите существующие ресурсы в Terraform. Если ресурсы StarVault созданы вне процесса выделения ресурсов Terraform, перенесите неуправляемые ресурсы.
-
При работе со StarVault всегда, когда возможно, используйте провайдер динамических учетных данных. Провайдер динамических учетных данных по мере необходимости генерирует краткосрочные учетные данные, поэтому статические учетные данные уже не так нужны, что улучшает безопасность интеграции.
-
Не передавайте
addressилиtokenв блок конфигурации провайдера. Если используете провайдер динамических учетных данных, Terraform заполняет переменную окруженияVAULT_ADDRзначениемaddress. Далее Terraform использует эти переменные окружения, чтобы извлечь значение дляtoken. -
Не задавайте учетные данные StarVault в коде напрямую. Если нет возможности использовать провайдер динамических учетных данных, настройте провайдер StarVault с помощью переменных окружения.
|
Динамические учетные данные влияют на поведение дочерних токенов Если используете динамические учетные данные вместе с Terraform-провайдером StarVault, это означает, что Terraform управляет жизненным циклом токена StarVault. В результате StarVault не создает дочерний токен и нет возможности использовать аргументы провайдера для управления дочерним токеном StarVault (например, аргумент |