HashiCorp Vault. Тип хранилища PostgreSQL
HashiCorp Vault — это утилита командной строки, которая отвечает за управление секретами — логинами, паролями, ключами, сертификатами. «Управление» включает в себя как хранение, так и выдачу секретов конкретным приложениям с пометкой у себя в журнале, кому и когда это произошло.
В прошлых статьях мы рассмотрели установку HashiCorp Vault и установку PostgreSQL 13 в Centos 8.
Настройки PostgreSQL
Создаем базу и пользователя. Для этого переключимся на пользователя postgres
1
$ sudo su - postgres
Создаем пользователя БД
1
$ createuser vltusr
Переключаемся в PostgreSQL shell
1
$ psql
Задаем пароль для пользователя БД
1
2
=# ALTER USER vltusr WITH ENCRYPTED password 'mypasswddd';
ALTER ROLE
Создам базу и задаем владельца базы
1
2
=# CREATE DATABASE vaultdb WITH ENCODING='UTF8' OWNER=vltusr;
CREATE DATABASE
Переключаемся на базу vaultdb
1
2
=# \c vaultdb
You are now connected to database "vaultdb" as user "postgres".
Создаем таблицу
1
2
3
4
5
6
7
=# CREATE TABLE vault_kv_store (
parent_path TEXT COLLATE "C" NOT NULL,
path TEXT COLLATE "C",
key TEXT COLLATE "C",
value BYTEA,
CONSTRAINT pkey PRIMARY KEY (path, key)
);
Создаем индекс
1
=# CREATE INDEX parent_path_idx ON vault_kv_store (parent_path);
Выходим
1
2
=# \q
$ exit
Тестируем подключение
1
2
3
4
5
$ sudo su - postgres
$ psql -U vltusr -h localhost -p 5432 vaultdb
Password for user vltusr: mypasswddd
=# \q
$ exit
Настройка Vault
Останавливаем Vault
1
$ sudo systemctl stop vault
Редактируем конфиг Vault
1
2
3
4
5
6
7
8
9
10
11
$ sudo nano /etc/vault.d/vault.hcl
[…]
#storage "file" {
# path = "/var/lib/vault/data"
#}
storage "postgresql" {
connection_url = "postgres://vltusr:mypasswddd@localhost:5432/vaultdb?sslmode=disable"
table = "vault_kv_store"
max_parallel = "128"
}
[…]
Переводим SELinux в режим работы premissive
, иначе сервис Vault не будет стартовать
1
2
3
4
$ sudo setenforce 0
$ sudo nano /etc/selinux/config
[…]
SELINUX=permissive
Запускаем Vault
1
$ sudo systemctl start vault
Проверяем статус
1
2
$ systemctl status vault
$ journalctl -u vault
Дальше все манипуляции как в статье по установке HashiCorp Vault в Centos 8:
- Добавление переменных
- Инициализация сервиса, где там выдадут токены
- Распечатывание хранилища
- Авторизация (vault login)
Бэкапирование PostgreSQL
Создаем файл с параметрами подключения к базе, для того что бы в дальнейшем создавать дамп PostgreSQL без ввода пароля
1
2
3
$ sudo nano /root/.pgpass
# hostname:port:database:username:password
localhost:5432:vaultdb:vltusr:mypasswddd
Выставляем права
1
$ sudo chmod 600 /root/.pgpass
Создаем дамп
1
$ sudo pg_dump -d "vaultdb" -h localhost -Fc -U vltusr -w -f "/mnt/$(date +%Y%m%d_%H%M%S)_vaultdb.dump"