Sdílet prostřednictvím


Ověřování aplikací Go hostovaných v Azure s využitím spravované identity přiřazené uživatelem

Doporučeným přístupem k ověření aplikace hostované v Azure u jiných prostředků Azure je použití spravované identity. Tento přístup je podporovaný pro většinu služeb Azure, včetně aplikací hostovaných v Azure App Service, Azure Container Apps a Azure Virtual Machines. Další informace o různých technikách ověřování a přístupech najdete na stránce přehledu ověřování . V dalších částech se dozvíte:

  • Základní koncepty spravované identity
  • Vytvoření spravované identity přiřazené uživatelem pro vaši aplikaci
  • Přiřazení rolí spravované identitě přiřazené uživatelem
  • Ověření pomocí spravované identity přiřazené uživatelem z kódu aplikace

Základní koncepty spravované identity

Spravovaná identita umožňuje aplikaci bezpečně připojit k jiným prostředkům Azure bez použití tajných klíčů nebo jiných tajných kódů aplikací. Azure interně sleduje identitu a prostředky, ke kterým se může připojit. Azure tyto informace používá k automatickému získání tokenů Microsoft Entra pro aplikaci, aby se mohla připojit k dalším prostředkům Azure.

Při konfiguraci hostované aplikace je potřeba zvážit dva typy spravovaných identit:

  • Spravované identity přiřazené systémem jsou povolené přímo u prostředku Azure a jsou svázané s jeho životním cyklem. Když se prostředek odstraní, Azure automaticky odstraní identitu za vás. Identity přiřazené systémem poskytují minimalistický přístup k používání spravovaných identit.
  • Spravované identity přiřazené uživatelem se vytvářejí jako samostatné prostředky Azure a nabízejí větší flexibilitu a možnosti. Jsou ideální pro řešení zahrnující více prostředků Azure, které potřebují sdílet stejnou identitu a oprávnění. Pokud například více virtuálních počítačů potřebuje přístup ke stejné sadě prostředků Azure, spravovaná identita přiřazená uživatelem poskytuje opakovaně použitelný a optimalizovanou správu.

Návod

Další informace o výběru a správě spravovaných identit přiřazených systémem a přiřazených uživatelem najdete v článku s doporučeními k osvědčeným postupům spravované identity .

Následující části popisují postup povolení a použití spravované identity přiřazené uživatelem pro aplikaci hostované v Azure. Pokud potřebujete použít spravovanou identitu přiřazenou systémem, další informace najdete v článku o spravovaných identitách přiřazených systémem .

Vytvořit uživatelsky přiřazenou spravovanou identitu

Spravované identity přiřazené uživatelem se ve vašem předplatném Azure vytvářejí jako samostatné prostředky pomocí webu Azure Portal nebo Azure CLI. Příkazy Azure CLI je možné spouštět v Azure Cloud Shellu nebo na pracovní stanici s nainstalovaným Azure CLI.

  1. Na webu Azure Portal zadejte na hlavním panelu hledání spravované identity a v části Služby vyberte odpovídající výsledek.

  2. Na stránce Spravované identity vyberte + Vytvořit.

    Snímek obrazovky zobrazující stránku pro správu spravovaných identit přiřazených uživatelem

  3. Na stránce Vytvořit spravovanou identitu přiřazenou uživatelem vyberte předplatné, skupinu prostředků a oblast spravované identity přiřazené uživatelem a zadejte název.

  4. Vyberte Zkontrolovat a vytvořit , abyste zkontrolovali a ověřili vaše vstupy.

    Snímek obrazovky znázorňující formulář pro vytvoření spravované identity přiřazené uživatelem

  5. Výběrem možnosti Vytvořit vytvořte spravovanou identitu přiřazenou uživatelem.

  6. Po vytvoření identity vyberte Přejít k prostředku.

  7. Na stránce Přehled nové identity zkopírujte hodnotu ID klienta , která se použije pro pozdější použití při konfiguraci kódu aplikace.

Přiřazení spravované identity k aplikaci

