Ověřování aplikací Pythonu ve službách Azure během místního vývoje pomocí vývojářských účtů

Když vývojáři vytvářejí cloudové aplikace, obvykle ladí a testují aplikace na místní pracovní stanici. Když je aplikace spuštěná na pracovní stanici vývojáře během místního vývoje, musí se stále ověřovat u všech služeb Azure, které aplikace používá. Tento článek popisuje, jak pomocí přihlašovacích údajů Azure vývojáře ověřit aplikaci v Azure během místního vývoje.

Diagram znázorňující, jak aplikace Pythonu během místního vývoje používá přihlašovací údaje vývojářů k připojení k Azure získáním těchto přihlašovacích údajů z místně nainstalovaných vývojových nástrojů.

Aby se aplikace při místním vývoji ověřila v Azure pomocí přihlašovacích údajů Azure vývojáře, musí být vývojář přihlášený k Azure z Azure CLI, Azure PowerShellu nebo Azure Developer CLI. Sada Azure SDK pro Python dokáže zjistit, že vývojář je přihlášený z některého z těchto nástrojů, a pak z mezipaměti přihlašovacích údajů získat potřebné přihlašovací údaje k ověření aplikace v Azure jako přihlášený uživatel.

Tento přístup je nejjednodušší nastavit pro vývojový tým, protože využívá stávající účty Azure vývojářů. Účet vývojáře ale pravděpodobně bude mít více oprávnění, než vyžaduje aplikace, a proto překročí oprávnění, se kterými se aplikace bude spouštět v produkčním prostředí. Jako alternativu můžete vytvořit instanční objekty aplikace, které se použijí při místním vývoji, což může být vymezeno tak, aby měly přístup potřebný jenom pro aplikaci.

1. Vytvoření skupiny zabezpečení Microsoft Entra pro místní vývoj

Vzhledem k tomu, že na aplikaci pracuje téměř vždy více vývojářů, doporučuje se nejprve vytvořit skupinu zabezpečení Microsoft Entra, která zapouzdří role (oprávnění), které aplikace potřebuje v místním vývoji. Tento přístup nabízí následující výhody.

  • Každý vývojář má jistotu, že má přiřazené stejné role, protože role jsou přiřazené na úrovni skupiny.
  • Pokud je pro aplikaci potřeba nová role, stačí ji přidat jenom do skupiny Microsoft Entra pro aplikaci.
  • Pokud se nový vývojář připojí k týmu, musí být jednoduše přidán do správné skupiny Microsoft Entra, aby získal správná oprávnění pro práci s aplikací.

Pokud máte pro vývojový tým existující skupinu zabezpečení Microsoft Entra, můžete tuto skupinu použít. V opačném případě proveďte následující kroky a vytvořte skupinu zabezpečení Microsoft Entra.

Příkaz az ad group create slouží k vytvoření skupin v Microsoft Entra ID. Parametry --display-name a --main-nickname jsou povinné. Název dané skupiny by měl vycházet z názvu aplikace. Je také užitečné zahrnout do názvu skupiny frázi jako local-dev, která označuje účel skupiny.

az ad group create \
    --display-name MyDisplay \
    --mail-nickname MyDisplay  \
    --description "<group-description>"

Zkopírujte hodnotu id vlastnosti ve výstupu příkazu. Toto je ID objektu pro skupinu. Budete ho potřebovat v dalších krocích. K načtení této vlastnosti můžete použít také příkaz az ad group show .

Pokud chcete do skupiny přidat členy, potřebujete ID objektu uživatele Azure. K výpisu dostupných instančních objektů použijte seznam az ad user list. Příkaz --filter parametru přijímá filtry stylu OData a lze ho použít k filtrování seznamu podle zobrazovaného jména uživatele, jak je znázorněno. Parametr --query omezuje výstup na sloupce, které zajímají.

az ad user list \
    --filter "startswith(displayName, 'Bob')" \
    --query "[].{objectId:id, displayName:displayName}" \
    --output table

Příkaz az ad group member add se pak dá použít k přidání členů do skupin.

az ad group member add \
    --group <group-name> \
    --member-id <object-id>

Poznámka:

Ve výchozím nastavení je vytváření skupin zabezpečení Microsoft Entra omezené na určité privilegované role v adresáři. Pokud nemůžete vytvořit skupinu, obraťte se na správce vašeho adresáře. Pokud nemůžete přidat členy do existující skupiny, obraťte se na vlastníka skupiny nebo správce adresáře. Další informace najdete v tématu Správa skupin a členství ve skupinách Microsoft Entra.

2. Přiřazení rolí ke skupině Microsoft Entra

Dále musíte určit, jaké role (oprávnění) vaše aplikace potřebuje k jakým prostředkům, a přiřadit tyto role k aplikaci. V tomto příkladu se role přiřadí skupině Microsoft Entra vytvořené v kroku 1. Role je možné přiřadit v oboru prostředku, skupiny prostředků nebo předplatného. Tento příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože většina aplikací seskupuje všechny prostředky Azure do jedné skupiny prostředků.

Uživateli, skupině nebo instančnímu objektu aplikace je přiřazena role v Azure pomocí příkazu az role assignment create . Můžete zadat skupinu s ID objektu.

az role assignment create --assignee {objectId} \
    --scope /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} \
    --role "{roleName}" 

Pokud chcete získat názvy rolí, které je možné přiřadit, použijte příkaz az role definition list .

az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table

Pokud chcete například povolit členům skupiny s ID objektu 00000000-0000-0000-0000-000000000000 čtení, zápisu a odstranění přístupu ke kontejnerům objektů blob a datům služby Azure Storage ve všech účtech úložiště ve skupině prostředků msdocs-python-sdk-auth-example v předplatném s ID 11111111-1111-1111-1111-111111111111, přiřadíte roli Přispěvatel dat objektů blob úložiště ke skupině pomocí následujícího příkazu.

az role assignment create --assignee 00000000-0000-0000-0000-000000000000 \
    --scope /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/msdocs-python-sdk-auth-example \
    --role "Storage Blob Data Contributor"

Informace o přiřazování oprávnění na úrovni prostředku nebo předplatného pomocí Azure CLI najdete v článku Přiřazení rolí Azure pomocí Azure CLI.

3. Přihlášení k Azure pomocí Azure CLI, Azure PowerShellu, Azure Developer CLI nebo v prohlížeči

Otevřete terminál na vývojářské pracovní stanici a přihlaste se k Azure z Azure CLI.

az login

4. Implementace defaultAzureCredential ve vaší aplikaci

K ověřování klientských objektů sady Azure SDK v Azure by vaše aplikace měla používat DefaultAzureCredential třídu z azure.identity balíčku. V tomto scénáři postupně zkontrolujete, DefaultAzureCredential jestli se vývojář přihlásil k Azure pomocí Azure CLI, Azure PowerShellu nebo Azure Developer CLI. Pokud je vývojář přihlášený k Azure pomocí některého z těchto nástrojů, použije aplikace přihlašovací údaje použité k přihlášení k nástroji k ověření v Azure.

Začněte přidáním balíčku azure.identity do aplikace.

pip install azure-identity

V dalším kroku pro libovolný kód Pythonu, který ve vaší aplikaci vytvoří objekt klienta sady Azure SDK, budete chtít:

  1. Naimportujte třídu DefaultAzureCredential z azure.identity modulu.
  2. Vytvoření objektu DefaultAzureCredential
  3. DefaultAzureCredential Předejte objekt konstruktoru klientského objektu sady Azure SDK.

Příklad těchto kroků je znázorněn v následujícím segmentu kódu.

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

# Acquire a credential object
token_credential = DefaultAzureCredential()

blob_service_client = BlobServiceClient(
        account_url="https://<my_account_name>.blob.core.windows.net",
        credential=token_credential)