Uwierzytelnianie platformy Azure za pomocą modułu Azure Identity dla języka Go
W tym samouczku typ DefaultAzureCredential z modułu Azure Identity for Go jest używany do uwierzytelniania na platformie Azure. Moduł Azure Identity oferuje kilka typów poświadczeń, które koncentrują się na uwierzytelnieniu OAuth przy użyciu identyfikatora Entra firmy Microsoft.
DefaultAzureCredential
Upraszcza uwierzytelnianie, łącząc powszechnie używane typy poświadczeń. Tworzy łańcuchy typów poświadczeń używanych do uwierzytelniania aplikacji wdrożonych na platformie Azure przy użyciu typów poświadczeń używanych do uwierzytelniania w środowisku projektowym.
Wymagania wstępne
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Zainstalowany program Go: wersja 1.18 lub nowsza
1. Instalowanie modułu Azure Identity dla języka Go
Uruchom następujące polecenie, aby pobrać moduł azidentity :
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
2. Uwierzytelnianie za pomocą platformy Azure
Użyj polecenia DefaultAzureCredential
, aby uwierzytelnić się na platformie Azure przy użyciu jednej z następujących technik:
- Opcja 1. Definiowanie zmiennych środowiskowych
- Opcja 2. Używanie tożsamości obciążenia
- Opcja 3. Używanie tożsamości zarządzanej
- Opcja 4. Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure
- Opcja 5. Logowanie się przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure
Aby dowiedzieć się więcej o różnych typach poświadczeń, zobacz Typy poświadczeń.
Opcja 1. Definiowanie zmiennych środowiskowych
Typ DefaultAzureCredential
używa typu do konfigurowania EnvironmentCredential
uwierzytelniania przy użyciu zmiennych środowiskowych, które obsługują trzy typy uwierzytelniania. Wybierz spośród następujących typów uwierzytelniania i zdefiniuj odpowiednie zmienne środowiskowe.
Jednostka usługi z wpisem tajnym
Nazwa zmiennej | Wartość |
---|---|
AZURE_CLIENT_ID |
Identyfikator aplikacji jednostki usługi platformy Azure |
AZURE_TENANT_ID |
Identyfikator dzierżawy firmy Microsoft Entra aplikacji |
AZURE_CLIENT_SECRET |
Hasło jednostki usługi platformy Azure |
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"
Jednostka usługi z certyfikatem
Nazwa zmiennej | Wartość |
---|---|
AZURE_CLIENT_ID |
Identyfikator aplikacji Firmy Microsoft Entra |
AZURE_TENANT_ID |
Identyfikator dzierżawy firmy Microsoft Entra aplikacji |
AZURE_CLIENT_CERTIFICATE_PATH |
Ścieżka do pliku certyfikatu PEM lub PKCS12, w tym klucza prywatnego |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
(opcjonalnie) Hasło do pliku certyfikatu |
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_CERTIFICATE_PATH="<azure_client_certificate_path>"
Nazwa użytkownika i hasło
Nazwa zmiennej | Wartość |
---|---|
AZURE_CLIENT_ID |
Identyfikator aplikacji Firmy Microsoft Entra |
AZURE_USERNAME |
Nazwa użytkownika (zazwyczaj adres e-mail) |
AZURE_PASSWORD |
Hasło tego użytkownika |
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_USERNAME="<azure_username>"
export AZURE_PASSWORD="<azure_user_password>"
Próba konfiguracji jest podejmowana w poprzedniej kolejności. Jeśli na przykład wartości dla klucza tajnego klienta i certyfikatu są obecne, używany jest klucz tajny klienta. Aby zapoznać się z kompleksowego samouczka dotyczącego uwierzytelniania za pomocą jednostek usługi, zobacz Azure SDK for Go authentication with a service principal (Uwierzytelnianie za pomocą zestawu Azure SDK dla języka Go przy użyciu jednostki usługi).
Opcja 2. Używanie tożsamości obciążenia
Tożsamość obciążeń Microsoft Entra umożliwia zasobnikom w klastrze Kubernetes używanie tożsamości Kubernetes (konta usługi). Wystawiono token Kubernetes, a federacja OIDC umożliwia aplikacjom Kubernetes bezpieczne uzyskiwanie dostępu do zasobów platformy Azure za pomocą identyfikatora Entra firmy Microsoft.
Jeśli wymagane zmienne środowiskowe nie EnvironmentCredential
są obecne, DefaultAzureCredential
próbuje uwierzytelnić się przy użyciu elementu WorkloadIdentityCredential. WorkloadIdentityCredential
próbuje odczytać konfigurację jednostki usługi ze zmiennych środowiskowych ustawionych przez element webhook Tożsamości obciążenia.
Opcja 3. Używanie tożsamości zarządzanej
Tożsamości zarządzane eliminują potrzebę zarządzania poświadczeniami przez deweloperów. Podczas nawiązywania połączenia z zasobami obsługującymi uwierzytelnianie firmy Microsoft Entra aplikacje hostowane na platformie Azure mogą używać tokenów firmy Microsoft Entra zamiast poświadczeń. Tożsamości zarządzane nie są obsługiwane w środowisku lokalnym.
Jeśli wymagane zmienne środowiskowe nie WorkloadIdentityCredential
są obecne, DefaultAzureCredential
próbuje uwierzytelnić się przy użyciu właściwości ManagedIdentityCredential.
Jeśli używasz tożsamości zarządzanej przypisanej przez użytkownika, uruchom następujące polecenie, aby ustawić zmienną AZURE_CLIENT_ID
środowiskową.
export AZURE_CLIENT_ID="<user_assigned_managed_identity_client_id>"
Jeśli zmienna AZURE_CLIENT_ID
środowiskowa nie jest ustawiona, próbuje uwierzytelnić się przy użyciu tożsamości zarządzanej przypisanej przez system, DefaultAzureCredentials
jeśli jest ona włączona w zasobie hostingu.
Aby zapoznać się z kompleksowego samouczka dotyczącego uwierzytelniania za pomocą tożsamości zarządzanych w aplikacjach hostowanych na platformie Azure, zobacz Authentication with the Azure SDK for Go using a managed identity (Uwierzytelnianie przy użyciu zestawu Azure SDK dla języka Go przy użyciu tożsamości zarządzanej).
Opcja 4. Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure
Aby zmniejszyć problemy z programowaniem lokalnym, DefaultAzureCredential
można uwierzytelnić się jako użytkownik zalogowany w interfejsie wiersza polecenia platformy Azure.
Uruchom następujące polecenie, aby zalogować się do interfejsu wiersza polecenia platformy Azure:
az login
Opcja 5. Logowanie się przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure
W środowisku lokalnym, jeśli użytkownik nie jest zalogowany do interfejsu wiersza polecenia platformy Azure, DefaultAzureCredential
może uwierzytelnić się jako użytkownik zalogowany w interfejsie wiersza polecenia dewelopera platformy Azure.
Uruchom następujące polecenie, aby zalogować się do interfejsu wiersza polecenia dewelopera platformy Azure:
azd auth login
Uwierzytelnianie interfejsu wiersza polecenia dla deweloperów platformy Azure nie jest zalecane w przypadku aplikacji działających na platformie Azure.
3. Użyj wartości DefaultAzureCredential do uwierzytelniania elementu ResourceClient
Utwórz nowy przykładowy moduł Języka Go o nazwie azure-auth
, aby przetestować uwierzytelnianie na platformie Azure przy użyciu polecenia DefaultAzureCredential
:
Utwórz katalog, aby przetestować i uruchomić przykładowy kod języka Go, a następnie przejdź do tego katalogu.
Uruchom polecenie go mod init , aby utworzyć moduł:
go mod init azure-auth
Uruchom polecenie Przejdź , aby pobrać, skompilować i zainstalować niezbędny zestaw Azure SDK dla modułów języka 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"
Utwórz plik o nazwie
main.go
i wstaw następujący kod: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 } }
Zastąp
<subscription ID>
ciąg identyfikatorem subskrypcji.Uruchom polecenie
go run
, aby skompilować i uruchomić aplikację:go run .
Uwaga
Aby uruchomić program w środowisku lokalnym, musisz zalogować się na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure lub interfejsu wiersza polecenia dla deweloperów platformy Azure.
Uwierzytelnianie na platformie Azure przy użyciu wartości domyślnejAzureCredential
Użyj następującego kodu w aplikacji, aby uwierzytelnić się na platformie Azure przy użyciu modułu Azure Identity przy użyciu polecenia 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
}
Rozwiązywanie problemów
Aby uzyskać wskazówki dotyczące rozwiązywania błędów z określonych typów poświadczeń, zobacz przewodnik rozwiązywania problemów.