#hashicorp-vault
#hashicorp-хранилище
Вопрос:
Я изучал хранилище HashiCorp для целей PoC в течение недели. Я пытаюсь разработать очень простую систему, в которой приложение входит в хранилище, используя role_id и secret_id, которые действительны в течение всего срока действия и запрашивают уникальные учетные данные базы данных для одноразового использования. Я успешно интегрировал базу данных с хранилищем, и после передачи токена, сгенерированного политикой, для предполагаемого пользователя создаются новые учетные данные (имя пользователя и пароль).
Теперь я также успешно сгенерировал role_id и secrete_id для приложения, и когда я передаю эту команду из среды хранилища, я получаю токен для генерации учетных данных.
/ # vault write auth/approle/login role_id="9805c2d7-db84-f17f-843a-440e5a797254" secret_id="1cebcd60-5de5-b0a7-f43c-3df69ae274a4"
Key Value
--- -----
token s.fMjSkiloNdkNcRPGQfjmzjGN
token_accessor orQymBllwi81KEXvpKn6cELq
token_duration 1h
token_renewable true
token_policies ["apps" "default"]
identity_policies []
policies ["apps" "default"]
token_meta_role_name app-login
После чего следующая команда генерирует уникальные учетные данные:
/ # VAULT_TOKEN=s.fMjSkiloNdkNcRPGQfjmzjGN vault read database/creds/readonly
Key Value
--- -----
lease_id database/creds/readonly/FD71umy2l3Vd02iIc6ACtumz
lease_duration 1h
lease_renewable true
password A1a-KFjVbJQ9DsUwYQ6r
username v-approle-readonly-mhQ73CzTWBTgVptBmZbh-1600158851
После чего я запечатал хранилище:
Vault operator seal
Но теперь, когда я пытаюсь передать role_id и secret_id, используя предыдущую команду для генерации токена, это показывает, что хранилище запечатано:
/ # vault write auth/approle/login role_id="9805c2d7-db84-f17f-843a-440e5a797254" secret_id="1cebcd60-5de5-b0a7-f43c-3df69ae274a4"
Error writing data to auth/approle/login: Error making API request.
URL: PUT http://127.0.0.1:8200/v1/auth/approle/login
Code: 503. Errors:
* error performing token check: Vault is sealed
Итак, получается, что приложение должно сначала любым способом распечатать хранилище, а затем только оно может запросить учетные данные? И если это так, то не сводит ли его распечатывание на нет всей цели использования хранилища?
Все предложения по моей проблеме приветствуются.
Важное примечание: я не использую какой-либо оркестратор или инструмент управления конфигурацией. Вариант использования довольно прост. Я хочу жестко запрограммировать role_id и secret_id в коде приложения.
Комментарии:
1. запечатывание хранилища — это операция на уровне оператора, а не приложения. Я рекомендую вам ознакомиться с концептуальными документами по герметизации .
2. @Marc, я прошел через то же самое. Мой вопрос в том, может ли приложение взаимодействовать с запечатанным хранилищем. Если да, то каким образом?
3. Это невозможно, оператору сначала нужно его распечатать.
4. @Mac, хорошо, теперь я понял. Но, сэр, у меня есть сомнения, что если распечатывание хранилища является основным требованием для любого приложения для взаимодействия с vault, то не сводит ли это на нет всю цель размещения секрета в vault? Я имею в виду, насколько я понимаю, когда хранилище запечатано, данные внутри зашифрованы. Теперь мой вопрос в том, если оно оставлено в незапечатанном положении, не уязвимы ли данные?
5. Нет, оно по-прежнему зашифровано на уровне хранилища, это просто означает, что узел хранилища имеет ключ, загруженный в память, и может расшифровать содержимое. Когда оно закрыто, узел хранилища не может ничего расшифровать.