Sdílet prostřednictvím


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

Při vývoji cloudových aplikací obvykle vývojáři před nasazením do Azure sestavují, testují a ladí svůj kód místně. I během místního vývoje se ale aplikace musí ověřit pomocí všech služeb Azure, se kterými komunikuje, jako je Key Vault, Storage nebo databáze.

Tento článek ukazuje, jak nakonfigurovat aplikaci tak, aby při místním vývoji používala přihlašovací údaje Azure vývojáře k ověřování. Tento přístup umožňuje bezproblémové a zabezpečené vývojové prostředí bez vkládání tajných kódů nebo zápisu logiky specifické pro prostředí.

Přehled místního ověřování vývoje pomocí vývojářských účtů

Při vývoji aplikace, která používá knihovnu Identit Azure pro Python, můžete se během místního vývoje ověřit ve službách Azure pomocí účtu Azure vývojáře. Tento přístup je často nejjednodušší způsob ověřování ve službách Azure během místního vývoje, protože nevyžaduje vytváření a správu instančních objektů nebo tajných kódů.

Diagram znázorňující, jak aplikace v Pythonu během místního vývoje používá přihlašovací údaje vývojáře pro 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ů.

Pokud chcete aplikaci povolit ověřování v Azure během místního vývoje pomocí vlastních přihlašovacích údajů Azure vývojáře, musí se vývojář nejdřív přihlásit pomocí některého z podporovaných nástrojů příkazového řádku:

  • Azure CLI (az login)
  • Azure Developer CLI (azd login)
  • Azure PowerShell (Connect-AzAccount)

Po přihlášení může knihovna Azure Identity pro Python automaticky rozpoznat aktivní relaci a načíst potřebné tokeny z mezipaměti přihlašovacích údajů. Tato funkce umožňuje aplikaci ověřovat služby Azure jako přihlášený uživatel, aniž by vyžadovala další konfiguraci nebo pevně zakódované tajné kódy.

Toto chování je aktivováno při použití DefaultAzureCredential, které se transparentně vrací k přihlašovacím údajům založeným na rozhraní příkazového řádku v lokálních prostředích.

Použití přihlašovacích údajů Azure přihlášeného vývojáře je nejjednodušším nastavením pro místní vývoj. Využívá stávající účet Azure každého člena týmu a umožňuje bezproblémový přístup ke službám Azure bez nutnosti další konfigurace.

Vývojářské účty ale obvykle mají širší oprávnění, než by měla mít aplikace v produkčním prostředí. Tato širší oprávnění můžou vést k nekonzistence při testování nebo neúmyslně povolit operace, které by aplikace neměla oprávnění provádět v produkčním prostředí. Pokud chcete věrně napodobit produkční oprávnění a zlepšit zabezpečení, můžete místo toho vytvořit služební zástupce specifické pro aplikace pro místní vývoj. Tyto identity:

  • Dají se přiřadit jenom role a oprávnění, která aplikace potřebuje.
  • Princip podpory nejnižších oprávnění
  • Nabídka konzistentního testování chování souvisejícího s přístupem napříč prostředími

Vývojáři můžou nakonfigurovat místní prostředí tak, aby používalo instanční objekt prostřednictvím proměnných prostředí, a DefaultAzureCredential automaticky ho převezme. Další informace najdete v článku Ověřování aplikací Pythonu ve službách Azure během místního vývoje pomocí instančních objektů.

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

Ve většině vývojových scénářů přispívá více vývojářů do stejné aplikace. Pokud chcete zjednodušit řízení přístupu a zajistit konzistentní oprávnění napříč týmem, doporučujeme nejprve vytvořit skupinu zabezpečení Microsoft Entra speciálně pro místní potřeby vývoje aplikace.

Přiřazení rolí Azure na úrovni skupiny ( nikoli jednotlivým uživatelům) nabízí několik klíčových výhod:

  • Konzistentní přiřazení rolí

    Všichni vývojáři ve skupině automaticky dědí stejné role a oprávnění a zajišťují jednotné vývojové prostředí.

  • Zjednodušená správa rolí

    Pokud aplikace vyžaduje novou roli, stačí ji přidat jenom jednou do skupiny. Nemusíte aktualizovat jednotlivá uživatelská oprávnění.

  • Snadné začlenění

    Noví vývojáři můžou mít potřebná oprávnění jednoduše tak, že je přidáte do skupiny. Nevyžaduje se žádné ruční přiřazení rolí.

Pokud už vaše organizace má pro vývojový tým vhodnou skupinu zabezpečení Microsoft Entra, můžete ji znovu použít. V opačném případě můžete pro aplikaci vytvořit novou skupinu.

