miroir de
https://github.com/PAPAMICA/Wiki-Tech.io.git
synchronisé 2024-11-07 10:10:26 +01:00
51 lignes
2,5 Kio
HTML
51 lignes
2,5 Kio
HTML
<!--
|
|
title: Vault
|
|
description: Un gestionnaire de secrets avec API !
|
|
published: true
|
|
date: 2021-05-04T12:45:06.683Z
|
|
tags:
|
|
editor: ckeditor
|
|
dateCreated: 2021-05-04T09:08:13.708Z
|
|
-->
|
|
|
|
<figure class="image image_resized" style="width:18.97%;"><img src="https://www.drupal.org/files/project-images/Vault_VerticalLogo_FullColor_2_0.png" alt="HashiCorp Vault - AppRole Authentication | Drupal.org"></figure>
|
|
<h1>Présentation</h1>
|
|
<h1>Installation</h1>
|
|
<h1>Utilisation</h1>
|
|
<h2>Récupérer un mot de passe avec l'API</h2>
|
|
<h3>Les commandes</h3>
|
|
<p>Il va nous falloir plusieurs données pour récupérer un mot de passe :</p>
|
|
<ul>
|
|
<li>VAULT_URL : L'URL de votre serveur VAULT (exemple : "<i>https://vault.papamica.com</i>")</li>
|
|
<li>VAULT_ENGINE : Correspond à l'engine racine de votre dossier contenant vos secrets</li>
|
|
<li>VAULT_ROLE : Correspond au nom du dossier qui contient les secrets</li>
|
|
<li>VAULT_SECRET_ID : Correspond à l'ID récupéré au préalable avec la commande <code>vault write -force auth/approle/role/<VAULT_ROLE>/secret-id</code></li>
|
|
<li>VAULT_SECRET_NAME : Correspond au nom du secret</li>
|
|
</ul>
|
|
<p>Récupération du VAULT_TOKEN pour accéder aux secrets :</p>
|
|
<pre><code class="language-plaintext">VAULT_TOKEN=$(curl -sSf --data "{\"role_id\":\"<ROLE_ID>\",\"secret_id\":\"$VAULT_SECRET_ID\"}" $VAULT_URL/v1/auth/approle/login | jq -r '.["auth"]["client_token"]')</code></pre>
|
|
<p>Récupération des secrets dans le dossier en Json ;</p>
|
|
<pre><code class="language-plaintext">curl -sSf -X GET -H "Accept: */*" -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_URL/v1/$VAULT_ENGINE/data/approle/$VAULT_ROLE"</code></pre>
|
|
<p>Récupération du secret recherché avec jq :</p>
|
|
<pre><code class="language-plaintext"> | jq -r '.["data"]["data"]["$VAULT_SECRET_NAME"]'</code></pre>
|
|
<p> </p>
|
|
<h3>Fonction Bash</h3>
|
|
<pre><code class="language-c">#!/bin/bash
|
|
|
|
# Variables
|
|
VAULT_URL='https://vault.domaine.com'
|
|
VAULT_ENGINE='wallet-VPN'
|
|
VAULT_ROLE='testmickael'
|
|
VAULT_SECRET_ID='a154d15s-f48e-aea8-b99e-ab96f021s74e'
|
|
VAULT_SECRET_NAME='password'
|
|
|
|
function Get-Vault {
|
|
VAULT_TOKEN=$(curl -sSf --data "{\"role_id\":\"$VAULT_ROLE\",\"secret_id\":\"$VAULT_SECRET_ID\"}" $VAULT_URL/v1/auth/approle/login | jq -r '.["auth"]["client_token"]')
|
|
SECRET=$(curl -sSf -X GET -H "Accept: */*" -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_URL/v1/$VAULT_ENGINE/data/approle/$VAULT_ROLE" | jq -r '.["data"]["data"]["password"]')
|
|
echo "$SECRET"
|
|
}
|
|
|
|
PASSWORD=$(Get-Vault)</code></pre>
|
|
<p> </p>
|
|
<h3>Fonction Python</h3>
|
|
<p> </p>
|