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 elementu 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
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, w tym klucza prywatnego (bez ochrony haseł) |
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.
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. Łącząc się z zasobami obsługującymi uwierzytelnianie firmy Microsoft Entra, aplikacje mogą używać tokenów firmy Microsoft Entra zamiast poświadczeń.
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>"
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
Uwierzytelnianie interfejsu wiersza polecenia 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 .
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.
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla