Access Tags
Ограничете елементи от базата знания до упълномощени посетители — прилага се на нашите сървъри, не от ИИ
Преглед
Не всяко съдържание е за всички: документи само за членове, материали за конкретен регион, ресурси от платени нива. С Access Tags един чатбот обслужва различни аудитории безопасно. Слагате таг на елемент от базата знания и от този момент елементът е невидим за всеки посетител — освен за онези, чиято страница представя този таг, подписан от вашия собствен сървър. Ограничението се прилага в нашата заявка за извличане, преди моделът на ИИ изобщо да участва. Посетител без тага не може да измъкне съдържанието с хитри въпроси, защото за него то никога не е било извличано.
Как работи
- Вие слагате тагове на елементите - на страницата Access Tags или директно през API; елементите без тагове продължават да работят за всички
- Вашият сървър подписва таговете на всеки посетител - когато влязъл член зареди страницата ви, вашият бекенд определя правата му и ги подписва с таен ключ, който притежавате само вие
- Уиджетът изпраща подписаното удостоверение - то пътува с всяко съобщение в чата; браузърът само го пренася и не може да го промени, без да счупи подписа
- Ние проверяваме и филтрираме - валиден подпис отключва елементите със съвпадащи тагове; липсващо, подправено или изтекло удостоверение означава, че посетителят получава само публично съдържание
Настройване
Включете функцията на страницата Access Tags в таблото си — ключ за подписване се генерира автоматично. Пазете го само на своя сървър; всеки, който го има, може да създава валидни удостоверения.
Тагвайте съдържанието на същата страница или при изпращане на елементи през API:
POST /api/v1/knowledge/text/
{
"title": "Members-only price list",
"content": "...",
"website_id": "123",
"access_tags": ["premium"]
}
След това накарайте сървъра си да изведе подписаното удостоверение до снипета на уиджета. Подписва се списъкът тагове, разделени със запетаи, свързан с вертикална черта с времето на изтичане, когато използвате такова:
<?php
$tags = "members,premium"; // this visitor's entitlements
$expires = time() + 3600; // unix seconds, optional but recommended
$sig = hash_hmac("sha256", $tags . "|" . $expires, $SECRET);
?>
<script>
window.Asyntai = window.Asyntai || {};
window.Asyntai.accessTags = "<?php echo $tags; ?>";
window.Asyntai.accessTagsExpires = "<?php echo $expires; ?>";
window.Asyntai.accessTagsSignature = "<?php echo $sig; ?>";
</script>
Същият подпис на Node.js и Python:
// Node.js
const crypto = require("crypto");
const sig = crypto.createHmac("sha256", SECRET)
.update(tags + "|" + expires).digest("hex");
# Python
import hmac, hashlib
sig = hmac.new(SECRET.encode(), f"{tags}|{expires}".encode(),
hashlib.sha256).hexdigest()
Без срок на валидност подписвайте само самия низ с тагове. Със срок удостоверението спира да работи в момента на изтичането му — полезно, когато правата могат да бъдат отнети, защото посетителят трябва да презареди страница под ваш контрол, за да получи ново удостоверение.
Какво е гарантирано
- Прилагане от страна на сървъра - филтърът работи вътре в нашата заявка към базата данни при извличане; за неупълномощени посетители елементите с тагове липсват от контекста на ИИ, така че няма какво да изтече
- Fail-closed навсякъде - без подпис, грешен подпис, изтекло удостоверение, изключена функция, понижен план: във всеки от тези случаи посетителят получава само публично съдържание, никога повече
- Браузърът не може да фалшифицира достъп - редактирането на таговете в инструментите за разработчици чупи подписа; само вашият сървър притежава ключа
- Вашата логика за права остава ваша - никога не научаваме как решавате кой какъв таг получава; проверяваме само, че вашият сървър го е потвърдил
Добре е да знаете
- Access Tags е упълномощаване, User Context е персонализация - използвайте User Context, за да разкажете на ИИ за члена; използвайте Access Tags, за да контролирате от какви знания може да черпи ИИ
- Обходеното съдържание на сайта винаги е публично - то идва от публичния ви сайт, така че няма какво да се ограничава; таговете важат за текстови, файлови и API елементи
- На посетителя му стига един съвпадащ таг - елемент с два тага е достъпен за посетител, който носи който и да е от тях
- Повторното генериране на ключа прави невалидни всички стари удостоверения - направете го, ако ключът може да е изтекъл, и после обновете страниците си да подписват с новия
- Имената на таговете са ваш избор - до 20 на елемент, по 50 знака, без запетаи и вертикални черти; те никога не се появяват в чата, който посетителите виждат
Съчетава се с User Context: едната функция контролира какви знания може да ползва ИИ за този посетител, другата казва на ИИ кой е посетителят.
Потребителски контекст Предавайте данни за влезлия потребител на вашия ИИ чатбот за персонализирани разговориЗабележка: Access Tags е част от споразумение Enterprise. Пишете на [email protected] и ще ви обясним всичко.