Группы доступа
Группы доступа позволяют гранулярно управлять доступом к источникам и интеграциям в базе знаний по модели Attribute-Based Access Control. Вместо того чтобы выдавать права отдельным пользователям, вы назначаете документам-источникам специальные атрибуты — группы доступа. Доступ к информации из документа разрешен только назначенным ему группам. Таким образом, доступ можно разграничивать на основе, например, подразделения сотрудника, тарифа клиента или любого другого атрибута.
Группы ограничивают доступ к источникам только в API-запросах на поиск чанков и генерацию ответа. Пользователям веб-интерфейса доступны все источники.
Основные принципы
- Если источнику не назначена ни одна группа доступа, он считается публичным. Такой источник доступен для всех API-запросов к базе знаний, независимо от переданных в запросе групп доступа.
- Если источнику назначена хотя бы одна группа доступа, он доступен только для тех API-запросов, в которых указана хотя бы одна из назначенных источнику групп.
- Источники, загруженные из интеграции (например, страницы Confluence), автоматически наследуют группы доступа, назначенные самой интеграции.
- Одну группу доступа можно назначить источникам и интеграциям в нескольких проектах базы знаний. Название группы доступа является уникальным в пределах аккаунта.
Логика доступа при запросе чанков:
- Если в запросе передать список групп доступа, выполняется поиск чанков по всем публичным источникам, а также тем источникам с ограниченным доступом, у которых совпадает хотя бы одна группа из запроса.
- Если в запросе не указаны группы доступа (параметр отсутствует или содержит пустой список), поиск проводится только по публичным источникам.
Пример
Допустим, источникам A, B и C назначены следующие группы доступа:
| Источник | Группы доступа |
|---|---|
| А | confidentialinternal_docs |
| B | internal_docs |
| C | — |
Если в запросе на генерацию ответа к базе знаний указаны группы доступа confidential и finance, то при подготовке ответа используются только данные из источников A и C.
Управление группами доступа
Управление группами доступа выполняется через API.
В интерфейсе доступен только просмотр групп доступа в личном кабинете (требуется роль KHUB_OWNER или KHUB_ADMIN).
Назначение групп доступа источникам и интеграциям в интерфейсе не предусмотрено.
Назначение групп доступа
При добавлении источника или создании интеграции укажите список групп доступа в поле accessControlAttributes.
Если группы с указанным названием нет, она будет создана автоматически.
В дальнейшем изменить назначенные источнику группы доступа нельзя.
Примеры запросов:
-
Добавление источника с группами доступа.
curl \
--header 'Authorization: Bearer <your_API_key>' \
--header 'multipart/form-data' \
--form 'file=@"/path/to/your/document.pdf"' \
--form 'accessControlAttributes="internal_docs,department_hr' \
https://khub.just-ai.com/api/knowledge-hub/sources/files -
Добавление интеграции с группами доступа:
curl \
--header 'Authorization: Bearer <your_API_key>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Customer service",
"autoSync": true,
"syncIntervalMinutes": 30,
"settings": {
"type": "confluence",
"space": "Клиентский сервис",
"token": "aaaBBBcccDDDeeeFFFgggHHHH",
"baseUrl": "https://confluence.example.com"
},
"accessControlAttributes": ["customer_service"]
}' \
https://khub.just-ai.com/api/knowledge-hub/integrations
Запрос данных с учетом групп доступа
Чтобы получить данные из источников с ограниченным доступом, передайте в запросе параметр accessControlAttributes.
Параметр поддерживается во всех запросах на поиск чанков и генерацию ответа:
- POST /retrieve
- POST /query
- POST /async/query
- POST /chat/{chatId}/retrieve
- POST /chat/{chatId}/query
- POST /async/chat/{chatId}/query
Пример запроса, в котором ответ будет основан на публичных источниках и источниках, доступных группе internal_docs:
curl \
--header 'Authorization: Bearer <your_API_key>' \
--header 'Content-Type: application/json' \
--data '{
"query": "правила предоставления отпусков",
"accessControlAttributes": ["internal_docs"]
}' \
https://khub.just-ai.com/api/knowledge-hub/query
Методы, параметры запросов, форматы ответов, возвращаемые ошибки подробно описаны в спецификации API.