Настройка аутентификации по AppRole

AppRole — рекомендованный метод аутентификации для компонент и микросервисов. В отличие от LDAP и UI, AppRole позволяет выдавать временные токены приложениям, которые не могут вводить логин и пароль вручную.

Шаг 1. Включение метода AppRole

  1. Откройте Vault UI и выполните вход по root-токену.

  2. Перейдите в раздел Access.

  3. Выберите Enable new method → AppRole.

После включения, метод аутентификации AppRole будет доступен по пути /auth/approle. Создайте ACL-политику.

Шаг 2. Создание ACL-политики

  1. Перейдите в раздел Policies

  2. Нажмите Create ACL policy.

  3. Заполните:

    • 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"] }
  4. Нажмите Create Policy.

Политика создана, создайте роль.

Шаг 3. Создание роли AppRole

  1. Откройте Vault CLI в интерфейсе Vault.

  2. Создайте роль, которая будет использоваться для аутентификации:

    vault write auth/approle/role/<role_name> \ token_policies="<policy_name>" \ token_ttl=1h \ token_max_ttl=4h

Роль создана, получите параметры для временного токена.

Шаг 4. Получение Role ID и Secret ID

Чтобы пользователь мог аутентифицироваться в Vault с помощью роли, ему нужно получить временный токен от администратора.

Чтобы сформировать временный токен:

  1. Получите Role ID:

    vault read auth/approle/role/<role_name>/role-id
  2. Получите 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"