Первичная настройка

BI.ZONE Vault — централизованное хранилище секретов и паролей от привилегированных учетных записей.

Шаг 1. Создание политики доступа

  1. Авторизуйтесь в веб-интерфейсе Vault.

  2. Перейдите на вкладку Policies → Create policy.

  3. В поле Name укажите название политики.

  4. В поле Policy добавьте:

    path "kv2/data/*" { capabilities = [read] } path "pam-ssh-client-signer/*" { capabilities = ["create", "read", "updates", "list"] } path "/sys/metrics" { capabilities = ["read"] }
  5. Нажмите Create policy.

Политика создана, включите движки Vault.

Шаг 2. Активация Secret Engine

После создания политики нужно добавить движки KV , SSH и Active Directory.

KV Secret Engine v2

Этот движок используется при подключении пользователей к ресурсам по SSH, RDP и с помощью RemoteApp через пароль.

  1. Перейдите на вкладку по относительному пути /ui/vault/secrets.

  2. Нажмите Secrets → Enable new engine.

  3. Выберите KV и нажмите Next.

  4. На вкладке Enable KV Secret Engine укажите:

    • Path — "kv2".

    • Version — "2".

    • Остальное — по умолчанию.

  5. Нажмите Enable Engine

После активации отобразится страница с движком. Вернитесь в /ui/vault/secrets и активируйте остальные движки.

SSH Secret Engine

  1. На вкладке Secret Engines нажмите Enable new engine.

  2. Выберите SSH и нажмите Next.

  3. На вкладке Enable SSH Secret Engine укажите:

    • Path — "pam-ssh-client-signer".

    • Method Options — оставьте без изменений.

  4. Нажмите Enable Engine.

  5. В открывшейся вкладке движка нажмите Create role.

  6. Укажите:

    • Role Name — "worker-ssh".

    • Key Type — выберите ca.

  7. Отметьте Allow user sertificate.

  8. Нажмите Options.

  9. В открывшемся списке:

    • Allowed users — укажите "*".

    • Allowed domains — укажите "*".

    • Max TTL — включите параметр и укажите "600".

    • Allowed critical options — укажите "{}".

    • Default critical options — укажите "{}".

  10. В поле Allowed extentions укажите:

    permit-pty, permit-X11-forwarding
  11. В поле Default extentions укажите:

    { "permit-pty": "" }
  12. Нажмите Create role — параметры роли будут добавлены в движок.

  13. Вернитесь на вкладку созданного движка pam-ssh-client-signer.

  14. Перейдите на вкладку Configuration и нажмите Configure.

  15. Проверьте, что включен параметр Generate signing key и нажмите Save.

После сохранения конфигурации Vault сгенерирует публичный ключ. Ключ будет использоваться для подключения к ресурсам в PAM при использовании аутентификации по SSH-ключу.

Для каждого пользователя, под которым будет выполняться подключение в PAM с аутентификацией по сертификату, добавьте сгенерированный public_key в файл .ssh/authorized_keys в домашней директории пользователя. Перед ключом необходимо указать директиву cert-authority:

cat .ssh/authorized_keys cert-authority ssh-rsa AAAA

SSH Secret Engine настроен, теперь активируйте Active Directory Secret Engine.

Active Directory Secret Engine

  1. На вкладке /ui/vault/secrets в Vault нажмите Enable new engine.

  2. Выберите Active Directory и нажмите Next.

  3. Укажите:

    • Path — путь до каталога AD.

    • Method Options — оставьте без изменений.

  4. Нажмите Enable Engine.

Движок активирован. Конфигурирование Active Directory Secret Engine выполняется с помощью curl-запросов.

Создание политики паролей

cat > pass-policy-payload.json <<EOF { "policy": "length = 25\nrule \"charset\" { charset = \"abcdefghijklmnopqrstuvwxyz\"\n min-chars = 1 }\n rule \"charset\" { charset = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n min-chars = 1 }\n rule \"charset\" { charset = \"0123456789\"\n min-chars = 1 }\n rule \"charset\" { charset = \"!@#$%^*\"\n min-chars = 1 }" } EOF curl --header 'X-Vault-Token: X' --request POST --data @pass-policy-payload.json https://server:port/v1/sys/policies/password/ad_password_policy

Конфигурирование Secret Engine ad/shadow/pam.bi.zone

cat > ldap_config_shadow.json <<EOF { "binddn": "sa-vault@dev.pam.bi.zone ", "bindpass": "X", "length": "0", "max_ttl": "31536000", "password_policy": "ad_password_policy", "ttl": "31536000", "url": "ldaps://ldap_server:636", "userdn": "OU=SHADOW,OU=Bizone,DC=dev,DC=pam,DC=bi,DC=zone", "insecure_tls": "true" } EOF curl -kvL --header 'X-Vault-Token: X' --request POST --data @ldap_config_shadow.json --url "https://server:port/v1/ad/shadow/pam.bi.zone/config" curl -kvL --header 'X-Vault-Token: X' --request GET --url https://server:port/v1/ad/shadow/pam.bi.zone/config

