Sdílet prostřednictvím


Autorizace přístupu k vyhledávací aplikaci pomocí Microsoft Entra ID

Vyhledávací aplikace, které jsou založené na službě Azure AI Search, teď můžou k ověřenému a autorizovanému přístupu používat platformu Microsoft Identity Platform . V Azure je zprostředkovatel identity Microsoft Entra ID. Klíčovou výhodou používání Microsoft Entra ID je to, že vaše přihlašovací údaje a klíče rozhraní API už nemusí být uložené ve vašem kódu. Microsoft Entra ověřuje objekt zabezpečení (uživatel, skupina nebo služba) spuštěnou aplikaci. Pokud ověřování proběhne úspěšně, vrátí Microsoft Entra ID přístupový token do aplikace a aplikace pak může přístupový token použít k autorizaci požadavků na Azure AI Search.

V tomto článku se dozvíte, jak nakonfigurovat klienta pro ID Microsoft Entra:

  • Pro ověřování vytvořte spravovanou identitu pro vaši aplikaci. Můžete použít jiný typ objektu zabezpečení, ale tento článek používá spravované identity, protože eliminují potřebu správy přihlašovacích údajů.

  • Pro autorizaci přiřaďte spravované identitě roli Azure, která uděluje oprávnění ke spouštění dotazů nebo správě úloh indexování.

  • Aktualizujte kód klienta tak, aby volal TokenCredential(). Můžete například začít s novým SearchClient(koncový bod, nový DefaultAzureCredential()) a ověřit se prostřednictvím ID Microsoft Entra pomocí Azure.Identity.

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ří.

Vytvoření spravované identity

V tomto kroku vytvořte spravovanou identitu pro klientskou aplikaci.

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

  2. Vyhledejte spravované identity.

  3. Vyberte Vytvořit.

  4. Zadejte název spravované identity a vyberte oblast. Potom vyberte Vytvořit.

    Snímek obrazovky s průvodcem Vytvořit spravovanou identitu

Přiřazení role ke spravované identitě

Dále je potřeba udělit spravované identitě klienta přístup k vaší vyhledávací službě. Azure AI Search má různé předdefinované role. Můžete také vytvořit vlastní roli.

Osvědčeným postupem je udělit minimální oprávnění. Pokud vaše aplikace potřebuje zpracovávat pouze dotazy, měli byste přiřadit roli Čtenář dat indexu vyhledávání. Případně pokud klient potřebuje přístup ke čtení i zápisu v indexu vyhledávání, měli byste použít roli Přispěvatel dat indexu vyhledávání.

  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.

    Snímek obrazovky se stránkou Řízení přístupu (IAM) a 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í

      Poznámka:

      Vlastník, Přispěvatel, Čtenář a Přispěvatel vyhledávací služby jsou role řídicí roviny a neudělují vám přístup k datům v indexu vyhledávání. Pro přístup k datům zvolte roli Přispěvatel dat indexu vyhledávání nebo Čtenář dat indexu vyhledávání. Další informace o rozsahu a účelu jednotlivých rolí najdete v tématu Předdefinované role používané ve službě Search.

  6. Na kartě Členové vyberte spravovanou identitu, kterou chcete udělit přístup ke službě Search.

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

Pokud vaše aplikace potřebuje komplexní přístup k vyhledávacím službám, objektům a obsahu, můžete přiřadit více rolí, jako je Přispěvatel vyhledávacích služeb a Přispěvatel dat indexu vyhledávání.

Role můžete přiřadit také pomocí PowerShellu.

Nastavení ověřování Microsoft Entra v klientovi

Jakmile máte spravovanou identitu a přiřazení role ve vyhledávací službě, můžete do aplikace přidat kód pro ověření objektu zabezpečení a získání tokenu OAuth 2.0.

Pro řízení přístupu na základě role použijte následující klientské knihovny:

Poznámka:

Další informace o toku udělení kódu OAuth 2.0, který používá ID Microsoft Entra, najdete v tématu Autorizace přístupu k webovým aplikacím Microsoft Entra pomocí toku udělení kódu OAuth 2.0.

Následující pokyny odkazují na existující ukázku jazyka C#, která demonstruje změny kódu.

  1. Jako výchozí bod naklonujte zdrojový kód pro oddíl C# rychlého startu : Fulltextové vyhledávání pomocí sad Azure SDK.

    Ukázka v současné době používá ověřování založené na klíčích a AzureKeyCredential k vytvoření SearchClient ověřování, SearchIndexClient ale můžete provést malou změnu, která se přepne na ověřování na základě rolí.

  2. Aktualizujte balíček NuGet Azure.Search.Documents na verzi 11.4 nebo novější.

  3. Naimportujte knihovnu Azure.Identity , abyste získali přístup k jiným technikám ověřování.

  4. Místo použití AzureKeyCredential na začátku Main() Program.cs použijte DefaultAzureCredential jako v následujícím fragmentu kódu:

    // Create a SearchIndexClient to send create/delete index commands
    SearchIndexClient adminClient = new SearchIndexClient(serviceEndpoint, new DefaultAzureCredential());
    // Create a SearchClient to load and query documents
    SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, new DefaultAzureCredential());
    

Místní testování

Spravované identity přiřazené uživatelem fungují jenom v prostředích Azure. Pokud tento kód spustíte místně, DefaultAzureCredential vrátí se zpět k ověřování pomocí vašich přihlašovacích údajů. Pokud plánujete spustit kód místně, ujistěte se, že máte v úmyslu zadat požadovaný přístup k vyhledávací službě.

  1. Ověřte, že váš účet má přiřazení rolí ke spuštění všech operací v ukázce rychlého startu. K vytvoření indexu a dotazování indexu použijte "Search Index Data Reader" a "Search Index Data Contributor".

  2. Přejděte na Možnosti služby Azure Options>>a zvolte svůj přihlašovací účet Azure.

Teď byste měli být schopni spustit projekt ze sady Visual Studio v místním systému pomocí řízení přístupu na základě role pro autorizaci.

Poznámka:

Dokumentace k Azure.Identity obsahuje další podrobnosti o DefaultAzureCredentialověřování Microsoft Entra pomocí sady Azure SDK pro .NET. DefaultAzureCredential účelem je zjednodušit zahájení práce se sadou SDK tím, že zpracovává běžné scénáře s rozumným výchozím chováním. Vývojáři, kteří chtějí mít větší kontrolu nebo jejichž scénář není ve výchozím nastavení obsluhován, by měli používat jiné typy přihlašovacích údajů.

Viz také