Připojení do Azure AI Search pomocí řízení přístupu na základě role

Azure poskytuje globální systém autorizace řízení přístupu na základě role pro všechny služby spuštěné na platformě. Ve službě Azure AI Search můžete použít role Azure pro:

  • Operace roviny řízení (úlohy správy služeb prostřednictvím Azure Resource Manageru)

  • Operace roviny dat, například vytváření, načítání a dotazování indexů

Přístup jednotlivých uživatelů k výsledkům hledání (někdy označovaný jako zabezpečení na úrovni řádků nebo zabezpečení na úrovni dokumentu) se nepodporuje. Alternativním řešením je vytvořit filtry zabezpečení, které oříznou výsledky podle identity uživatele a odeberou dokumenty, ke kterým by žadatel neměl mít přístup.

Poznámka:

Rychlá poznámka k terminologii. Řídicí rovina odkazuje na operace podporované v rozhraní REST API pro správu nebo ekvivalentních klientských knihoven. Rovina dat odkazuje na operace s koncovým bodem vyhledávací služby, jako je indexování nebo dotazy nebo jakákoli jiná operace zadaná v rozhraní REST API služby Search nebo ekvivalentních klientských knihovnách.

Následující role jsou integrované. Pokud tyto role nejsou dostatečné, vytvořte vlastní roli.

Role Letadlo Popis
Vlastník Řízení a data Úplný přístup k řídicí rovině vyhledávacího prostředku, včetně možnosti přiřazovat role Azure. Možnosti ověřování nebo správu rolí pro ostatní uživatele může povolit nebo zakázat pouze role vlastníka. Správci předplatného jsou ve výchozím nastavení členy.

V rovině dat má tato role stejný přístup jako role Přispěvatel vyhledávací služby. Zahrnuje přístup ke všem akcím roviny dat s výjimkou možnosti dotazování nebo indexování dokumentů.
Přispěvatel Řízení a data Stejná úroveň přístupu řídicí roviny jako vlastník, minus možnost přiřazovat role nebo měnit možnosti ověřování.

