Войдите и получите секрет из хранилища hashicorp в nodejs

У меня есть собственный сервер хранилища, работающий удаленно.
Я хочу получить доступ к хранилищу и получить секреты после входа в систему.
Метод входа в систему: GIT TOKEN
также я не знаю, как для входа с помощью git token в nodejs
и тогда я хочу прочитать конкретную пару ключ: значение.

Заранее спасибо за помощь


person Amit Rathod    schedule 16.03.2020    source источник


Ответы (1)


Действия администратора в Vault (с правами root или аналогичными):

$> vault secrets enable -path=secret/ kv
$> vault kv put secret/amit key1=value1 key2=value2 key3=value3
$> vault policy write amit-github-policy -<EOF
  path "secret/amit" {
    capabilities = ["read", "list"]
  }
  EOF
$> vault auth enable github
$> vault write auth/github/map/users/amit_rathod value=amit-github-policy
  • для настройки ваших секретов и политик вы можете использовать любые методы и подходы

После настройки Vault вы можете сначала пройти аутентификацию:

curl --request=POST --data='{"token": "<your GitHub token>"}' <VAULT_HOST>/v1/auth/github/login

Вы получите ответ

{
  "auth": {
    "renewable": true,
    "lease_duration": 2764800,
    "metadata": {
      "username": "amit_rathod"
    },
    "policies": ["default", "amit-github-policy"],
    "accessor": "f93c4b2d-18b6-2b50-7a32-0fecf88237b8",
    "client_token": "1977fceb-3bfa-6c71-4d1f-b64af98ac018"
  }
}

Получив client_token, вы можете получить доступные секреты:

curl --header="X-Vault-Token: 1977fceb-3bfa-6c71-4d1f-b64af98ac018" --request=GET <VAULT_HOST>/v1/secret/amit

Вы получите ответ в формате json с вашими ключами и значениями.

P.S. В этом примере я использовал случайные значения:

  • кв путь: secret/
  • кв секрет: secret/amit
  • секретные значения: key1=value1 key2=value2 key3=value3
  • название политики: amit-github-policy
  • Имя пользователя GitHub: amit_rathod
  • маркер ответа: 1977fceb-3bfa-6c71-4d1f-b64af98ac018
person Dmitry Ionash    schedule 16.03.2020
comment
То, что вы делаете, - это работа с cli, я хочу получить секрет kv из кода приложения nodejs, спасибо. - person Amit Rathod; 16.03.2020
comment
Если нам нужно выполнить некоторые операции с Vault с высокими разрешениями, лучше сделать их напрямую с Vault (чтение через CLI). Но ничто не мешает выполнять все эти операции с разрешениями curl и root, в том же порядке, просто использовать HTTP API. - person Dmitry Ionash; 17.03.2020
comment
Спасибо, брат, это было действительно полезно, я придерживаюсь такого подхода - person Amit Rathod; 18.03.2020
comment
есть ли завиток для получения значения для определенного ключа в секрете / амит. например, у меня есть два значения пары ключей, то есть name = amit surname = rathod, поэтому могу ли я получить конкретное имя, есть ли для этого завиток, спасибо. - person Amit Rathod; 18.03.2020
comment
Для CLI существует поле 'field' - vaultproject. io / docs / commands / kv / get / # inlinecode - field-29 Что касается HTTP API, я не знаю. Думаю, должно быть. Попробуйте использовать curl -H X-Vault-Token: ... -X GET http: //.../secret/amit? Field = key1 - person Dmitry Ionash; 18.03.2020
comment
Но я думаю, что это не очень хорошая идея, потому что если вы установите секрет как json, секрет будет содержать только корневые ключи json. Пример: {ключ1: {ключ2: значение2, ключ3: значение3}}. Вы предполагаете, что у вас есть две секретные пары с ключами 'key1.key2' и 'key1.key3', но на самом деле у вас есть один ключ 'key1' и значение {key2: value2, key3: value3}. Лучше возьмите полный секрет и проанализируйте его в своем NodeJS, это не проблема. - person Dmitry Ionash; 18.03.2020