https://github.com/hashicorp/vault-examples https://github.com/hashicorp/hello-vault-go ******************************************************************************************************************************** Статичные и долгосрочные учетные данные представляют собой огромную угрозу, так как в случае их утечки злоумышленники могут беспрепятственно получить доступ к системам. Один из вариантов решения это краткосрочные учетные данные, которые действуют только в течение ограниченного времени и автоматически истекают. Предположим, что у вас уже есть настроенная система аутентификации, тогда нам нужно настроить динамическую генерацию учётных данных: 1. Для начала активируем secret engine Для этого используем простую команду; vault secrets enable database После чего пропишем подключение к БД: vault write database/config/my-postgresql-database \ plugin_name=postgresql-database-plugin \ connection_url="postgresql://{{username}}:{{password}}@localhost:5432/mydb?sslmode=disable" \ allowed_roles="my-role" \ username="postgres" \ password="my-secret-password" 2. Далее необходимо создать роль, которая будет использоваться для генерации учетных данных Команда для создания роли: vault write database/roles/my-role \ db_name=my-postgresql-database \ creation_statements="CREATE ROLE {{name}} WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expire_time}}'" \ default_ttl="1h" \ max_ttl="24h" 3. Теперь вы можете генерировать учетные данные для вашей роли. Команда для генерации: vault read database/creds/my-role Это сгенерирует временные учетные данные для подключения к базе данных, например: Key Value --- ----- username vault-xyz123 password GtU7GmHJwU69 lease_id database/creds/my-role/XYZ123 lease_duration 1h lease_renewable true 4. Автоматизация процесса и управление учетными данными Для автоматического продления или обновления учетных данных можно использовать API Vault для повторной генерации учетных данных по мере необходимости. vault lease renew database/creds/my-role/XYZ123 ********************************************************************************************************************************