Thank you for reading this post, don't forget to subscribe!
чтобы проверить vault token expire - когда истечёт токен, дёргаем vault по accessor сам запрос выглядит вот так
curl -s -L --header "X-Vault-Token: $VAULT_TOKEN" \
--request POST \
--data "{\"accessor\": \"$accessor\"}" \
"$VAULT_ADDR/v1/auth/token/lookup-accessor"
тут VAULT_TOKEN это токен с которым мы можем ходить в волт - я использую рутовый
VAULT_ADDR - домен нашего волта
accessor - это ID токена.
чтобы упростить проверку я сделал вот такой скрипт, который из токенов исключает те что заканчиваются сегодня (временные) и root
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
#!/bin/sh # Настройки VAULT_ADDR="https://vault.prod.test.ru" VAULT_TOKEN="hvs.n7GYEMcYctqIuuqngh02" # Получение текущей даты в формате YYYY-MM-DD current_date=$(date -u +"%Y-%m-%d") # Получение списка всех токенов get_all_tokens() { response=$(curl -s -L --header "X-Vault-Token: $VAULT_TOKEN" \ --request LIST \ "$VAULT_ADDR/v1/auth/token/accessors") echo "$response" | jq -r '.data.keys[]' } # Получение информации о токене по accessor get_token_info() { accessor=$1 response=$(curl -s -L --header "X-Vault-Token: $VAULT_TOKEN" \ --request POST \ --data "{\"accessor\": \"$accessor\"}" \ "$VAULT_ADDR/v1/auth/token/lookup-accessor") echo "$response" } # Вызов функции для получения всех токенов all_tokens=$(get_all_tokens) echo "List of all token details excluding temporary tokens and root tokens:" for token in $all_tokens; do token_info=$(get_token_info $token) expire_time=$(echo "$token_info" | jq -r '.data.expire_time') display_name=$(echo "$token_info" | jq -r '.data.display_name') # Извлечение даты истечения токена в формате YYYY-MM-DD expire_date=$(echo "$expire_time" | cut -d'T' -f1) # Проверка, что токен не истекает сегодня и не является root токеном if [[ "$expire_date" != "$current_date" && "$display_name" != "root" ]]; then echo "Token accessor: $token" echo "$token_info" | jq -r '{display_name: .data.display_name, expire_time: .data.expire_time, policies: .data.policies}' fi done |
для работы должны быть установлены curl и jq