Маппинг пользователей из AD в Vault для Secret Engine ad/shadow/pam.bi.zone

curl -kvL --request POST --url https://server:port/v1/ad/shadow/pam.bi.zone/roles/shadow-01 --header 'Content-Type: application/json' --header 'X-Vault-Token: X' --data '{ "service_account_name": "shadow-01@pam.bi.zone", "ttl": "5184000" }'

Теперь нужно добавить движки в PAM.

Шаг 3. Добавление движков в БД PAM

После настройки движков Vault, добавьте записи в таблицу vault базы данных PAM:

INSERT INTO pam.vault (id, "name", fqdn, port, "attributes", description, update_at) VALUES (gen_random_uuid(), 'ldap', ‘$LDAP_FQDN, 443, '{"name": "control", "mount": "ldap", "secret_engine": "ad"}'::jsonb, 'ldap engine puz', now());

где $LDAP_FQDN — FQDN на котором развернут Vault.

Теперь нужно включить и настроить методы аутентификации.

Шаг 4. Настройка Authentication Methods

Настройка нужна для подключения компонента Control к PAM Secman и работы Control с созданными Secret Engine.

  1. В Vault перейдите в раздел Access.

  2. На вкладке Authentication Methods нажмите Enable new method.

  3. Выберите TLS Certificates и нажмите Next.

  4. В поле Path укажите метод аутентификации "cert".

  5. Нажмите Method Options. В открывшемся списке:

    • List method when unauthenticated — снимите флаг.

    • Default Lease TTL — отключите параметр.

    • Max Lease TTL — отключите.

    • Token Type — выберите Select one.

  6. Нажмите Enable Method.

  7. В окне метода перейдите на вкладку Certificate и нажмите Create certificate.

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

    • Name — название сертификата, например "pam".

    • Certificate — вставьте PEM корневого CA.

    • Display name — отображаемое название сертификата, например "pam".

  9. Нажмите Constraints и заполните поля в выпадающем списке.

    • Allowed common names:

      control.apps.pam.bi.zone pam.bi.zone
    • Generated Token's Policies — "pam"

    • Generated Token's Initial TTL — включите параметр, укажите "60" и выберите seconds.

    • Generated Token's Type — "service"
      Остальные поля оставьте пустыми.

  10. Нажмите Save.

Настройка метода авторизации выполнена, теперь настройте LDAP auth-метод.

Шаг 5. Настройка LDAP auth-метода

Настройка нужна, чтобы предоставить доступ через UI к PAM secman. Чтобы настроить доступ, внесите правки в конфигурационные файлы Vault.

# Активация auth-метода /opt/vault/usr/bin/vault auth enable ldap # Конфигурация auth-метода # Пользователи будут загружаться из userdn, группы из groupdn, binddb+bindpass – для учетной записи которая может забирать пользователей и группы /opt/vault/usr/bin/vault write auth/ldap/config \ url="ldaps://ldap_server:636" \ userattr="sAMAccountName" \ userdn="ou=UA,ou=Bizone,dc=dev,dc=pam,dc=bi,dc=zone" \ discoverdn=true \ groupdn="ou=Groups,ou=Bizone,dc=dev,dc=pam,dc=bi,dc=zone" \ groupfilter="(&(objectClass=group))" \ groupattr="cn" \ certificate=@ldap_ca_cert.pem \ insecure_tls=true \ starttls=true \ binddn="sa-vault@pam.bi.zone" \ bindpass="X" # Cоздание политики для группы из AD /opt/vault/usr/bin/vault policy write admin-pam - <<EOF path "*" { capabilities = ["read","create","update"] } EOF # Создание маппинга группа → политика /opt/vault/usr/bin/vault write auth/ldap/groups/PAM-ConfigAdmins policies=admin-pam # Проверка – логин в vault через ldap auth-метод /opt/vault/usr/bin/vault login -method=ldap username=test # Если при аутентификации нет warning-сообщений, это означает что маппинг работает корректно # Чтобы добавить пользователю дополнительную политику /opt/vault/usr/bin/vault write auth/ldap/groups/admin-pam policies=admin-pam /opt/vault/usr/bin/vault write auth/ldap/users/test groups=admin-pam policies=admin-pam # Можно будет через UI выбрать LDAP метод и заходить в Vault по пользователю test из AD # Это аналог /opt/vault/usr/bin/vault login -method=ldap username=test