Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Note
Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.
Az olyan keresési megoldások esetében, amelyek nem tudják használni a beépített hozzáférés-vezérlési listát (ACL) a dokumentumszintű engedélyezéshez, az Azure AI Keresés támogatja egy olyan szűrő létrehozását, amely csoport- vagy felhasználói identitást tartalmazó sztring alapján vágja le a keresési eredményeket.
Ez a cikk a következő lépésekkel rendelkező biztonsági szűrési mintát ismerteti:
- Forrásdokumentumok összeállítása a szükséges tartalommal, beleértve egy identitás tárolására szolgáló sztringet
- A keresési indexben hozzon létre egy mezőt a főbb azonosítók számára.
- Dokumentumok leküldése a keresési indexbe indexelés céljából
- Az index lekérdezése a
search.inszűrőfüggvénnyel
A gyakorlati tanulást biztosító bemutatókra és példákra mutató hivatkozásokkal zárul. Javasoljuk, hogy először tekintse át ezt a cikket a minta megértéséhez.
Tudnivalók a biztonsági szűrő mintájáról
A biztonsági szűrőminta egy normál OData-szűrő használatával szimulálja a dokumentumszintű engedélyezést, amely egy biztonsági tagból álló sztringen alapuló keresési eredményt tartalmaz vagy kizár. Nincs hitelesítés vagy engedélyezés a biztonsági tagon keresztül. Az alapelve csak egy karakterlánc, amelyet egy szűrőkifejezésben használnak, hogy belefoglaljon vagy kizárjon egy dokumentumot a keresési eredmények közül.
A biztonsági szűrés többféleképpen is megvalósítható. Ennek egyik módja az egyenlőségi kifejezések bonyolult diszjunkciója: például Id eq 'id1' or Id eq 'id2', és így tovább. Ez a megközelítés hibalehetőséget jelent, nehezen tartható fenn, és ha a lista több száz vagy több ezer értéket tartalmaz, akkor a lekérdezés válaszideje néhány másodperccel lelassul.
Jobb megoldás a függvény használata a search.in biztonsági szűrőkhöz, a cikkben leírtak szerint. Ha egyenlőségi kifejezés helyett használ search.in(Id, 'id1, id2, ...') , az alszekundumos válaszidőkre számíthat.
Előfeltételek
Egy csoport- vagy felhasználói identitást, például Microsoft Entra objektumazonosítót tartalmazó sztringmező.
Az ugyanazon dokumentum más mezőinek meg kell adniuk az adott csoport vagy felhasználó számára elérhető tartalmat. A következő JSON-dokumentumokban a "security_id" mezők egy biztonsági szűrőben használt identitásokat tartalmaznak, és a név, a fizetés és a családi állapot szerepel, ha a hívó identitása megegyezik a dokumentum "security_id" értékével.
{ "Employee-1": { "employee_id": "100-1000-10-1-10000-1", "name": "Abram", "salary": 75000, "married": true, "security_id": "alphanumeric-object-id-for-employee-1" }, "Employee-2": { "employee_id": "200-2000-20-2-20000-2", "name": "Adams", "salary": 75000, "married": true, "security_id": "alphanumeric-object-id-for-employee-2" } }
Biztonsági mező létrehozása
A keresési indexben a mezők gyűjteményében egy olyan mezőre van szüksége, amely tartalmazza a csoportot vagy a felhasználói identitást, hasonlóan az előző példában szereplő fiktív "security_id" mezőhöz.
Biztonsági mező hozzáadása
Collection(Edm.String)-ként.Állítsa be a mező
filterableattribútumát a következőretrue: .Állítsa be a mező attribútumát
retrievablefalseúgy, hogy az ne legyen visszaadva a keresési válasz részeként.Az indexekhez dokumentumkulcs szükséges. A "file_id" mező megfelel ennek a követelménynek.
Az indexnek kereshető és lekérdezhető tartalmakat is tartalmaznia kell. A példában a "file_name" és a "file_description" mezők jelölik ezt.
Az alábbi indexséma megfelel a mezőkövetelményeknek. A Azure AI Keresés indexelt dokumentumoknak az összes ilyen mező értékével kell rendelkezniük, beleértve a
group_ids. A lekérdezés visszaadja a dokumentumotfile_namesecured_file_b, ha a biztonsági szűrő tartalmazzagroup_id1vagygroup_id2.POST https://[search service].search.windows.net/indexes/securedfiles/docs/index?api-version=2026-04-01 { "name": "securedfiles", "fields": [ {"name": "file_id", "type": "Edm.String", "key": true, "searchable": false }, {"name": "file_name", "type": "Edm.String", "searchable": true }, {"name": "file_description", "type": "Edm.String", "searchable": true }, {"name": "group_ids", "type": "Collection(Edm.String)", "filterable": true, "retrievable": false } ] }
Note
A(z) retrievablegroup_ids értékre állítása megakadályozza, hogy a(z) false egy dokumentum részeként megjelenjen a keresési eredményekben. Ez nem tartalomfedés vagy mezőszintű biztonsági mechanizmus. Ebben a mintában a dokumentumszintű engedélyezést a rendszer úgy kényszeríti ki, hogy minden lekérdezésre alkalmazza a biztonsági szűrőt. Ne támaszkodjon retrievable egyedül a bizalmas információk védelmére az összes lekérdezési funkcióval vagy válaszformátumgal szemben.
Adatok leküldése az indexbe a REST API használatával
Töltse fel a keresési indexet olyan dokumentumokkal, amelyek a mezőgyűjtemény minden mezőjéhez tartalmaznak értékeket, beleértve a biztonsági mező értékeit is. Az Azure AI Keresés nem biztosít API-kat vagy funkciókat a biztonsági mező feltöltéséhez. A cikk végén felsorolt példák közül azonban számos a mező feltöltési technikáit ismerteti.
Az Azure AI Keresésben az adatok betöltésének megközelítései a következők:
- Egyetlen leküldéses vagy lekéréses (indexelő) művelet, amely az összes mezővel kitöltött dokumentumokat importálja
- Több feltöltési vagy letöltési művelet. Ha a másodlagos importálási műveletek a megfelelő dokumentumazonosítót célják, a mezőket egyenként is betöltheti több importálással.
Az alábbi példa egyetlen HTTP POST-kérést mutat be az index URL-végpontjának dokumentumgyűjteményéhez (lásd : Dokumentumok – Index). A HTTP-kérés törzse az indexelendő dokumentumok JSON-renderelése:
POST https://[search service].search.windows.net/indexes/securedfiles/docs/index?api-version=2026-04-01
{
"value": [
{
"@search.action": "upload",
"file_id": "1",
"file_name": "secured_file_a",
"file_description": "File access is restricted to Human Resources.",
"group_ids": ["group_id1"]
},
{
"@search.action": "upload",
"file_id": "2",
"file_name": "secured_file_b",
"file_description": "File access is restricted to Human Resources and Recruiting.",
"group_ids": ["group_id1", "group_id2"]
},
{
"@search.action": "upload",
"file_id": "3",
"file_name": "secured_file_c",
"file_description": "File access is restricted to Operations and Logistics.",
"group_ids": ["group_id5", "group_id6"]
}
]
}
Ha frissítenie kell egy meglévő dokumentumot a csoportok listájával, használhatja a mergemergeOrUpload következő műveletet:
{
"value": [
{
"@search.action": "mergeOrUpload",
"file_id": "3",
"group_ids": ["group_id7", "group_id8", "group_id9"]
}
]
}
A biztonsági szűrő alkalmazása a lekérdezésben
A dokumentumok hozzáférés group_ids alapján történő vágásához le kell futtatnia egy keresési lekérdezést egy group_ids/any(g:search.in(g, 'group_id1, group_id2,...')) szűrővel, ahol a "group_id1, group_id2,..." azok a csoportok, amelyekhez a keresési kérelem kiállítója tartozik.
Ez a szűrő megfelel azoknak a dokumentumoknak, amelyeknél a group_ids mező az egyik megadott azonosítót tartalmazza.
Az Azure AI Keresés használatával végzett dokumentumok keresésével kapcsolatos részletes információkért olvassa el a Dokumentumok keresése című cikket.
Ez a minta bemutatja, hogyan állíthat be lekérdezést POST-kéréssel.
Adja ki a HTTP POST kérést, és adja meg a szűrőt a kérelem törzsében:
POST https://[service name].search.windows.net/indexes/securedfiles/docs/search?api-version=2026-04-01
{
"filter":"group_ids/any(g:search.in(g, 'group_id1, group_id2'))"
}
Vissza kell szereznie a dokumentumokat, ahol group_ids a "group_id1" vagy a "group_id2" szerepel. Más szóval lekérheti azokat a dokumentumokat, amelyekhez a kérelem kiállítója olvasási hozzáféréssel rendelkezik.
{
[
{
"@search.score":1.0,
"file_id":"1",
"file_name":"secured_file_a",
},
{
"@search.score":1.0,
"file_id":"2",
"file_name":"secured_file_b"
}
]
}
Következő lépések
Ez a cikk a felhasználói identitás és a függvény alapján az eredmények szűrésének search.in() mintáját ismerteti. Ezzel a függvénnyel kérésként átadhatja a fő azonosítókat a felhasználó számára, hogy azok illeszkedjenek az egyes céldokumentumokhoz kapcsolt fő azonosítókhoz. Amikor egy keresési kérés kerül feldolgozásra, a search.in függvény kiszűri azokat a keresési eredményeket, amelyekhez a felhasználó egyik jogosultsága sem rendelkezik olvasási hozzáféréssel. Az egyszerű azonosítók például biztonsági csoportokat, szerepköröket vagy akár a felhasználó saját identitását is jelölhetik.
További példák, bemutatók és videók: