Ověřování Azure pomocí modulu Identita Azure pro Go
V tomto kurzu se k ověřování v Azure používá typ DefaultAzureCredential z modulu Azure Identity for Go. Modul Azure Identity nabízí několik typů přihlašovacích údajů, které se zaměřují na OAuth s ID Microsoft Entra.
DefaultAzureCredential
zjednodušuje ověřování kombinováním běžně používaných typů přihlašovacích údajů. Zřetězuje typy přihlašovacích údajů používané k ověřování aplikací nasazených v Azure pomocí typů přihlašovacích údajů používaných k ověřování ve vývojovém prostředí.
Požadavky
- Předplatné Azure: Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.
- Go installed: Version 1.18 or above
1. Instalace modulu Azure Identity for Go
Spuštěním následujícího příkazu stáhněte modul azidentity :
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
2. Ověřování pomocí Azure
DefaultAzureCredential
Použijte k ověření v Azure jednu z následujících technik:
- Možnost 1: Definování proměnných prostředí
- Možnost 2: Použití identity úloh
- Možnost 3: Použití spravované identity
- Možnost 4: Přihlášení pomocí Azure CLI
Další informace o různýchtypech
Možnost 1: Definování proměnných prostředí
Tento DefaultAzureCredential
typ používá EnvironmentCredential
ke konfiguraci ověřování pomocí proměnných prostředí, které podporují tři typy ověřování. Vyberte si z následujících typů ověřování a definujte příslušné proměnné prostředí.
Instanční objekt s tajným kódem
Název proměnné | Hodnota |
---|---|
AZURE_CLIENT_ID |
ID aplikace instančního objektu Azure |
AZURE_TENANT_ID |
ID tenanta Microsoft Entra aplikace |
AZURE_CLIENT_SECRET |
Heslo instančního objektu Azure |
export AZURE_TENANT_ID="<active_directory_tenant_id"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"
Instanční objekt s certifikátem
Název proměnné | Hodnota |
---|---|
AZURE_CLIENT_ID |
ID aplikace Microsoft Entra |
AZURE_TENANT_ID |
ID tenanta Microsoft Entra aplikace |
AZURE_CLIENT_CERTIFICATE_PATH |
Cesta k souboru certifikátu včetně privátního klíče (bez ochrany heslem) |
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_CERTIFICATE_PATH="<azure_client_certificate_path>"
Uživatelské jméno a heslo
Název proměnné | Hodnota |
---|---|
AZURE_CLIENT_ID |
ID aplikace Microsoft Entra |
AZURE_USERNAME |
Uživatelské jméno (obvykle e-mailová adresa) |
AZURE_PASSWORD |
Heslo uživatele |
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_USERNAME="<azure_username>"
export AZURE_PASSWORD="<azure_user_password>"
Konfigurace se pokouší v předchozím pořadí. Pokud jsou například k dispozici hodnoty pro tajný klíč klienta a certifikát, použije se tajný klíč klienta.
Možnost 2: Použití identity úloh
ID úloh Microsoft Entra umožňuje podům v clusteru Kubernetes používat identitu Kubernetes (účet služby). Vystavil se token Kubernetes a federace OIDC umožňuje aplikacím Kubernetes bezpečně přistupovat k prostředkům Azure pomocí Microsoft Entra ID.
Pokud požadované proměnné EnvironmentCredential
prostředí nejsou k dispozici, DefaultAzureCredential
pokusí se ověřit pomocí WorkloadIdentityCredential. WorkloadIdentityCredential
pokusí se přečíst konfiguraci instančního objektu z proměnných prostředí nastavených webhookem Identity úlohy.
Možnost 3: Použití spravované identity
Spravované identity eliminují potřebu vývojářů spravovat tyto přihlašovací údaje. Připojením k prostředkům, které podporují ověřování Microsoft Entra, můžou aplikace místo přihlašovacích údajů používat tokeny Microsoft Entra.
Pokud požadované proměnné WorkloadIdentityCredential
prostředí nejsou k dispozici, DefaultAzureCredential
pokusí se ověřit pomocí ManagedIdentityCredential.
Pokud používáte spravovanou identitu přiřazenou uživatelem, spuštěním následujícího příkazu nastavte proměnnou AZURE_CLIENT_ID
prostředí.
export AZURE_CLIENT_ID="<user_assigned_managed_identity_client_id>"
Možnost 4: Přihlášení pomocí Azure CLI
Pokud chcete snížit tření v místním vývoji, DefaultAzureCredential
můžete se ověřit, když se uživatel přihlásí k Azure CLI.
Spuštěním následujícího příkazu se přihlaste k Azure CLI:
az login
Ověřování Azure CLI se nedoporučuje pro aplikace spuštěné v Azure.
3. Ověření ResourceClient pomocí defaultAzureCredential
Vytvořte nový ukázkový modul Go s názvem azure-auth
pro otestování ověřování v Azure pomocí DefaultAzureCredential
:
Vytvořte adresář pro otestování a spuštění ukázkového kódu Go a pak ho změňte do daného adresáře.
Spuštěním příkazu go mod init vytvořte modul:
go mod init azure-auth
Spuštěním příkazu go si stáhněte , sestavte a nainstalujte potřebné moduly Azure SDK pro Go:
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription"
Vytvořte soubor s názvem
main.go
a vložte následující kód:package main import ( "context" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription" ) const subscriptionID = "<subscription ID>" func main() { cred, err := azidentity.NewDefaultAzureCredential(nil) if err != nil { // TODO: handle error } // Azure SDK Resource Management clients accept the credential as a parameter. // The client will authenticate with the credential as necessary. client, err := armsubscription.NewSubscriptionsClient(cred, nil) if err != nil { // TODO: handle error } _, err = client.Get(context.TODO(), subscriptionID, nil) if err != nil { // TODO: handle error } }
Nahraďte
<subscription ID>
ID předplatného.Spusťte
go run
sestavení a spuštění aplikace:go run .
Ověřování v Azure pomocí defaultAzureCredential
Pomocí následujícího kódu v aplikaci se ověřte v Azure pomocí modulu Azure Identity pomocí DefaultAzureCredential
:
// This credential type checks environment variables for configuration.
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
// handle error
}
// Azure Resource Management clients accept the credential as a parameter
client, err := armresources.NewClient("<subscriptionId>", cred, nil)
if err != nil {
// handle error
}
Řešení problému
Pokyny k řešení chyb z konkrétních typů přihlašovacích údajů najdete v průvodci odstraňováním potíží.
Další kroky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro