Go için Azure Identity modülüyle Azure kimlik doğrulaması
Bu öğreticide , Go için Azure Identity modülündeki DefaultAzureCredential türü, Azure'da kimlik doğrulaması yapmak için kullanılır. Azure Kimlik modülü, Microsoft Entra Id ile OAuth'a odaklanan çeşitli kimlik bilgileri türleri sunar.
DefaultAzureCredential
yaygın olarak kullanılan kimlik bilgisi türlerini birleştirerek kimlik doğrulamasını basitleştirir. Azure tarafından dağıtılan uygulamaların kimliğini doğrulamak için kullanılan kimlik bilgisi türlerini geliştirme ortamında kimlik doğrulaması için kullanılan kimlik bilgileri türleriyle zincirler.
Önkoşullar
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- Go installed: Sürüm 1.18 veya üzeri
1. Go için Azure Identity modülünü yükleme
azidentity modülünü indirmek için aşağıdaki komutu çalıştırın:
go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity
2. Azure ile kimlik doğrulaması
Aşağıdaki tekniklerden biriyle Azure'da kimlik doğrulaması yapmak için kullanın DefaultAzureCredential
:
- 1. Seçenek: Ortam değişkenlerini tanımlama
- 2. Seçenek: İş yükü kimliğini kullanma
- Seçenek 3: Yönetilen kimlik kullanma
- 4. Seçenek: Azure CLI ile oturum açma
- 5. Seçenek: Azure Geliştirici CLI ile oturum açma
Farklı kimlik bilgileri türleri hakkında daha fazla bilgi edinmek için bkz . kimlik bilgisi türleri.
1. Seçenek: Ortam değişkenlerini tanımlama
üç DefaultAzureCredential
kimlik doğrulama türünü destekleyen ortam değişkenlerini kullanarak kimlik doğrulamasını yapılandırmak için türünü kullanır EnvironmentCredential
. Aşağıdaki kimlik doğrulama türlerinden birini seçin ve uygun ortam değişkenlerini tanımlayın.
Gizli dizili hizmet sorumlusu
Değişken adı | Değer |
---|---|
AZURE_CLIENT_ID |
Azure hizmet sorumlusunun uygulama kimliği |
AZURE_TENANT_ID |
Uygulamanın Microsoft Entra kiracısının kimliği |
AZURE_CLIENT_SECRET |
Azure hizmet sorumlusunun parolası |
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_SECRET="<service_principal_password>"
Sertifika ile hizmet sorumlusu
Değişken adı | Değer |
---|---|
AZURE_CLIENT_ID |
Microsoft Entra uygulamasının kimliği |
AZURE_TENANT_ID |
Uygulamanın Microsoft Entra kiracısının kimliği |
AZURE_CLIENT_CERTIFICATE_PATH |
Özel anahtar dahil pem veya PKCS12 sertifika dosyasının yolu |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
(isteğe bağlı) Sertifika dosyasının parolası |
export AZURE_TENANT_ID="<active_directory_tenant_id>"
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_CLIENT_CERTIFICATE_PATH="<azure_client_certificate_path>"
Kullanıcı adı ve parola
Değişken adı | Değer |
---|---|
AZURE_CLIENT_ID |
Microsoft Entra uygulamasının kimliği |
AZURE_USERNAME |
Kullanıcı adı (genellikle e-posta adresi) |
AZURE_PASSWORD |
Bu kullanıcının parolası |
export AZURE_CLIENT_ID="<service_principal_appid>"
export AZURE_USERNAME="<azure_username>"
export AZURE_PASSWORD="<azure_user_password>"
Yapılandırma önceki sırada denendi. Örneğin, hem istemci gizli dizisi hem de sertifika değerleri varsa, istemci gizli dizisi kullanılır. Hizmet sorumlularıyla kimlik doğrulaması hakkında uçtan uca bir öğretici için bkz . Hizmet sorumlusuyla Go için Azure SDK kimlik doğrulaması.
2. Seçenek: İş Yükü Kimliğini Kullanma
Microsoft Entra İş Yükü Kimliği, Kubernetes kümesindeki podların Kubernetes kimliği (hizmet hesabı) kullanmasını sağlar. Kubernetes belirteci verilir ve OIDC federasyonu Kubernetes uygulamalarının Microsoft Entra ID ile Azure kaynaklarına güvenli bir şekilde erişmesini sağlar.
için EnvironmentCredential
gerekli ortam değişkenleri yoksa WorkloadIdentityCredential DefaultAzureCredential
kullanarak kimlik doğrulaması yapmaya çalışır. WorkloadIdentityCredential
İş Yükü Kimliği web kancası tarafından ayarlanan ortam değişkenlerinden hizmet sorumlusu yapılandırmasını okumaya çalışır.
Seçenek 3: Yönetilen kimlik kullanma
Yönetilen kimlikler, geliştiricilerin kimlik bilgilerini yönetme gereksinimini ortadan kaldırır. Microsoft Entra kimlik doğrulamasını destekleyen kaynaklara bağlanırken, Azure'da barındırılan uygulamalar kimlik bilgileri yerine Microsoft Entra belirteçlerini kullanabilir. Yönetilen Kimlikler yerel geliştirmede desteklenmez.
için WorkloadIdentityCredential
gerekli ortam değişkenleri yoksa ManagedIdentityCredential DefaultAzureCredential
kullanarak kimlik doğrulaması yapmaya çalışır.
Kullanıcı tarafından atanan bir yönetilen kimlik kullanıyorsanız, ortam değişkenini AZURE_CLIENT_ID
ayarlamak için aşağıdaki komutu çalıştırın.
export AZURE_CLIENT_ID="<user_assigned_managed_identity_client_id>"
AZURE_CLIENT_ID
Ortam değişkeni ayarlanmamışsa, DefaultAzureCredentials
barındırma kaynağında bir tane etkinleştirildiyse sistem tarafından atanan yönetilen kimliği kullanarak kimlik doğrulamayı dener.
Azure tarafından barındırılan uygulamalarda yönetilen kimliklerle kimlik doğrulaması hakkında uçtan uca bir öğretici için bkz . Yönetilen kimlik kullanarak Go için Azure SDK ile kimlik doğrulaması.
4. Seçenek: Azure CLI ile oturum açma
Yerel geliştirmedeki sürtüşmeleri azaltmak için kullanıcı DefaultAzureCredential
Azure CLI'da oturum açtığında kimlik doğrulaması yapabilir.
Azure CLI'da oturum açmak için aşağıdaki komutu çalıştırın:
az login
5. Seçenek: Azure Geliştirici CLI ile oturum açma
Yerel geliştirmede, kullanıcı Azure CLI'da oturum açmadıysa, DefaultAzureCredential
kullanıcı Azure Geliştirici CLI'sinde oturum açtığında kimlik doğrulaması yapabilir.
Azure Geliştirici CLI'sinde oturum açmak için aşağıdaki komutu çalıştırın:
azd auth login
Azure'da çalışan uygulamalar için Azure Geliştirici CLI kimlik doğrulaması önerilmez.
3. ResourceClient kimliğini doğrulamak için DefaultAzureCredential kullanın
ile DefaultAzureCredential
Azure'da kimlik doğrulamasını test etmek için adlı azure-auth
yeni bir örnek Go modülü oluşturun:
Örnek Go kodunu test etmek ve çalıştırmak için bir dizin oluşturun, ardından bu dizine geçin.
Modül oluşturmak için go mod init komutunu çalıştırın:
go mod init azure-auth
Go için Gerekli Azure SDK modüllerini indirmek, derlemek ve yüklemek için go komutunu çalıştırın:
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity" go get "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription"
adlı
main.go
bir dosya oluşturun ve aşağıdaki kodu ekleyin: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 } }
değerini abonelik kimliğiniz ile değiştirin
<subscription ID>
.Uygulamayı derlemek ve çalıştırmak için komutunu
go run
çalıştırın:go run .
Not
Yerel sisteminizde olduğu gibi çalıştırmak için Azure CLI veya Azure Geliştirici CLI kullanarak Azure'da oturum açmanız gerekir.
DefaultAzureCredential ile Azure'da kimlik doğrulaması
kullanarak DefaultAzureCredential
Azure Identity modülüyle Azure'da kimlik doğrulaması yapmak için uygulamanızda aşağıdaki kodu kullanın:
// 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
}
Sorun giderme
Belirli kimlik bilgileri türlerinden gelen hataları çözme yönergeleri için sorun giderme kılavuzuna bakın.