V rovině dat má tato role stejný přístup jako role Přispěvatel vyhledávací služby. Zahrnuje přístup ke všem akcím roviny dat s výjimkou možnosti dotazování nebo indexování dokumentů.
Čtenář Řízení a data Přístup pro čtení napříč celou službou, včetně metrik vyhledávání, metrik obsahu (spotřebovaného úložiště, počtu objektů) a definic objektů prostředků roviny dat (indexy, indexery atd.). Nemůže ale číst klíče rozhraní API ani číst obsah v indexech.
Přispěvatel vyhledávací služby Řízení a data Přístup pro čtení a zápis k definicím objektů (indexy, aliasy, mapy synonym, indexery, zdroje dat a sady dovedností). Tato role je určená pro vývojáře, kteří vytvářejí objekty, a pro správce, kteří spravují vyhledávací službu a její objekty, ale bez přístupu k obsahu indexu. Pomocí této role můžete vytvářet, odstraňovat a vypisovat indexy, získávat definice indexů, získávat informace o službě (statistiky a kvóty), analyzátory testů, vytvářet a spravovat mapy synonym, indexery, zdroje dat a sady dovedností. Podívejte Microsoft.Search/searchServices/* se na seznam oprávnění.
Přispěvatel dat indexu vyhledávání Data Přístup pro čtení a zápis k obsahu v indexech Tato role je určená pro vývojáře nebo vlastníky indexů, kteří potřebují importovat, aktualizovat nebo dotazovat kolekci dokumentů indexu. Tato role nepodporuje vytváření ani správu indexů. Ve výchozím nastavení je tato role určená pro všechny indexy ve vyhledávací službě. Pokud chcete obor zúžit, podívejte se na téma Udělení přístupu k jednomu indexu .
Čtečka dat indexu vyhledávání Data Přístup jen pro čtení pro dotazování indexů vyhledávání. Tato role je určená pro aplikace a uživatele, kteří spouštějí dotazy. Tato role nepodporuje přístup pro čtení k definicím objektů. Nemůžete například číst definici indexu vyhledávání nebo získat statistiky vyhledávací služby. Ve výchozím nastavení je tato role určená pro všechny indexy ve vyhledávací službě. Pokud chcete obor zúžit, podívejte se na téma Udělení přístupu k jednomu indexu .

Poznámka:

Pokud zakážete přístup na základě role Azure, budou předdefinované role pro řídicí rovinu (vlastník, přispěvatel, čtenář) nadále dostupné. Zakázání přístupu na základě role odebere jenom oprávnění související s daty přidružená k těmto rolím. Pokud jsou role roviny dat zakázané, přispěvatel vyhledávací služby je ekvivalentní přispěvateli roviny řízení.

Omezení

  • Přijetí řízení přístupu na základě role může zvýšit latenci některých požadavků. Každá jedinečná kombinace prostředku služby (index, indexer atd.) a instančního objektu použitého v požadavku aktivuje kontrolu autorizace. Tyto kontroly autorizace můžou do požadavku přidat až 200 milisekund latence.

  • Ve výjimečných případech, kdy požadavky pocházejí z velkého počtu různých instančních objektů, všechny cílení na různé prostředky služby (indexy, indexery atd.), je možné, aby autorizace kontrol měla za následek omezování. Omezování by se stalo pouze v případě, že se během sekundy použily stovky jedinečných kombinací prostředků vyhledávací služby a instančního objektu.

Konfigurace přístupu na základě role pro rovinu dat

Platí pro: Přispěvatel dat indexu Vyhledávání, Čtenář dat indexu vyhledávání, Přispěvatel vyhledávací služby

V tomto kroku nakonfigurujte vyhledávací službu tak, aby rozpoznala autorizační hlavičku požadavků na data, která poskytují přístupový token OAuth2.

  1. Přihlaste se k webu Azure Portal a otevřete stránku vyhledávací služby.

  2. V levém navigačním podokně vyberte Klávesy .

    Snímek obrazovky se stránkou klíčů s možnostmi ověřování

  3. Zvolte možnost řízení přístupu k rozhraní API. Pokud potřebujete flexibilitu nebo potřebujete migrovat aplikace, doporučujeme obojí .

    Možnost Popis
    Klíč rozhraní API (výchozí). Vyžaduje klíče rozhraní API pro správce nebo dotaz na hlavičku požadavku pro autorizaci. Nepoužívají se žádné role.
    Řízení přístupu na základě role Vyžaduje členství v přiřazení role k dokončení úkolu popsaného v dalším kroku. Vyžaduje také autorizační hlavičku.
    Oba Požadavky jsou platné pomocí klíče rozhraní API nebo řízení přístupu na základě role.

Změna je efektivní okamžitě, ale před testováním počkejte několik sekund.

Všechna síťová volání pro operace vyhledávací služby a obsah respektují možnost, kterou vyberete: klíče rozhraní API, nosný token nebo jeden, pokud vyberete Obě.

Pokud na portálu povolíte řízení přístupu na základě role, režim selhání je http401WithBearerChallenge, pokud se autorizace nezdaří.

Přiřazení rolí

Přiřazení rolí jsou kumulativní a trvalá napříč všemi nástroji a klientskými knihovnami. Role můžete přiřadit pomocí některého z podporovaných přístupů popsaných v dokumentaci k řízení přístupu na základě role v Azure.

Abyste mohli spravovat přiřazení rolí, musíte být vlastníkem nebo mít oprávnění Microsoft.Authorization/roleAssignments/write.

Přiřazení rolí na portálu jsou celá služba. Pokud chcete udělit oprávnění k jednomu indexu, použijte místo toho PowerShell nebo Azure CLI.

  1. Přihlaste se k portálu Azure.

  2. Přejděte do vyhledávací služby.

  3. V levém navigačním podokně vyberte Řízení přístupu (IAM ).

  4. Vyberte + Přidat>Přidat přiřazení role.

    Otevře se stránka Řízení přístupu (IAM) s otevřenou nabídkou Přidat přiřazení role.

  5. Vyberte příslušnou roli:

    • Vlastník
    • Přispěvatel
    • Čtenář
    • Přispěvatel vyhledávací služby
    • Přispěvatel dat indexu vyhledávání
    • Čtečka dat indexu vyhledávání
  6. Na kartě Členové vyberte identitu uživatele nebo skupiny Microsoft Entra.

  7. Na kartě Zkontrolovat a přiřadit vyberte možnost Zkontrolovat a přiřadit a přiřaďte roli.

Testování přiřazení rolí

K otestování přiřazení rolí použijte klienta. Mějte na paměti, že role jsou kumulativní a zděděné role, které jsou vymezeny na předplatné nebo skupinu prostředků, není možné odstranit ani odepřít na úrovni prostředku (vyhledávací služby).

Před testováním přístupu se ujistěte, že zaregistrujete klientskou aplikaci s ID Microsoft Entra a máte přiřazené role.

  1. Přihlaste se k portálu Azure.

  2. Přejděte do vyhledávací služby.

  3. Na stránce Přehled vyberte kartu Indexy :

    • Přispěvatelé vyhledávací služby můžou zobrazit a vytvořit libovolný objekt, ale nemůžou načítat dokumenty ani dotazovat index. Pokud chcete ověřit oprávnění, vytvořte vyhledávací index.

    • Přispěvatelé dat indexu vyhledávání můžou načítat a dotazovat dokumenty. K ověření oprávnění použijte Průzkumníka služby Search k dotazování na dokumenty. Na portálu není žádná možnost načíst dokumenty mimo průvodce importem dat. Vzhledem k tomu, že průvodce také vytváří objekty, budete potřebovat přispěvatele vyhledávací služby a přispěvatel dat indexu vyhledávání.

    • Čtenáři dat indexu vyhledávání můžou dotazovat index. K ověření oprávnění použijte Průzkumníka služby Search. Měli byste být schopni odesílat dotazy a zobrazovat výsledky, ale neměli byste být schopni zobrazit definici indexu.

Testovat jako aktuálního uživatele

Pokud už jste přispěvatelem nebo vlastníkem vyhledávací služby, můžete předložit nosný token pro vaši identitu uživatele pro ověřování ve službě Azure AI Search.

  1. Získejte nosný token pro aktuálního uživatele pomocí Azure CLI:

    az account get-access-token --scope https://search.azure.com/.default
    

    Nebo pomocí PowerShellu:

    Get-AzAccessToken -ResourceUrl https://search.azure.com
    
  2. Do nového textového souboru v editoru Visual Studio Code vložte tyto proměnné:

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. Vložte a odešlete žádost o potvrzení přístupu. Tady je příklad, který se dotazuje na index rychlý start pro hotely.

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2023-11-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

Udělení přístupu k jednomu indexu

V některých scénářích můžete chtít omezit přístup aplikace k jednomu prostředku, například indexu.

Portál v současné době nepodporuje přiřazení rolí na této úrovni podrobností, ale dá se provést pomocí PowerShellunebo Azure CLI.

V PowerShellu použijte New-AzRoleAssignment, zadejte název uživatele nebo skupiny Azure a rozsah přiřazení.

  1. Načtěte moduly Azure a AzureAD připojte se k účtu Azure:

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Přidejte přiřazení role s vymezeným oborem do jednotlivého indexu:

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

Vytvoření vlastní role

Pokud předdefinované role neposkytují správnou kombinaci oprávnění, můžete vytvořit vlastní roli pro podporu požadovaných operací.

Tento příklad naklonuje čtečku dat indexu vyhledávání a pak přidá možnost vypsat indexy podle názvu. Za normálních okolností je výpis indexů ve vyhledávací službě považován za práva správce.

Tyto kroky jsou odvozené od vytvoření nebo aktualizace vlastních rolí Azure pomocí webu Azure Portal. Klonování z existující role se podporuje na stránce vyhledávací služby.

Tento postup vytvoří vlastní roli, která rozšiřuje práva vyhledávacího dotazu tak, aby zahrnovala výpis indexů podle názvu. Výpis indexů se obvykle považuje za funkci správce.

  1. Na webu Azure Portal přejděte do vyhledávací služby.

  2. V levém navigačním podokně vyberte Řízení přístupu (IAM).

  3. Na panelu akcí vyberte Role.

  4. Pravým tlačítkem myši klikněte na Čtečku dat indexu vyhledávání (nebo jinou roli) a výběrem možnosti Clone (Klonovat) otevřete průvodce vytvořením vlastní role.

  5. Na kartě Základy zadejte název vlastní role, například Průzkumník dat indexu vyhledávání, a pak vyberte Další.

  6. Na kartě Oprávnění vyberte Přidat oprávnění.

  7. Na kartě Přidat oprávnění vyhledejte a vyberte dlaždici Microsoft Search .

  8. Nastavte oprávnění pro vlastní roli. V horní části stránky použijte výchozí výběr Akce :

    • V části Microsoft.Search/operations vyberte Číst: Vypsat všechny dostupné operace.
    • V části Microsoft.Search/searchServices/indexes vyberte Číst: Číst index.
  9. Na stejné stránce přepněte na Akce dat a v části Microsoft.Search/searchServices/indexes/documents vyberte Číst: Číst dokumenty.

    Definice JSON vypadá jako v následujícím příkladu:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/0000000000000000000000000000000/resourceGroups/free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. Výběrem možnosti Zkontrolovat a vytvořit vytvořte roli. Teď můžete k roli přiřadit uživatele a skupiny.

Zakázání ověřování pomocí klíče rozhraní API

Přístup ke klíči nebo místní ověřování můžete ve vaší službě zakázat, pokud používáte role Přispěvatel vyhledávací služby, Přispěvatel dat indexu vyhledávání a Čtenář dat indexu vyhledávání a ověřování Microsoft Entra. Zakázání klíčů rozhraní API způsobí, že vyhledávací služba odmítne všechny požadavky související s daty, které předávají klíč rozhraní API v hlavičce.

Poznámka:

Správa klíče rozhraní API je možné zakázat, ne odstranit. Klíče rozhraní API pro dotazy je možné odstranit.

K zakázání funkcí se vyžadují oprávnění vlastníka nebo přispěvatele.

Pokud chcete zakázat ověřování na základě klíčů, použijte Azure Portal nebo rozhraní REST API pro správu.

  1. Na webu Azure Portal přejděte do vyhledávací služby.

  2. V levém navigačním podokně vyberte Klíče.

  3. Vyberte řízení přístupu na základě role.

Změna je efektivní okamžitě, ale před testováním počkejte několik sekund. Za předpokladu, že máte oprávnění přiřazovat role jako člen vlastníka, správce služeb nebo spolusprávce, můžete pomocí funkcí portálu otestovat přístup na základě role.

Podmíněný přístup

Podmíněný přístup Microsoft Entra doporučujeme, pokud potřebujete vynutit zásady organizace, jako je vícefaktorové ověřování.

Pokud chcete povolit zásady podmíněného přístupu pro Azure AI Search, postupujte takto:

  1. Přihlaste se k webu Azure Portal.

  2. Vyhledejte podmíněný přístup Microsoft Entra.

  3. Vyberte Zásady.

  4. Vyberte Možnost Nová zásada.

  5. V části Cloudové aplikace nebo akce zásad přidejte službu Azure AI Search jako cloudovou aplikaci podle toho, jak chcete zásady nastavit.

  6. Aktualizujte zbývající parametry zásady. Zadejte například, na které uživatele a skupiny se tato zásada vztahuje.

  7. Zásady uložte.

Důležité

Pokud má vaše vyhledávací služba přiřazenou spravovanou identitu, konkrétní vyhledávací služba se zobrazí jako cloudová aplikace, která se dá zahrnout nebo vyloučit jako součást zásad podmíněného přístupu. Zásady podmíněného přístupu se nedají vynutit u konkrétní vyhledávací služby. Místo toho se ujistěte, že jste vybrali obecnou cloudovou aplikaci Azure AI Search .

Řešení potíží s řízením přístupu na základě role

Při vývoji aplikací, které používají řízení přístupu na základě role pro ověřování, mohou nastat některé běžné problémy:

  • Pokud autorizační token pochází ze spravované identity a příslušná oprávnění byla nedávno přiřazena, může trvat několik hodin, než se tato přiřazení oprávnění projeví.
  • Výchozí konfigurace vyhledávací služby je pouze ověřování na základě klíčů. Pokud jste výchozí nastavení klíče nezměnili na řízení přístupu na obě nebo na základě role, všechny žádosti používající ověřování na základě role se automaticky odepře bez ohledu na příslušná oprávnění.