Sdílet prostřednictvím


Ověřování aplikací Go do služeb 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 Go během místního vývoje používá přihlašovací údaje vývojáře 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 během místního vývoje 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 nebo Azure Developer CLI. Sada Azure SDK for Go 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 služební principály aplikace, které se budou používat při místním vývojovém prostředí, což může být vymezeno tak, aby aplikace měla pouze potřebný přístup.

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 vytváření skupin v Microsoft Entra ID. Jsou vyžadovány parametry --display-name a --main-nickname. 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 vlastnosti id 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 servisních objektů použijte az ad user list. Příkaz parametru --filter 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 můžete pak 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 Microsoft Entra a členství ve skupinách.

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 u 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 aplikačnímu servisnímu principálu 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 bbbbbbbb-1111-2222-3333-cccccccccccc přístup pro čtení, zápis a odstranění ke kontejnerům objektů blob a datům služby Azure Storage ve všech účtech úložiště v rámci skupiny prostředků msdocs-go-sdk-auth-example v předplatném s ID aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e, přiřaďte roli Přispěvatel dat objektů blob služby Storage této skupině pomocí následujícího příkazu.

az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc \
    --scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-go-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 nebo Azure Developer CLI

Na vývojářské pracovní stanici otevřete terminál 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 třídu DefaultAzureCredential. V tomto scénáři DefaultAzureCredential postupně zkontroluje, jestli se vývojář přihlásil k Azure pomocí Azure CLI 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.

Nejprve do aplikace přidejte balíček azidentity.

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

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

  1. Importujte balíček azidentity.
  2. Vytvořte instanci typu DefaultAzureCredential.
  3. Předejte instanci typu DefaultAzureCredential do konstruktoru klienta sady Azure SDK.

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

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>)
}