Настройка политики генерации паролей для секретных механизмов
StarVault поддерживает настраиваемую генерацию паролей, определяемую политикой паролей. Политика содержит правила и требования, которым должен соответствовать пароль, и может предоставлять этот пароль непосредственно через новую конечную точку или через механизмы секретов.
В учебном пособии по динамическим секретам вы настроили StarVault на генерацию динамических учетных данных для базы данных PostgreSQL. В этом руководстве вы узнаете, как настроить StarVault на генерацию паролей, соответствующих стандартам вашей организации.
Если вы не знаете, как настроить StarVault для динамических учетных данных, прочтите руководство по движку секретов базы данных, прежде чем начать.
1. Описание сценария использования
В Orion soft существует политика паролей, которая должна использоваться для всех приложений. Механизм секретов базы данных StarVault генерирует пароли, которые соответствуют шаблону по умолчанию.
Механизмы секретов с поддержкой политик паролей:
-
Active Directory
-
LDAP
-
RabbitMQ
-
Все базы данных
Вы можете изменить стандартный шаблон, чтобы он подходил для таких критериев, как:
-
Длина, которая меньше или превышает длину по умолчанию
-
Различные наборы символов
-
Частота символов
-
Требования к расположению символов
-
Запрещенные повторы
-
Запрещенные слова из словаря
Созадем пользовательскую политику паролей, которая будет соответствовать стандартам безопасности Orion soft. Требования к паролям следующие:
-
Длина 20 символов
-
Несколько наборов символов
-
Должно быть минимальное количество символов из каждого набора
2. Требования к инфраструктуре
Для реализации сценария, описанного в данном руководстве, вам необходимо:
-
Установленный StarVault;
-
Развернутая база данных Postgres.
3. Требования к политике
|
В рамках данного руководства вы можете использовать свой |
Для выполнения всех задач, продемонстрированных в этом руководстве, вам нужна политика для оперативной группы, позволяющая настраивать механизм секретов базы данных и управлять политиками паролей.
3.1. Политика администратора StarVault
Данная политика позволяет настраивать механизм секретов базы данных и управлять политиками паролей.
# Mount the database secret engine
path "sys/mounts/database"
{
capabilities = [ "create", "update", "delete" ]
}
# Manage leases for the database secrets engine readonly role
path "sys/policies/password/example/generate"
{
capabilities = [ "read" ]
}
# Generate a password using the example password policy
path "sys/policies/password/example"
{
capabilities = [ "read", "create", "delete", "update", "list" ]
}
# Configure the database secrets engine and create roles
path "database/*"
{
capabilities = [ "create", "read", "update", "delete", "list" ]
}
Если вы не знакомы с политиками, пройдите учебное пособие по политикам.
4. Создайте лабораторию
-
Разверните контейнер PostgreSQL
docker run -d \ --name learn-postgres \ --env POSTGRES_USER=root \ --env POSTGRES_PASSWORD=rootpassword \ --env POSTGRES_DB=postgres \ --publish 5432:5432 \ --restart unless-stopped \ postgres:latest -
Выполните следующие команды для настройки роли.
docker exec -it learn-postgres psql -U root -d postgres -c "CREATE ROLE ro NOINHERIT;" docker exec -it learn-postgres psql -U root -d postgres -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO ro;" -
Разверните контейнер StarVault
docker run \ --name learn-starvault \ --env 'VAULT_DEV_ROOT_TOKEN_ID=root' \ --env 'VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200' \ --publish 8200:8200 \ --restart unless-stopped \ --detach \ hub.orionsoft.ru/public/starvault:v1.5.0 server -dev -
Экспортируйте переменную окружения для
starvaultCLI, чтобы обратиться к серверу StarVault.$ export STARVAULT_ADDR='http://127.0.0.1:8200' -
Экспортируйте переменную окружения для
starvaultCLI, чтобы аутентифицироваться на сервере StarVault.$ export STARVAULT_TOKEN=<token> -
Включите механизм секретов database.
$ starvault secrets enable database -
Настройте механизм секретов database.
$ starvault write database/config/postgres \ plugin_name=postgresql-database-plugin \ connection_url="postgresql://{{username}}:{{password}}@172.17.0.2:5432/postgres?sslmode=disable" \ allowed_roles="readonly" \ username="root" \ password="rootpassword" \ max_open_connections=4 \ max_idle_connections=0 \ max_connection_lifetime="0s" -
Создайте роль для механизма секретов database.
$ starvault write database/roles/readonly \ db_name=postgres \ creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}' INHERIT;" \ creation_statements="GRANT ro TO \"{{name}}\";" \ default_ttl="1h" \ max_ttl="24h"
StarVault и PostgreSQL запущены и настроены. Вы готовы продолжить обучение.
5. Запрос учетных данных с политикой паролей по умолчанию
Каждый поддерживаемый механизм секретов имеет политику паролей по умолчанию, которая генерирует пароли.
Сгенерируйте учетные данные для роли readonly.
starvault read database/creds/readonly
| Key | Value |
|---|---|
--- |
----- |
|
|
|
|
|
|
|
|
|
|
В учетных данных отображаются созданные username и password. Созданный пароль соответствует политике паролей по умолчанию для механизма секретов.
6. Определение политики паролей
-
Создайте файл политики с именем
example_policy.hcl.$ tee example_policy.hcl <<EOF 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 } EOFПолитики используют язык конфигурации HCL. Поле
lengthустанавливает длину возвращаемого пароля в 20 символов. Каждая строфа правил определяет набор символов и минимальное количество повторений этих символов в генерируемом пароле. Эти правила являются совокупными, поэтому каждое из них добавляет больше требований к генерируемому паролю. -
Создайте политику паролей StarVault с именем
exampleи правилами политики паролей, определенными в файлеexample_policy.hcl.$ starvault write sys/policies/password/example policy=@example_policy.hcl Success! Data written to sys/polices/password/exampleЭта политика доступна для генерации пароля напрямую или с помощью ссылки в
exampleпри настройке поддерживаемых механизмов секретов. -
Сгенерируйте пароль из
exampleполитики паролей.$ starvault read sys/policies/password/example/generateKey Value ---
-----
password#v!RQDHxHunJ1TUmCyysСозданный пароль соответствует требованиям:
-
длина 20 символов
-
не менее 1 прописного символа
-
не менее 1 строчного символа
-
не менее 1 цифры
-
не менее 1 символа
-
7. Настройка пользовательской политики паролей
-
Выведите текущую конфигурацию механизма секретов базы данных
$ starvault read database/config/postgresKey Value ---
-----
allowed_roles[readonly]connection_detailsmap[connection_url:postgresql://{{username}}:{{password}}@172.17.0.2:5432/postgres?sslmode=disable max_connection_lifetime:0s max_idle_connections:0 max_open_connections:4 username:root]password_policyn/aplugin_namepostgresql-database-pluginplugin_versionn/aroot_credentials_rotate_statements[]verify_connectiontrueПервоначально настроенный механизм секретов не содержит политики паролей.
-
Настройте механизм секретов на использование политики паролей
example.$ starvault write database/config/postgres password_policy="example" Success! Data written to: database/config/postgres -
Просмотрите обновленную конфигурацию механизма секретов базы данных.
$ starvault read database/config/postgresПример вывода: Key Value ---
-----
allowed_roles[readonly]connection_detailsmap[connection_url:postgresql://{{username}}:{{password}}@172.17.0.2:5432/postgres?sslmode=disable max_connection_lifetime:0s max_idle_connections:0 max_open_connections:4 username:root]password_policyexample…snip…Сейчас механизмы секретов генерируют пароли, соответствующие политике паролей
example. -
Сгенерируйте учетные данные для роли
readonlyс помощью политики паролейexample.$ starvault read database/creds/readonlyKey Value ---
-----
`lease_id `
database/creds/readonly/AppmaMdS5mtMPwaZOnNnX2O9lease_duration1hlease_renewabletruepasswordba8oWN@106l6uffb*GbYusernamev-token-readonly-W1guRN3Sr2SEw4Oj0uJU-1737491327В учетных данных отображаются созданные
usernameиpassword. Созданныйpasswordсоответствуетexampleполитики паролей, определенному в конфигурации механизма секретов.
8. Очистка
-
Остановите контейнеры.
$ docker stop learn-postgres learn-starvault -
Снимите настройки переменных окружения.
$ unset STARVAULT_ADDR STARVAULT_TOKEN -
Удалите файл политики паролей
example_policy.hcl.$ rm example_policy.hcl
9. Резюме
Вы запросили учетные данные у механизма секретов базы данных, который сгенерировал учетные данные с политикой паролей по умолчанию. Затем вы определили политику паролей и сгенерировали пароль. Наконец, вы обновили конфигурацию механизма секретов, чтобы использовать пользовательскую политику паролей.