Pokud chcete vytvořit skupinu zabezpečení v MICROSOFT Entra ID, použijte příkaz az ad group createe Azure CLI.

Tento příkaz vyžaduje následující parametry:

--display-name: Uživatelsky přívětivý název skupiny

--mail-nickname: Jedinečný identifikátor používaný pro e-mail a interní odkaz

Doporučujeme, abyste název skupiny založili na názvu aplikace a přidali příponu jako -local-dev, která jasně označuje její účel.

#!/bin/bash
az ad group create \
    --display-name MyDisplay \
    --mail-nickname MyDisplay  \
    --description "<group-description>"
# PowerShell syntax
az ad group create `
    --display-name MyDisplay `
    --mail-nickname MyDisplay `
    --description "<group-description>"

Po spuštění az ad group create příkazu zkopírujte hodnotu id vlastnosti z výstupu příkazu. K přiřazení rolí v dalších krocích tohoto článku potřebujete ID skupiny zabezpečení Microsoft Entra Object ID. Pokud chcete získat zpět Object ID později znovu, použijte následující příkaz az ad group show: az ad group show --group "my-app-local-dev" --query id --output tsv.

Pokud chcete přidat uživatele do skupiny, musíte nejprve získat Object ID uživatelský účet Azure, který chcete přidat. Pomocí příkazu az ad user list s parametrem --filter vyhledejte konkrétního uživatele podle zobrazovaného jména. Tento --query parametr pomáhá omezit výstup na relevantní pole:

#!/bin/bash
az ad user list \
--filter "startswith(displayName, 'Bob')" \
--query "[].{objectId:id, displayName:displayName}" \
--output table
# PowerShell syntax
az ad user list `
    --filter "startswith(displayName, 'Bob')" `
    --query "[].{objectId:id, displayName:displayName}" `
    --output table

Jakmile budete mít Object ID uživatele, můžete ho přidat do skupiny pomocí příkazu az ad group member add .

#!/bin/bash
az ad group member add \
    --group <group-name> \
    --member-id <object-id>
# PowerShell syntax
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

Dalším krokem po vytvoření skupiny zabezpečení Microsoft Entra a přidání členů je určit, jaké role (oprávnění) vaše aplikace vyžaduje, a přiřadit tyto role skupině v příslušném oboru.

  • Určení požadovaných rolí

    Identifikujte role, které aplikace potřebuje k fungování. K běžným příkladům patří:

    • Uživatel tajných kódů služby Key Vault – čtení tajných kódů ze služby Azure Key Vault
    • Přispěvatel dat do fronty úložiště – odesílání zpráv do Azure Queue Storage

    Další možnosti najdete v předdefinovaných definicích rolí.

  • Volba oboru pro přiřazení role

    Role je možné přiřadit v různých oborech:

    • Úroveň prostředků (např. jeden účet služby Key Vault nebo úložiště)
    • Úroveň skupiny zdrojů (doporučeno pro většinu aplikací)
    • Úroveň předplatného (používejte s opatrností – nejširší přístup)

V tomto příkladu přiřadíme role v oboru skupiny prostředků, což je typické, když jsou všechny prostředky aplikace seskupené 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 pomocí její Object ID.

#!/bin/bash
az role assignment create --assignee <objectId> \
    --scope /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName> \
    --role "<roleName>" 
# PowerShell syntax
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 .

#!/bin/bash
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table
# PowerShell syntax
az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table

Pokud chcete udělit přístup ke čtení, zápisu a odstranění kontejnerů objektů blob a dat Azure Storage pro všechny účty úložiště v konkrétní skupině prostředků, přiřaďte roli Přispěvatel dat objektů blob služby Storage ke skupině zabezpečení Microsoft Entra.

#!/bin/bash
az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc \
    --scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-python-sdk-auth-example \
    --role "Storage Blob Data Contributor"
# PowerShell syntax
az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc `
    --scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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

Pokud se chcete ověřit pomocí svého účtu Azure, zvolte jednu z následujících metod:

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. Toto je doporučená metoda ověřování pro místní vývojová i produkční nasazení.

V místním vývojovém scénáři DefaultAzureCredential funguje postupným kontrolováním dostupných zdrojů ověřování. Konkrétně hledá aktivní relace v následujících nástrojích:

  • Azure CLI (az login)
  • Azure PowerShell (Connect-AzAccount)
  • Azure Developer CLI (azd auth přihlášení)

Pokud je vývojář přihlášený k Azure pomocí některého z těchto nástrojů, DefaultAzureCredential automaticky zjistí relaci a pomocí těchto přihlašovacích údajů ověří aplikaci pomocí služeb Azure. Vývojáři tak můžou bezpečně ověřovat, aniž by museli ukládat tajné kódy nebo upravovat kód pro různá prostředí.

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)