Пост

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"
Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.