Spravovanou identitu přiřazenou uživatelem je možné přidružit k jednomu nebo více prostředkům Azure. Všechny prostředky, které tuto identitu používají, získají oprávnění použitá prostřednictvím rolí identity.

  1. Na webu Azure Portal přejděte k prostředku, který je hostitelem kódu vaší aplikace, jako je azure App Service nebo instance kontejnerové aplikace Azure.

  2. Na stránce Přehled prostředku rozbalte Nastavení a v navigaci vyberte Identita .

  3. Na stránce Identita přepněte na kartu Přiřazené uživatelem.

  4. Výběrem + Přidat otevřete panel Přidat spravovanou identitu přiřazenou uživatelem .

  5. Na panelu Přidat spravovanou identitu přiřazenou uživatelem použijte rozevírací seznam Předplatné k filtrování výsledků hledání pro vaše identity. Pomocí vyhledávacího pole spravované identity přiřazené uživatelem vyhledejte spravovanou identitu přiřazenou uživatelem, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.

  6. Vyberte identitu a pokračujte výběrem možnosti Přidat v dolní části panelu.

    Snímek obrazovky znázorňující přidružení spravované identity přiřazené uživatelem k aplikaci

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

Dále určete, které role vaše aplikace potřebuje, a přiřaďte tyto role spravované identitě. Spravované identitě můžete přiřadit role v následujících oborech:

  • Prostředek: Přiřazené role se vztahují pouze na tento konkrétní prostředek.
  • Skupina prostředků: Přiřazené role se vztahují na všechny prostředky obsažené ve skupině prostředků.
  • Předplatné: Přiřazené role se vztahují na všechny prostředky obsažené v předplatném.

Následující příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože mnoho aplikací spravuje všechny související prostředky Azure pomocí jedné skupiny prostředků.

  1. Přejděte na stránku Přehled skupiny prostředků, která obsahuje aplikaci se spravovanou identitou přiřazenou uživatelem.

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

  3. Na stránce Řízení přístupu (IAM) v horní nabídce vyberte + Přidat a pak zvolte Přidat přiřazení role a přejděte na stránku Přidat přiřazení role .

    Snímek obrazovky znázorňující, jak získat přístup ke stránce přiřazení role identity

  4. Stránka Přidat přiřazení role obsahuje záložku s vícekrokovým pracovním postupem pro přiřazení rolí identitám. Na úvodní kartě Role vyhledejte pomocí vyhledávacího pole v horní části roli, kterou chcete přiřadit k identitě.

  5. Ve výsledcích vyberte roli a pak zvolte Další a přejděte na kartu Členové .

  6. U možnosti Přiřadit přístup vyberte Spravovaná identita.

  7. U možnosti Členové zvolte + Vybrat členy a otevřete panel Vybrat spravované identity .

  8. Na panelu Vybrat spravované identity pomocí rozevíracích nabídek Předplatné a Spravovaná identita vyfiltrujte výsledky hledání pro vaše identity. Pomocí vyhledávacího pole Vybrat vyhledejte spravovanou identitu přiřazenou uživatelem, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.

    Snímek obrazovky znázorňující proces přiřazení spravované identity

  9. Vyberte identitu a pokračujte výběrem možnosti Vybrat v dolní části panelu.

  10. V dolní části stránky vyberte Zkontrolovat a přiřadit .

  11. Na poslední kartě Revize a přiřazení vyberte Zkontrolovat a přiřadit a dokončete pracovní postup.

Ověřování ve službách Azure z vaší aplikace

Modul azidentity poskytuje různé přihlašovací údaje – implementace TokenCredential přizpůsobené podpoře různých scénářů a toků ověřování Microsoft Entra. Vzhledem k tomu, že spravovaná identita není při místním spuštění dostupná, předvádějí kroky, které se mají použít v tomto scénáři:

  • Místní vývojové prostředí: Pouze při místním vývoji použijte DefaultAzureCredential pro názorový, předem nakonfigurovaný řetězec přihlašovacích údajů. DefaultAzureCredential zjistí přihlašovací údaje uživatele z místních vývojových nástrojů, jako je Azure CLI. Poskytuje také flexibilitu a pohodlí pro opakování, doby čekání na odpovědi a podporu více možností ověřování. Další informace najdete v článku o ověřování ve službách Azure v místním vývojovém článku.
  • Aplikace hostované v Azure: Pokud je vaše aplikace spuštěná v Azure, použijte ManagedIdentityCredential k bezpečnému zjištění spravované identity nakonfigurované pro vaši aplikaci. Zadáním tohoto přesného typu přihlašovacích údajů zabráníte neočekávanému vyzvednutí dalších dostupných přihlašovacích údajů.

