Настройка аутентификации по AppRole
AppRole — рекомендованный метод аутентификации для компонент и микросервисов. В отличие от LDAP и UI, AppRole позволяет выдавать временные токены приложениям, которые не могут вводить логин и пароль вручную.
Шаг 1. Включение метода AppRole
Откройте Vault UI и выполните вход по root-токену.
Перейдите в раздел Access.
Выберите Enable new method → AppRole.
После включения, метод аутентификации AppRole будет доступен по пути /auth/approle. Создайте ACL-политику.
Шаг 2. Создание ACL-политики
Перейдите в раздел Policies
Нажмите Create ACL policy.
Заполните:
Name — название политики,
Policy — конфигурацию политики.
Полный доступ по пути
pam/data/server/unix:path "pam/data/server/unix" { capabilities = ["create", "read", "update", "list"] }Ограниченный доступ — только просмотр содержимого пути
pam/*:path "pam/*" { capabilities = ["list"] } path "pam/data/server/unix" { capabilities = ["create", "read", "update", "list"] }
Нажмите Create Policy.
Политика создана, создайте роль.
Шаг 3. Создание роли AppRole
Откройте Vault CLI в интерфейсе Vault.
Создайте роль, которая будет использоваться для аутентификации:
vault write auth/approle/role/<role_name> \ token_policies="<policy_name>" \ token_ttl=1h \ token_max_ttl=4h
Роль создана, получите параметры для временного токена.
Шаг 4. Получение Role ID и Secret ID
Чтобы пользователь мог аутентифицироваться в Vault с помощью роли, ему нужно получить временный токен от администратора.
Чтобы сформировать временный токен:
Получите Role ID:
vault read auth/approle/role/<role_name>/role-idПолучите Secret ID:
vault write -force auth/approle/role/<role_name>/secret-id
Role ID — постоянный и неизменяемый идентификатор роли.
Secret ID — это временный токен, который будет меняться каждый раз при новом запросе отображения. Для получения токена доступа получать новый secret_id каждый раз необязательно.
Шаг 5. Получение временного токена через AppRole
Чтобы получить временный токен доступа, выполните:
vault write auth/approle/login \ role_id="<Role ID>" \ secret_id="<Secret ID>"
После выполнения команды, Vault вернет токен, с которым можно выполнять действия согласно политике.
Пример
vault write auth/approle/login \ role_id="675a50e7-cfe0-be76-e35f-49ec009731ea" \ secret_id="ed0a642f-2acf-c2da-232f-1b21300d5f29"
Доступ к секретам KV engine
KV v2
vault read pam/data/server/unix
KV v2 через cURL
curl -kH "X-Vault-Token: <token>" \ https://vault.demopam.localhost/v1/pam/data/server/unix | jq -r ".data"
KV v1
vault read pam/server/unix
Пример запроса токена через cURL
curl --request POST \ --url https://127.0.0.1:8200/v1/auth/approle/login \ --header 'Content-Type: application/json' \ --header 'X-Vault-Namespace: root' \ --data '{ "role_id": "481ac537-1c5f-a588-4f4c-0f31fe0852bd", "secret_id": "deb0996c-9652-73b8-4edd-d860a50ae80c" }'
Управление секретами пользователем PAM
Доступ к секретам пользователю PAM предоставляется через временный токен, полученный с помощью AppRole. После получения токена пользователь может:
Управлять секретом — через Vault UI;
Прочитать секрет — через CLI или cURL.
KV v2
vault read pam/data/user/<Имя_ПУЗ>
Через cURL
curl -kH "X-Vault-Token: <token>" \ https://<vault-адрес>/v1/pam/data/user/<Имя_ПУЗ> | jq -r ".data"