Bug 57551 - Некорректная ошибка при попытке чтения удаленной смонтированной папки механизма секретов в Openbao
Summary: Некорректная ошибка при попытке чтения удаленной смонтированной папки механиз...
Status: ASSIGNED
Alias: None
Product: Sisyphus
Classification: Development
Component: openbao (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: tulskijms@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2026-01-19 18:32 MSK by Olga
Modified: 2026-02-04 17:11 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Olga 2026-01-19 18:32:24 MSK
Версия программы:
=================
openbao-2.4.4-alt1

Стенды с ошибкой, обновлен. до Sisyphus:
========================================
Alt Server 11.1

Прекондишен:
============
1. Настроить Keycloak для oidc аутентификации с тест-пользователями: admin-user, которую получает admin роль после логина
2. Настроить Openbao кластер из трёх нод: bao-1, bao-2, bao-3
3. Включить метод аутентификации OIDC в Openbao кластере:
# bao auth enable oidc
4. Создать конфиг с дефолтной ролью default_role=oidc-login (предполагается, что вход в Openbao будет осуществляться без указания роли):
# bao write auth/oidc/config \
  oidc_discovery_url="https://<Keycloak IP>:8443/realms/test-bao" \
  oidc_client_id="bao-client" \
  oidc_client_secret="<Client Secret>" \  #Указать Client Secret полученный клиентом в Keycloak
  oidc_discovery_ca_pem="$(cat /tmp/keycloak.crt)" \
  default_role=oidc-login
5. Создать файл с настройками oidc-login.json для создания дефолтной роли:
# cat > oidc-login.json << 'EOF'
{
  "role_type": "oidc",
  "allowed_redirect_uris": [
    "https://bao.altdomain.ru:8200/ui/vault/auth/oidc/oidc/callback",
    "https://bao.altdomain.ru:8200/v1/auth/oidc/callback",
    "https://bao-1.altdomain.ru:8200/ui/vault/auth/oidc/oidc/callback",
    "https://bao-2.altdomain.ru:8200/ui/vault/auth/oidc/oidc/callback",
    "https://bao-3.altdomain.ru:8200/ui/vault/auth/oidc/oidc/callback",
    "http://localhost:8250/oidc/callback"
  ],
  "bound_audiences": [
    "bao-client"
  ],
  "groups_claim": "/resource_access/bao-client/roles",
  "token_policies": [
    "default"
  ],
  "token_max_ttl": "8h",
  "max_age": 0,
  "token_type": "default",
  "ttl": "30m",
  "user_claim": "sub"
}
EOF
6. Создать дефолтную роль oidc-login:
# bao write auth/oidc/role/oidc-login  -<oidc-login.json
7. Создать политику policy-admin
# bao policy write policy-admin - <<EOF
path "kv/*" {
  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
path "sys/*" {
  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
path "auth/*" {
  capabilities = ["create", "read", "update", "delete", "list", "sudo"]
}
path "kv/delete/*" {
  capabilities = ["update"]
}
path "kv/destroy/*" {
  capabilities = ["update"]
}
path "kv/undelete/*" {
  capabilities = ["update"]
}
EOF
8. Создать группу: admin:
# bao write identity/group name="admin" policies="policy-admin" type="external"
9. Создать алиасы для группы admin (имя алиасов должно соответствовать имени роли в Keycloak):
# ACCESSOR=$(bao auth list -format=json | jq -r '.["oidc/"].accessor')
# bao write identity/group-alias name="admin" mount_accessor="$ACCESSOR" canonical_id=$(bao read -field=id identity/group/name/admin)
10. Включить KV v2:
# bao secrets enable -path=kv kv-v2
11. Записать секрет в kv для группы qa:
# bao kv put kv/qa/testdata username="test" password="test"

Шаги, приводящие к ошибке:
==========================
1. На клиенте зайти в Openbao UI пользователем admin-user -> Три горизонтальные точки напротив secret engine kv/ -> Disable -> Disable
2. Проверить пользователем admin-user на openbao клиенте, что директория kv/ была удалена
$ export VAULT_ADDR=https://bao.altdomain.ru:8200
$ export VAULT_SKIP_VERIFY=1
$ bao login -method=oidc
$ bao kv list kv/

Ожидаемый результат:
====================
Корректная ошибка при просмотре отсутствующей директории

Фактический результат:
======================
При просмотре списка данных отсутствующей директории выдается некорректная ошибка:
Error making API request.

URL: GET https://bao-1.altdomain.ru:8200/v1/sys/internal/ui/mounts/kv
Code: 403. Errors:

* preflight capability check returned 403, please ensure client's policies grant access to path "kv/"
У пользователя admin-user есть доступ к директории "kv/" (См. прекондишен). При этом если до удаления просмотреть список данных отсутствующей директории или отсутствующий секрет, то выдаются следующие ошибки:
$ bao kv get kv/qa/qa
No value found at kv/data/qa/qa
$ bao kv list kv/qa/qa/
No value found at kv/metadata/qa/qa
Comment 1 tulskijms 2026-02-04 17:11:23 MSK
Проверил воспроизведение ошибки. Тоже получил некорректную ошибку.

Создал тикет в upstream - https://github.com/openbao/openbao/issues/2404