Access Tags
Omezte znalostní položky na oprávněné návštěvníky — vynucováno na našich serverech, ne umělou inteligencí
Přehled
Ne každý obsah je pro všechny: dokumenty jen pro členy, materiály pro konkrétní region, zdroje placených úrovní. S Access Tags obslouží jediný chatbot různá publika bezpečně. Položce přidáte tag a od té chvíle je neviditelná pro každého návštěvníka — kromě těch, jejichž stránka tento tag předloží, podepsaný vaším vlastním serverem. Omezení se vynucuje v našem vyhledávacím dotazu, ještě než se model AI vůbec zapojí. Návštěvník bez tagu obsah chytrými dotazy nevytáhne, protože pro něj nebyl nikdy načten.
Jak to funguje
- Znalostní položky tagujete vy - na stránce Access Tags nebo přímo přes API; položky bez tagů fungují dál pro všechny
- Váš server podepisuje tagy každého návštěvníka - když si přihlášený člen načte vaši stránku, váš back-end určí jeho oprávnění a podepíše je tajným klíčem, který máte jen vy
- Widget odešle podepsané pověření - putuje s každou zprávou v chatu; prohlížeč je pouze přenáší a nemůže je změnit, aniž by rozbil podpis
- My ověříme a filtrujeme - platný podpis odemkne položky s odpovídajícími tagy; chybějící, pozměněné nebo prošlé pověření znamená, že návštěvník dostane jen veřejný obsah
Nastavení
Zapněte funkci na stránce Access Tags ve své nástěnce — podpisový klíč se vám vygeneruje. Uchovávejte jej jen na svém serveru; kdokoli jej má, může vytvářet platná pověření.
Obsah otagujte buď na téže stránce, nebo při odesílání položek přes API:
POST /api/v1/knowledge/text/
{
"title": "Members-only price list",
"content": "...",
"website_id": "123",
"access_tags": ["premium"]
}
Poté nechte svůj server vypsat podepsané pověření vedle snippetu widgetu. Podepisuje se seznam tagů oddělených čárkami, spojený svislou čarou s časem vypršení, pokud jej používáte:
<?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>
Tentýž podpis v Node.js a Pythonu:
// 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()
Bez času vypršení podepište jen samotný řetězec tagů. S ním přestane pověření fungovat v okamžiku vypršení — hodí se, když lze oprávnění odebrat, protože návštěvník si musí znovu načíst stránku pod vaší kontrolou, aby dostal čerstvé pověření.
Co je zaručeno
- Vynucování na straně serveru - filtr běží uvnitř našeho databázového dotazu při vyhledávání; pro neoprávněné návštěvníky otagované položky v kontextu AI vůbec nejsou, takže nemá co uniknout
- Všude fail-closed - žádný podpis, špatný podpis, prošlé pověření, vypnutá funkce, snížený tarif: v každém z těchto případů dostane návštěvník jen veřejný obsah, nikdy víc
- Prohlížeč přístup nezfalšuje - úprava tagů ve vývojářských nástrojích rozbije podpis; klíč má jen váš server
- Vaše logika oprávnění zůstává vaše - nikdy se nedozvíme, jak rozhodujete, kdo dostane který tag; ověřujeme jen, že to váš server potvrdil
Dobré vědět
- Access Tags je autorizace, User Context personalizace - pomocí User Context řekněte AI, kdo člen je; pomocí Access Tags řiďte, z jakých znalostí smí AI čerpat
- Procházený obsah webu je vždy veřejný - pochází z vašeho veřejného webu, takže není co omezovat; tagy platí pro textové, souborové a API položky
- Návštěvníkovi stačí jediný odpovídající tag - položka se dvěma tagy je dostupná návštěvníkovi, který nese kterýkoli z nich
- Nový klíč zneplatní všechna stará pověření - udělejte to, pokud klíč mohl uniknout, a poté upravte stránky, aby podepisovaly novým
- Názvy tagů jsou na vás - až 20 na položku, každý 50 znaků, bez čárek a svislých čar; v chatu viditelném návštěvníkům se nikdy neobjeví
Doplňuje se s User Context: jedna funkce řídí, jaké znalosti smí AI pro tohoto návštěvníka použít, druhá AI říká, kdo návštěvník je.
Kontext uživatele Předávejte data přihlášeného uživatele vašemu AI chatbotovi pro personalizované konverzacePoznámka: Access Tags je součástí smlouvy Enterprise. Napište na [email protected] a vše vám vysvětlíme.