TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #203 289
JWT роль в vault и vault provider terraform

Обнаружил тут интересную вещь при настройки CI для terraform.
Волтовый провайдер

terraform {
required_version = ">= 1.6.0"

required_providers {
elasticstack = {
source = "elastic/elasticstack"
version = "~> 0.12"
}
vault = {
source = "hashicorp/vault"
version = "~> 4.0"
}
}
}

provider "vault" {
address = var.vault_address
}


Далее я получаю секреты для ELK кластера так:

data "vault_kv_secret_v2" "elastic_<cluster_name>" {
mount = "<mount>"
name = "<path/vault/env>"
}

provider "elasticstack" {
dynamic "elasticsearch" {
for_each = length(var.elasticsearch_endpoints) == 0 ? [] : [1]
content {
endpoints = var.elasticsearch_endpoints
username = data.vault_kv_secret_v2.elastic_<cluster_name>.data["username"]
password = data.vault_kv_secret_v2.elastic_<cluster_name>.data["password"]
}
}

dynamic "kibana" {
for_each = length(var.kibana_endpoints) == 0 ? [] : [1]
content {
endpoints = var.kibana_endpoints
username = data.vault_kv_secret_v2.elastic_<cluster_name>.data["username"]
password = data.vault_kv_secret_v2.elastic_<cluster_name>.data["password"]
}
}
}


Локально все хорошо. В сиай мы используем ограниченную JWT роль, к который привязана политика на чтения конкретных секретов.

В итоге получаю ошибку:
URL: POST https://<vault_addr>:8200/v1/auth/token/create

Code: 403. Errors:


Проблема в том, что по дефолту провайдер волта пытается создать себе дочерний токен, чтобы его потом использовать. В политике, привязанной к роли это запрещено, чтобы использовать токен, полученный именно ей, нужно добавить в провайдер опцию skip_child_token = true:

provider "vault" {
address = var.vault_address
skip_child_token = true
}


#terraform
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →