Базы данных
Механизм секретов баз данных генерирует учетные данные динамически на основе настроенных ролей. Он работает с различными базами данных через интерфейс плагинов. Есть несколько встроенных типов баз данных, а также фреймворк для запуска пользовательских типов баз данных для расширения возможностей. Это означает, что сервисам, которым нужен доступ к базе данных, больше не нужно жестко кодировать учетные данные: они могут запрашивать их у StarVault и использовать механизм аренды StarVault для более удобного распространения ключей. Такие ключи называются "динамическими ролями" или "динамическими секретами".
Поскольку каждая служба обращается к базе данных с уникальными учетными данными, это значительно упрощает аудит при обнаружении сомнительного доступа к данным. Вы можете отследить его до конкретного экземпляра службы, основываясь на имени пользователя SQL.
StarVault использует свою собственную внутреннюю систему отзыва прав, чтобы гарантировать, что пользователи станут недействительными в течение разумного времени после истечения срока аренды.
1. Статические роли
При использовании динамических секретов StarVault генерирует уникальную пару имени пользователя и пароля для каждого уникального запроса учетных данных. StarVault также поддерживает статические роли для некоторых механизмов секретов баз данных. Статические роли - это сопоставление 1 к 1 ролей StarVault с именами пользователей в базе данных. При использовании статических ролей StarVault хранит и автоматически меняет пароли для связанного с ними пользователя базы данных в течение настраиваемого периода времени.
Когда клиент запрашивает учетные данные для статической роли, StarVault возвращает текущий пароль для того пользователя базы данных, который сопоставлен с запрашиваемой ролью. Благодаря статическим ролям любой человек с соответствующими политиками StarVault может получить доступ к связанной учетной записи пользователя в базе данных.
|
Не используйте статические роли для учетных данных root базы данных.
Не используйте те же учетные данные root базы данных, которые вы предоставляете StarVault inconfig/ со статическими ролями. StarVault не делает различий между стандартными и root учетными данными при ротации паролей. Если вы назначите root учетные данные статической роли, все динамические или статические пользователи, управляемые этой конфигурацией базы данных, после ротации не будут работать, поскольку пароль для config/ больше не действителен. Если вам нужно ротировать root учетные данные, используйте конечную точку API Rotate root credentials. |
Обратитесь к таблице возможностей базы данных, чтобы определить, поддерживает ли выбранный вами бэкэнд базы данных статические роли.
2. Настройка
Большинство механизмов секретов должны быть предварительно сконфигурированы, прежде чем они смогут выполнять свои функции. Эти шаги обычно выполняются оператором или инструментом управления конфигурацией.
-
Включите механизм секретов базы данных:
$ starvault secrets enable database Success! Enabled the database secrets engine at: database/По умолчанию механизм секретов будут включаться по имени механизма. Чтобы включить механизм секретов по другому пути, используйте аргумент
-path. -
Настройте StarVault с помощью соответствующего плагина и информации о подключении:
$ starvault write database/config/my-database \ plugin_name="..." \ connection_url="..." \ allowed_roles="..." \ username="..." \ password="..." \Настоятельно рекомендуется создать пользователя в базе данных специально для StarVault. Этот пользователь будет использоваться для работы с динамическими и статическими пользователями в базе данных. В документации этот пользователь называется
root.StarVault будет использовать указанного здесь пользователя для создания/обновления/отмены учетных данных базы данных. Этот пользователь должен обладать соответствующими правами на выполнение действий над другими пользователями базы данных (создание, обновление учетных данных, удаление и т. д.).
Этот механизм секретов может настраивать несколько подключений к базе данных. Для получения подробной информации о конкретных параметрах конфигурации обратитесь к документации по конкретной базе данных.
-
После настройки пользователя
rootнастоятельно рекомендуется изменить пароль этого пользователя таким образом, чтобы пользователь starvault не был доступен никаким пользователям, кроме самого StarVault:$ starvault write -force database/rotate-root/my-databaseПосле этого пароль для пользователя, указанного в предыдущем шаге, будет недоступен. В связи с этим настоятельно рекомендуется создать пользователя специально для StarVault, чтобы управлять пользователями базы данных.
-
Настройте роль, которая сопоставляет имя в StarVault с набором операторов создания для создания учетной записи базы данных:
$ starvault write database/roles/my-role \ db_name=my-database \ creation_statements="..." \ default_ttl="1h" \ max_ttl="24h" Success! Data written to: database/roles/my-roleПоля
{{username}}и{{password}}будут заполнены плагином динамически генерируемыми значениями. В некоторых плагинах также поддерживается поле{{expiration}}.
3. Использование
После того как механизм секретов настроен и у пользователя/машины есть токен StarVault с соответствующими правами, он может генерировать учетные данные.
Сгенерируйте новые учетные данные, считав из конечной точки /creds имя роли:
$ starvault read database/creds/my-role
Key |
Value |
--- |
---- |
|
|
|
|
|
|
|
|
|
|
4. Возможности базы данных
В StarVault все базы данных поддерживают динамические и статические роли.
База данных |
Ротация учетных данных |
Динамические роли |
Статические роли |
Настройка имени пользователя |
Типы учетных данных |
Cassandra |
Да |
Да |
Да |
Да |
пароль |
InfluxDB |
Да |
Да |
Да |
Да |
пароль |
MSSQL |
Да |
Да |
Да |
Да |
пароль |
MySQL/MariaDB |
Да |
Да |
Да |
Да |
пароль |
Oracle |
Да |
Да |
Да |
Да |
пароль |
PostgreSQL |
Да |
Да |
Да |
Да |
пароль |
5. Кастомные плагины
Этот механизм секретов позволяет запускать пользовательские типы баз данных через открытый интерфейс плагина. Более подробную информацию вы можете найти в разделе "Плагин для пользовательских баз данных".
6. Типы учетных данных
Системы баз данных поддерживают различные методы аутентификации и типы учетных данных. Механизм секретов базы данных поддерживает управление учетными данными, альтернативными именам пользователей и паролям. Параметры credential_type и credential_config динамических и статических ролей определяют тип учетных данных, которые StarVault будет генерировать и предоставлять плагинам баз данных. О том, какие типы учетных данных они поддерживают, и о примерах их использования читайте в документации к отдельным плагинам баз данных.
7. Генерация пароля
Пароли генерируются с помощью политик паролей. Базы данных могут опционально устанавливать политику паролей для использования во всех ролях или на уровне отдельных ролей для данной базы данных.
Например, при каждом вызове starvault write database/config/my-database вы можете задать политику паролей для всех ролей, использующих my-database. Каждая база данных имеет политику паролей по умолчанию, которая определяется следующим образом: 20 символов, из которых как минимум 1 символ в верхнем регистре, минимум 1 символ в нижнем регистре, минимум 1 число и минимум 1 символ тире.
Генерация паролей по умолчанию может быть представлена в виде следующей политики паролей:
length = 20
rule "charset" {
charset = "abcdefghijklmnopqrstuvwxyz"
min-chars = 1
}
rule "charset" {
charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
min-chars = 1
}
rule "charset" {
charset = "0123456789"
min-chars = 1
}
rule "charset" {
charset = "-"
min-chars = 1
}
8. Отключение экранирования символов
Вы можете указать опцию disable_escaping со значением true в некоторых механизмах секретов, чтобы запретить StarVault экранировать специальные символы в полях имени пользователя и пароля. Это необходимо для некоторых альтернативных форматов строк подключения, таких как ADO с MSSQL. Ознакомьтесь с к документациям по API движку секретов баз данных и по отдельным плагинам, чтобы определить поддержку этого параметра.
Например, если пароль содержит символы URL-escaped, такие как # или %, они останутся такими, а не превратятся в %23 и %25 соответственно.
$ starvault write database/config/my-mssql-database \
plugin_name="mssql-database-plugin" \
connection_url='server=localhost;port=1433;user id={{username}};password={{password}};database=mydb;' \
username="root" \
password='your#StrongPassword%' \
disable_escaping="true"
9. API
Движок секретов базы данных имеет полный HTTP API. Более подробную информацию см. в разделе API механизма секретов баз данных.