Il va nous falloir plusieurs données pour récupérer un mot de passe :
vault write -force auth/approle/role/<VAULT_ROLE>/secret-id
Récupération du VAULT_TOKEN pour accéder aux secrets :
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"]')
Récupération des secrets dans le dossier en Json ;
curl -sSf -X GET -H "Accept: */*" -H "X-Vault-Token: $VAULT_TOKEN" "$VAULT_URL/v1/$VAULT_ENGINE/data/approle/$VAULT_ROLE"
Récupération du secret recherché avec jq :
| jq -r '.["data"]["data"]["$VAULT_SECRET_NAME"]'
#!/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)