Implementace kódu

Přidejte modul azidentity .

V terminálu podle vašeho výběru přejděte do adresáře projektu aplikace a spusťte následující příkazy:

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Ke službám Azure se přistupuje pomocí specializovaných klientů z různých knihoven klientů SDK Azure. Pro kterýkoli Go kód, který ve vaší aplikaci vytvoří instanci klienta Azure SDK, musíte:

  1. Importujte balíček azidentity.
  2. Vytvořte instanci typu DefaultAzureCredential .
  3. Předejte instanci typu DefaultAzureCredential do konstruktoru klienta sady Azure SDK.
  4. Nastavte proměnnou AZURE_CLIENT_ID prostředí na ID klienta vaší identity přiřazené uživatelem. Příklad těchto kroků je uvedený v následujícím segmentu kódu s klientem objektů blob služby Azure Storage.
import (
	"context"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

const (
	account       = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"
	containerName = "sample-container"
	blobName      = "sample-blob"
	sampleFile    = "path/to/sample/file"
)

func main() {
	// create a credential
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		// TODO: handle error
	}

	// create a client for the specified storage account
	client, err := azblob.NewClient(account, cred, nil)
	if err != nil {
		// TODO: handle error
	}

	// TODO: perform some action with the azblob Client
	// _, err = client.DownloadFile(context.TODO(), <containerName>, <blobName>, <target_file>, <DownloadFileOptions>)
}

Jak je popsáno v článku s přehledem ověřování Azure SDK for Go, DefaultAzureCredential podporuje různé metody ověřování a určuje, která metoda ověřování se používá za běhu. Výhodou tohoto přístupu je, že vaše aplikace může používat různé metody ověřování v různých prostředích bez implementace kódu specifického pro prostředí. Když se předchozí kód spustí na vaší pracovní stanici během místního vývoje, DefaultAzureCredential použije buď aplikačního servisního představitele, jak je určeno nastavením prostředí, nebo přihlašovací údaje vývojářských nástrojů k ověření s jinými prostředky Azure. Stejný kód se tedy dá použít k ověření aplikace v prostředcích Azure během místního vývoje i při nasazení do Azure.

Důležité

DefaultAzureCredential zjednodušuje ověřování při vývoji aplikací, které se nasazují do Azure kombinováním přihlašovacích údajů používaných v hostitelských prostředích Azure a přihlašovacích údajů používaných v místním vývoji. V produkčním prostředí je lepší použít specifický typ přihlašovacích údajů, aby autentizace byla předvídatelnější a snáze debuggovatelná.

Alternativou DefaultAzureCredential je použití ManagedIdentityCredential. Postup použití ManagedIdentityCredential je stejný jako pro použití typu DefaultAzureCredential .

Příklad těchto kroků je znázorněný v následujícím segmentu kódu s klientem Azure Storage Blob.

import (
	"context"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

const (
	// Replace placeholder text with your storage account name
	account       = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"
	containerName = "sample-container"
	blobName      = "sample-blob"
	sampleFile    = "path/to/sample/file"
)

func main() {
	// create a credential
	clientID := azidentity.ClientID("abcd1234-...")
	opts := azidentity.ManagedIdentityCredentialOptions{ID: clientID}
	cred, err := azidentity.NewManagedIdentityCredential(&opts)
	if err != nil {
		// TODO: handle error
	}
	
	// create a client for the specified storage account
	client, err := azblob.NewClient(account, cred, nil)
	if err != nil {
		// TODO: handle error
	}
	
	// TODO: perform some action with the azblob Client
	// _, err = client.DownloadFile(context.TODO(), <containerName>, <blobName>, <target_file>, <DownloadFileOptions>)
}

Předchozí kód se chová jinak v závislosti na prostředí, ve kterém je spuštěný:

  • Na místní vývojové pracovní stanici DefaultAzureCredential prohledá proměnné prostředí kvůli instančnímu objektu aplikace nebo místně nainstalovaným vývojářským nástrojům, jako je Azure CLI, aby získal sadu přihlašovacích údajů vývojáře.
  • Při nasazení do Azure zjistí konfigurace spravované identity, ManagedIdentityCredential které se automaticky ověřují v jiných službách.