+vault
This commit is contained in:
@ -45,6 +45,16 @@ sections: # An array of sections
|
|||||||
- title: Uptime-kuma
|
- title: Uptime-kuma
|
||||||
icon: https://raw.githubusercontent.com/louislam/uptime-kuma/b45dc6787db6530e8dda1388a37e8a80683da5a8/public/icon.svg
|
icon: https://raw.githubusercontent.com/louislam/uptime-kuma/b45dc6787db6530e8dda1388a37e8a80683da5a8/public/icon.svg
|
||||||
url: http://192.168.200.84:3001
|
url: http://192.168.200.84:3001
|
||||||
|
- title: Gotify
|
||||||
|
icon: https://192.168.200.84:8080/static/defaultapp.png
|
||||||
|
url: https://192.168.200.84:8080
|
||||||
|
- title: portainer.io
|
||||||
|
icon: https://icon.icepanel.io/Technology/svg/Portainer.svg
|
||||||
|
url: https://192.168.200.84:9443
|
||||||
|
- title: Prometheus
|
||||||
|
icon: https://static-00.iconduck.com/assets.00/prometheus-icon-511x512-1vmxbcxr.png
|
||||||
|
url: http://192.168.200.84:9090
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,10 @@ Vault — это инструмент от HashiCorp для безопасног
|
|||||||
```sh
|
```sh
|
||||||
wsl
|
wsl
|
||||||
```
|
```
|
||||||
|
Похоже vault из Москвы недоступен:
|
||||||
|
```sh
|
||||||
|
ssh root@45.144.64.218 -p 2200
|
||||||
|
```
|
||||||
|
|
||||||
### 1.1. Добавление репозитория HashiCorp
|
### 1.1. Добавление репозитория HashiCorp
|
||||||
|
|
||||||
@ -29,8 +32,9 @@ wsl
|
|||||||
|
|
||||||
Заменяем на:
|
Заменяем на:
|
||||||
```text
|
```text
|
||||||
deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main
|
deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com noble main
|
||||||
```
|
```
|
||||||
|
Где noble это кодовое имя Ubuntu 24.04
|
||||||
|
|
||||||
|
|
||||||
4. Обновите списки пакетов:
|
4. Обновите списки пакетов:
|
||||||
@ -39,7 +43,7 @@ wsl
|
|||||||
```
|
```
|
||||||
|
|
||||||
5. Установите Vault:
|
5. Установите Vault:
|
||||||
```ыр
|
```sh
|
||||||
sudo apt install -y vault
|
sudo apt install -y vault
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -47,17 +51,61 @@ wsl
|
|||||||
```sh
|
```sh
|
||||||
vault --version
|
vault --version
|
||||||
```
|
```
|
||||||
|
Выдало: Vault v1.18.5 (2cb3755273dbd63f5b0f8ec50089b57ffd3fa330), built 2025-02-24T09:40:28Z
|
||||||
|
|
||||||
|
|
||||||
## 2. Запуск Vault
|
## 2. Запуск Vault
|
||||||
|
|
||||||
### 2.1. Запуск в Dev-режиме (только для тестирования)
|
### 2.1. Запуск в Dev-режиме (только для тестирования)
|
||||||
|
|
||||||
|
If work stop it:
|
||||||
|
```sh
|
||||||
|
sudo pkill vault
|
||||||
|
```
|
||||||
|
If need delete old data:
|
||||||
|
```sh
|
||||||
|
sudo rm -rf ~/.vault-token ~/.vault/
|
||||||
|
```
|
||||||
|
For find where stored data read file:
|
||||||
|
```sh
|
||||||
|
sudo mcedit /etc/vault/config.hcl
|
||||||
|
```
|
||||||
|
In config file find this path: /opt/vault/data
|
||||||
|
|
||||||
|
После удаления базы нужно инициализировать Vault заново:
|
||||||
|
```sh
|
||||||
|
sudo vault operator init
|
||||||
|
```
|
||||||
|
|
||||||
|
Run in developer mode (in dev mode data stored in RAM):
|
||||||
```sh
|
```sh
|
||||||
vault server -dev
|
vault server -dev
|
||||||
```
|
```
|
||||||
|
|
||||||
- По умолчанию Vault запустится на `http://127.0.0.1:8200/`
|
```text
|
||||||
- В терминале появится root-токен, который нужно сохранить.
|
WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory
|
||||||
|
and starts unsealed with a single unseal key. The root token is already
|
||||||
|
authenticated to the CLI, so you can immediately begin using Vault.
|
||||||
|
|
||||||
|
You may need to set the following environment variables:
|
||||||
|
|
||||||
|
$ export VAULT_ADDR='http://127.0.0.1:8200'
|
||||||
|
|
||||||
|
The unseal key and root token are displayed below in case you want to
|
||||||
|
seal/unseal the Vault or re-authenticate.
|
||||||
|
|
||||||
|
Unseal Key: TMb6A3QI3wJ9kaEeTYo5wEviP23lugJ3Asek2la6V4s=
|
||||||
|
Root Token: hvs.GsWHRR7ne7gMTZhuPgZdh91w
|
||||||
|
|
||||||
|
Development mode should NOT be used in production installations!
|
||||||
|
```
|
||||||
|
|
||||||
|
Теперь Vault работает по адресу:
|
||||||
|
```sh
|
||||||
|
start http://127.0.0.1:8200
|
||||||
|
```
|
||||||
|
Останавливаю нажатием Ctrl + C
|
||||||
|
|
||||||
|
|
||||||
### 2.2. Настройка Vault в режиме сервера
|
### 2.2. Настройка Vault в режиме сервера
|
||||||
|
|
||||||
@ -90,11 +138,7 @@ ui = true
|
|||||||
|
|
||||||
4. Создайте systemd-сервис для Vault:
|
4. Создайте systemd-сервис для Vault:
|
||||||
```sh
|
```sh
|
||||||
sudo mcedit /etc/systemd/system/vault.service
|
sudo tee /etc/systemd/system/vault.service > /dev/null <<EOF
|
||||||
```
|
|
||||||
|
|
||||||
5. Вставьте следующее содержимое:
|
|
||||||
```ini
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=HashiCorp Vault
|
Description=HashiCorp Vault
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
@ -104,7 +148,7 @@ Requires=network-online.target
|
|||||||
User=vault
|
User=vault
|
||||||
Group=vault
|
Group=vault
|
||||||
ExecStart=/usr/bin/vault server -config=/etc/vault/config.hcl
|
ExecStart=/usr/bin/vault server -config=/etc/vault/config.hcl
|
||||||
ExecReload=/bin/kill --signal HUP $MAINPID
|
ExecReload=/bin/kill --signal HUP \$MAINPID
|
||||||
KillSignal=SIGTERM
|
KillSignal=SIGTERM
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
LimitMEMLOCK=infinity
|
LimitMEMLOCK=infinity
|
||||||
@ -114,9 +158,14 @@ NoNewPrivileges=yes
|
|||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
Проверяем всё ли записалось:
|
||||||
|
```sh
|
||||||
|
sudo mcedit /etc/systemd/system/vault.service
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Перезапустите systemd и включите Vault:
|
5. Перезапустите systemd и включите Vault:
|
||||||
```sh
|
```sh
|
||||||
sudo systemctl daemon-reload &&
|
sudo systemctl daemon-reload &&
|
||||||
sudo systemctl enable vault &&
|
sudo systemctl enable vault &&
|
||||||
@ -144,13 +193,13 @@ WantedBy=multi-user.target
|
|||||||
|
|
||||||
Выдало:
|
Выдало:
|
||||||
```text
|
```text
|
||||||
Unseal Key 1: dOVID4QUfFtSHF+dvdB8iwVrWidJ7BXavH15oA+m5a0Q
|
Unseal Key 1: lQlJsb9RI8rSzLrc5iPnx1qJkWZbbXIkrEgnQGe5R6uO
|
||||||
Unseal Key 2: eoEhrDr6W1zZhBc30TX0tDAhfc6zo73poOw4cq7KmFRZ
|
Unseal Key 2: 0qJJXRo570jlH/0Qs/wodXHNI2SF5VgL4jE04JawSPSB
|
||||||
Unseal Key 3: N1XxH08BZEf3Sl9w+qMm36eirXjhh8EKTW7MyXoO475b
|
Unseal Key 3: VuYkOkQ8qmwofDmjqsTRQoMqGAH3Jv+nqQylL7Uibbtp
|
||||||
Unseal Key 4: QboxCTXGqC2yJQRg7qcjQvoJBElT9A4o4x+mUr9/j5ti
|
Unseal Key 4: JJJ8Nqj00qzS9u5wNtTtExL/jWlJF9fgaBsiuaf0kFxC
|
||||||
Unseal Key 5: lhRJsXwg9QIgs7J02DMOtCBmOOuZUJBSazT+oggo7Rhh
|
Unseal Key 5: L6lZMp/l7s24EZJAFnWS4Py5jsWOuMioC41g5LhUJKWL
|
||||||
|
|
||||||
Initial Root Token: hvs.5nuYVp8rWJwFgQ7f16XNoDC7
|
Initial Root Token: hvs.o07DY7tnSPcufxk60pjCXDzn
|
||||||
|
|
||||||
Vault initialized with 5 key shares and a key threshold of 3. Please securely
|
Vault initialized with 5 key shares and a key threshold of 3. Please securely
|
||||||
distribute the key shares printed above. When the Vault is re-sealed,
|
distribute the key shares printed above. When the Vault is re-sealed,
|
||||||
@ -164,18 +213,147 @@ It is possible to generate new unseal keys, provided you have a quorum of
|
|||||||
existing unseal keys shares. See "vault operator rekey" for more information.
|
existing unseal keys shares. See "vault operator rekey" for more information.
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Разблокируйте Vault, используя один из ключей (потом ещё 3 раза):
|
3. Разблокируйте Vault, используя один из ключей (потом ещё 3 раза выполнить эту команду):
|
||||||
```sh
|
```sh
|
||||||
vault operator unseal
|
vault operator unseal
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Повторите `vault operator unseal` три раза с разными ключами.
|
4. Авторизуйтесь с root-токеном:
|
||||||
|
|
||||||
5. Авторизуйтесь с root-токеном:
|
|
||||||
```sh
|
```sh
|
||||||
vault login hvs.5nuYVp8rWJwFgQ7f16XNoDC7
|
vault login hvs.o07DY7tnSPcufxk60pjCXDzn
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
5. Создаём(включаем) новое хранилище ключ-значение
|
||||||
|
```sh
|
||||||
|
vault secrets enable -path=org-ccalm kv-v2
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Writing to the kv storage (добавил префикс vault. чтобы значения самому подставлять в нужные места в spring)
|
||||||
|
|
||||||
|
Заменит(создаст) значение:
|
||||||
|
```sh
|
||||||
|
vault kv put org-ccalm/jwt vault.server.ssl.key-store-password=MFNX344yh4
|
||||||
|
```
|
||||||
|
Добавит (обновит):
|
||||||
|
```sh
|
||||||
|
vault kv patch org-ccalm/jwt vault.test=test2
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
vault kv put org-ccalm/public vault.personal_data.key=7dd2Nek1
|
||||||
|
```
|
||||||
|
|
||||||
|
6. Read data from the kv
|
||||||
|
```sh
|
||||||
|
vault kv get org-ccalm/jwt
|
||||||
|
```
|
||||||
|
|
||||||
|
Должно вывести:
|
||||||
|
```text
|
||||||
|
Key Value
|
||||||
|
--- -----
|
||||||
|
server.ssl.key-store-password M4yh4
|
||||||
|
```
|
||||||
|
|
||||||
|
6. Включаем AppRole для доступа из приложения
|
||||||
|
```sh
|
||||||
|
vault auth enable approle
|
||||||
|
```
|
||||||
|
|
||||||
|
7. Добавляем политики потом создаём ключ для этой политикиполитики
|
||||||
|
|
||||||
|
Создаю файл политик загружаю его в вольт потом удаляю:
|
||||||
|
```sh
|
||||||
|
cd ~ &&
|
||||||
|
sudo tee jwt-policy.hcl > /dev/null <<EOF
|
||||||
|
path "org-ccalm/data/jwt" {
|
||||||
|
capabilities = ["create", "read", "update", "delete", "list"]
|
||||||
|
}
|
||||||
|
path "org-ccalm/data/public" {
|
||||||
|
capabilities = ["read", "list"]
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
Apply and delete configiration file:
|
||||||
|
```sh
|
||||||
|
vault policy write jwt-policy ~/jwt-policy.hcl &&
|
||||||
|
rm -f jwt-policy.hcl
|
||||||
|
```
|
||||||
|
|
||||||
|
Создаём AppRole (на 10 лет)
|
||||||
|
```sh
|
||||||
|
vault write auth/approle/role/org-ccalm-jwt \
|
||||||
|
secret_id_ttl=0 \
|
||||||
|
token_ttl=24h \
|
||||||
|
token_max_ttl=87600h \
|
||||||
|
policies=jwt-policy
|
||||||
|
```
|
||||||
|
|
||||||
|
Получаем role_id и secret_id
|
||||||
|
```sh
|
||||||
|
vault read auth/approle/role/org-ccalm-jwt/role-id
|
||||||
|
```
|
||||||
|
Выдало
|
||||||
|
```text
|
||||||
|
Key Value
|
||||||
|
--- -----
|
||||||
|
role_id c0064fe2-8f0e-b317-7fe7-66f7405b45a1
|
||||||
|
```
|
||||||
|
На команду
|
||||||
|
```sh
|
||||||
|
vault write -f auth/approle/role/org-ccalm-jwt/secret-id
|
||||||
|
```
|
||||||
|
Выдало:
|
||||||
|
```text
|
||||||
|
Key Value
|
||||||
|
--- -----
|
||||||
|
secret_id 24f31c88-7185-0d93-9a51-e221c2925265
|
||||||
|
secret_id_accessor 22fa68e3-fc73-2008-0a34-3506630b6693
|
||||||
|
secret_id_num_uses 0
|
||||||
|
secret_id_ttl 0s
|
||||||
|
```
|
||||||
|
Сохрани role_id и secret_id, они понадобятся Spring Boot.
|
||||||
|
|
||||||
|
Хранить ключи лучьше в переменных окружения
|
||||||
|
```sh
|
||||||
|
export VAULT_ROLE_ID="your-role-id" &&
|
||||||
|
export VAULT_SECRET_ID="your-secret-id"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Проверяем не больше какого значения можно задать время жизни кокена:
|
||||||
|
```sh
|
||||||
|
vault read sys/mounts/auth/token/tune
|
||||||
|
```
|
||||||
|
По умолчанию max_lease_ttl равен 32 дня!
|
||||||
|
|
||||||
|
На год можно увеличить так:
|
||||||
|
```sh
|
||||||
|
vault write sys/mounts/auth/token/tune max_lease_ttl=8760h
|
||||||
|
```
|
||||||
|
|
||||||
|
Create data access token with set politics:
|
||||||
|
```sh
|
||||||
|
vault token create -policy=jwt-policy -ttl=0
|
||||||
|
```
|
||||||
|
|
||||||
|
Продлевать токен можно так:
|
||||||
|
```sh
|
||||||
|
vault token renew <твой-токен>
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверяем зранятся ли токены в хранилище а не в памяти
|
||||||
|
```sh
|
||||||
|
vault read sys/auth/token/tune
|
||||||
|
```
|
||||||
|
token_type = default-service, значит Vault не хранит токены
|
||||||
|
|
||||||
|
Включаем хранение токенов:
|
||||||
|
```sh
|
||||||
|
vault write sys/auth/token/tune token_type=service
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
Теперь HashiCorp Vault установлен и готов к использованию! 🚀
|
Теперь HashiCorp Vault установлен и готов к использованию! 🚀
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user