Site icon IT Draft

Vault HashiCorp. Тип хранилища PostgreSQL

Vault HashiCorp. Тип хранилища PostgreSQL

Vault + PostgreSQL

Vault — это утилита командной строки, которая отвечает за управление секретами — логинами, паролями, ключами, сертификатами. «Управление» включает в себя как хранение, так и выдачу секретов конкретным приложениям с пометкой у себя в журнале, кому и когда это произошло.

В прошлых сатьях мы рассмотрели установку HashiCorp Vault и установку PostgreSQL 13 в Centos 8.

Настройки PostgreSQL

Создаем базу и пользователя. Для этого переключимся на пользователя postgres

$ sudo su - postgres

Создаем пользователя БД

$ createuser vltusr

Переключаемся в PostgreSQL shell

Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров

Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.


$ psql

Задаем пароль для пользователя БД

=# ALTER USER vltusr WITH ENCRYPTED password 'mypasswddd';
ALTER ROLE

Создам базу и задаем владельца базы

=# CREATE DATABASE vaultdb WITH ENCODING='UTF8' OWNER=vltusr;
CREATE DATABASE

Переключаемся на базу vaultdb

=# \c vaultdb
You are now connected to database "vaultdb" as user "postgres".

Создаем таблицу

=# 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)
);

Создаем индекс

=# CREATE INDEX parent_path_idx ON vault_kv_store (parent_path);

Выходим

=# \q
$ exit

Тестируем подключение

$ sudo su - postgres
$ psql -U vltusr -h localhost -p 5432 vaultdb
Password for user vltusr: mypasswddd
=# \q
$ exit

Настройка Vault

Останавливаем Vault

$ sudo systemctl stop vault

Редактируем конфиг Vault

$ 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 не будет стартовать

$ sudo setenforce 0
$ sudo nano /etc/selinux/config
[…]
SELINUX=permissive

Запускаем Vault

$ sudo systemctl start vault

Проверяем статус

$ systemctl status vault
$ journalctl -u vault

Дальше все манипуляции как в статье по установке HashiCorp Vault в Centos 8:

Бэкапирование PostgreSQL

Создаем файл с параметрами подключения к базе, для того что бы в дальнейшем создавать дамп PostgreSQL без ввода пароля

$ sudo nano /root/.pgpass
# hostname:port:database:username:password
localhost:5432:vaultdb:vltusr:mypasswddd

Выставляем права

$ sudo chmod 600 /root/.pgpass

Создаем дамп

$ sudo pg_dump -d "vaultdb" -h localhost -Fc -U vltusr -w -f "/mnt/$(date +%Y%m%d_%H%M%S)_vaultdb.dump"
Exit mobile version