Návod: Integrované ověřování pro aplikace v Pythonu se službami Azure

Azure Active Directory (Azure AD) a Azure Key Vault poskytují komplexní a pohodlný způsob ověřování aplikací pomocí služeb Azure i služeb třetích stran, které se účastní přístupových klíčů.

Po poskytnutí určitého pozadí tento názorný postup vysvětluje tyto ověřovací funkce v kontextu ukázky, github.com/Azure-Samples/python-integrated-authentication .

Pro usnadnění práce je ukázka už nasazená do Azure, takže ji můžete vidět v provozu. Pokud chcete nasadit ukázku do vlastního předplatného Azure, úložiště obsahuje také skripty nasazení Azure CLI.

Část 1: Pozadí

Přestože mnoho služeb Azure při autorizaci spoléhá výhradně na řízení přístupu na základě role, některé služby řídí přístup ke svým příslušným prostředkům pomocí tajných kódů nebo klíčů. Mezi tyto služby patří Azure Storage, databáze, Cognitive Services, Key Vault a Event Hubs.

Při vytváření cloudové aplikace, která používá prostředky v rámci těchto služeb, použijete Azure Portal, Azure CLI nebo Azure PowerShell k vytvoření a konfiguraci klíčů pro vaši aplikaci, které jsou vázané na konkrétní zásady přístupu. Tyto klíče zabraňují přístupu k prostředkům specifickým pro aplikaci jiným neoprávněným kódem.

V rámci tohoto obecného návrhu musí cloudové aplikace obvykle spravovat tyto klíče a ověřovat je u každé služby zvlášť– proces, který může být zdlouhavý i náchylný k chybám. Správa klíčů přímo v kódu aplikace také riskuje odhalení těchto klíčů ve správě zdrojového kódu a klíče můžou být uložené na nezabezpečených vývojářských pracovních stanicích.

Azure naštěstí poskytuje dvě konkrétní služby, které tento proces zjednoduší a zajistí lepší zabezpečení:

  • Azure Key Vault poskytuje zabezpečené cloudové úložiště pro přístupové klíče (společně s kryptografickými klíči a certifikáty, kterým se tento článek nezabažuje). Pomocí Key Vault aplikace k takovým klíčům přistupuje pouze za běhu, aby se nikdy nezobrazují přímo ve zdrojovém kódu.

  • Při Azure Active Directory identit (Azure AD) se aplikace musí ve službě Active Directory ověřit jenom jednou. Aplikace se pak automaticky ověří s jinými službami Azure, včetně Key Vault. V důsledku toho se váš kód nikdy o klíče nebo jiné přihlašovací údaje pro tyto služby Azure nepotřebuje. Ještě lepší je, že stejný kód můžete spustit místně i v cloudu s minimálními požadavky na konfiguraci.

Když společně používáte Azure AD a Key Vault, vaše aplikace se nikdy nepotřebuje ověřovat u jednotlivých služeb Azure a může snadno a bezpečně přistupovat ke všem klíčům potřebným pro služby třetích stran.

Důležité

Tento článek používá běžný obecný termín "klíč" k odkazování na to, co jsou uloženy jako "tajné kódy" v Azure Key Vault, například přístupový klíč pro REST API. Toto použití by nemělo být zaměňováno Key Vault správy nekateografických klíčů, což je samostatná funkce Key Vault tajných kódů nástroje.

Příklad scénáře cloudové aplikace

Pokud chcete porozumět procesu ověřování Azure hlouběji, zvažte následující scénář:

  • Hlavní aplikace zveřejňuje veřejný (neověřovaný) koncový bod rozhraní API, který reaguje na požadavky HTTP daty JSON. Příklad koncového bodu, jak je znázorněno v tomto článku, je implementovaný jako jednoduchá aplikace Flask nasazená do Azure App Service.

  • K vygenerování odpovědi rozhraní API vyvolá rozhraní API třetí strany, které vyžaduje přístupový klíč. Aplikace tento přístupový klíč načte z Azure Key Vault za běhu.

  • Před vrácením odpovědi rozhraní API zapíše zprávu do fronty Azure Storage pro pozdější zpracování. (Konkrétní zpracování těchto zpráv není pro hlavní scénář relevantní.)

Diagram scénáře aplikace

Poznámka

Přestože je koncový bod veřejného rozhraní API obvykle chráněn vlastním přístupový klíčem, pro účely tohoto článku předpokládáme, že je koncový bod otevřený a neověřený. Tento předpoklad zabraňuje nejasnostem mezi potřebami ověřování aplikace a požadavky externího volajícího tohoto koncového bodu. Tento scénář takového externího volajícího neukazuje.