Политики Vault написаны на HCL и определяют, какие пути доступны каждой роли:
# payment-secrets.hcl
# payment-service может:
# - читать свои секреты
# - запрашивать database credentials
# - выпускать TLS-сертификаты
path "secret/data/production/payment-service" {
capabilities = ["read"]
}
path "secret/data/production/shared/*" {
capabilities = ["read"]
}
path "database/creds/payment-readwrite" {
capabilities = ["read"]
}
path "pki_int/issue/internal-service" {
capabilities = ["update"]
}
# Запрещаем всё остальное (deny по умолчанию)
path "secret/data/production/user-service" {
capabilities = ["deny"]
}
path "sys/*" {
capabilities = ["deny"]
}
# Применяем политику
vault policy write payment-secrets payment-secrets.hcl
# Проверяем что может делать токен
vault token capabilities hvs.token_xxx secret/data/production/payment-service
# read
vault token capabilities hvs.token_xxx secret/data/production/user-service
# deny
Audit logging — обязательное требование PCI DSS. Vault логирует каждое обращение:
# Включаем audit log в файл
vault audit enable file file_path=/var/log/vault/audit.log
# Включаем audit log в syslog (для SIEM)
vault audit enable syslog tag="vault" facility="AUTH"
# Пример записи аудита (JSON, одна строка — развёрнуто для читаемости)
{
"type": "response",
"time": "2026-04-05T10:23:15.442Z",
"auth": {
"client_token": "hmac-sha256:xxxxx",
"accessor": "hmac-sha256:xxxxx",
"display_name": "approle-payment-service",
"policies": ["default", "payment-secrets"],
"token_type": "service"
},
"request": {
"id": "req-uuid-xxx",
"operation": "read",
"path": "secret/data/production/payment-service",
"remote_address": "10.0.2.15"
},
"response": {
"data": {
"data": {
"stripe_api_key": "hmac-sha256:yyyyy",
"db_password": "hmac-sha256:zzzzz"
}
}
}
}
Обратите внимание: значения секретов в аудит-логе заменены HMAC-хешами. Это позволяет искать обращения к конкретному секрету (HMAC детерминированный), но не раскрывает сами значения.
Оставить комментарий