Версия программы: ================= openbao-2.4.4-alt1 Стенды с ошибкой, обновлен. до Sisyphus: ======================================== Alt Workstation 11.1 Alt Workstation KDE 11.1.1 Alt Education XFCE 11 Alt Education KDE 11 Прекондишен: ============ 1. Настроить Keycloak для oidc аутентификации с тест-пользователями: qa-user и dev-user, которые получают qa и dev роль соответственно после логина 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-dev и policy-qa Политика policy-dev: # bao policy write policy-dev - <<EOF path "kv/dev/*" { capabilities = ["create", "read", "update", "delete", "list"] } path "kv/data/dev/*" { capabilities = ["create", "read", "update", "delete", "list"] } path "kv/metadata/dev/*" { capabilities = ["list", "read"] } path "auth/token/lookup-self" { capabilities = ["read"] } EOF Политика policy-qa: # bao policy write policy-qa - <<EOF path "kv/qa/*" { capabilities = ["create", "read", "update", "delete", "list"] } path "kv/data/qa/*" { capabilities = ["create", "read", "update", "delete", "list"] } path "kv/metadata/qa/*" { capabilities = ["list", "read"] } path "auth/token/lookup-self" { capabilities = ["read"] } EOF 8. Создать группы: qa и dev: # bao write identity/group name="qa" policies="policy-qa" type="external" # bao write identity/group name="dev" policies="policy-dev" type="external" 9. Создать алиасы для групп qa и dev (имя алиасов должно соответствовать имени роли в Keycloak): # ACCESSOR=$(bao auth list -format=json | jq -r '.["oidc/"].accessor') # bao write identity/group-alias name="qa" mount_accessor="$ACCESSOR" canonical_id=$(bao read -field=id identity/group/name/qa) # bao write identity/group-alias name="dev" mount_accessor="$ACCESSOR" canonical_id=$(bao read -field=id identity/group/name/dev) 10. Включить KV v2: # bao secrets enable -path=kv kv-v2 11. Записать секрет в kv для групп qa и dev: # bao kv put kv/qa/testdata username="test" password="test" # bao kv put kv/dev/database dbname="myapp_db" username="app_user" Шаги, приводящие к ошибке: ========================== 1. На клиенте зайти в Openbao UI пользователем dev-user 2. ЛКМ по secrets engine KV -> В Secret path ввести: dev/ -> View list => Отобразился список доступных секретов 3. ЛКМ по secrets engine KV -> В Secret path ввести: qa/testdata -> View Secret => Секрет не отображается. Выводится сообщение: "You do not have permission to read this secret. Your policies permit you to write a new version of this secret, but do not allow you to read its current contents." 4. ЛКМ по secrets engine KV -> В Secret path ввести: qa/ -> View list Ожидаемый результат: ==================== Шаг 3. Отсутствует дополнение к ошибке при просмотре чужого секрета: "Your policies permit you to write a new version of this secret, but do not allow you to read its current contents." Шаг 4.Список доступных секретов НЕ отобразился. Выводится сообщение, например: "You do not have permission to read list of secrets" Фактический результат: ====================== Шаг 3. На самом деле пользователь dev-user не может создать новую версию секрета kv/qa/testdata. Ошибка при попытке это сделать с помощью Openbao CLI: Error writing data to kv/data/qa/testdata: Error making API request. URL: PUT https://bao.altdomain.ru:8200/v1/kv/data/qa/testdata Code: 403. Errors: * 1 error occurred: * permission denied Шаг 4. Список доступных секретов НЕ отобразился, пользователь остался на странице View secrets. Нет сообщения, что у пользователя нет разрешения смотреть список секретов.
Проверил воспроизведение ошибки. Получил такой же результат. Создал тикет в upstream - https://github.com/openbao/openbao/issues/2408