Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Kimlik kitaplığı, Azure Core kitaplığının TokenCredential arabirimini uygulayan genel türler olan kimlik doğrulama bilgilerini sağlar. Kimlik bilgisi, Microsoft Entra Id'den erişim belirteci almak için ayrı bir kimlik doğrulama akışını temsil eder. Bu kimlik bilgileri, denenecek sıralı bir kimlik doğrulama mekanizması dizisi oluşturmak için birbirine zincirlenebilir.
Zincirlenmiş kimlik bilgileri nasıl çalışır?
Çalışma zamanında, kimlik bilgisi zinciri, dizinin ilk kimlik bilgisini kullanarak kimlik doğrulaması yapmaya çalışır. Bu kimlik bilgisi bir erişim belirteci alamazsa, bir erişim belirteci başarıyla alınana kadar dizideki bir sonraki kimlik bilgisi denenir ve bu şekilde devam edilir. Aşağıdaki sıralı diyagramda bu davranış gösterilmektedir:
kimlik bilgisi zinciri sırasını gösteren
Kimlik bilgisi zincirlerini neden kullanmalısınız?
Zincirlenmiş kimlik bilgileri aşağıdaki avantajları sunabilir:
Ortam tanıma: Uygulamanın çalıştığı ortama göre en uygun kimlik bilgilerini otomatik olarak seçer. Bu olmadan, aşağıdaki gibi bir kod yazmanız gerekir:
// Set up credential based on environment (Azure or local development) if os.Getenv("WEBSITE_HOSTNAME") != "" { clientID := azidentity.ClientID("abcd1234-...") opts := azidentity.ManagedIdentityCredentialOptions{ID: clientID} credential, err = azidentity.NewManagedIdentityCredential(&opts) if err != nil { // TODO: handle error } } else { // Use Azure CLI Credential credential, err = azidentity.NewAzureCLICredential(nil) if err != nil { // TODO: handle error } }Sorunsuz geçişler: Uygulamanız, kimlik doğrulama kodunu değiştirmeden yerel geliştirmeden hazırlama veya üretim ortamınıza geçebilir.
Geliştirilmiş dayanıklılık: Önceki kimlik bilgileri bir erişim belirteci elde edemediğinde, sonraki kimlik bilgilerine geçen bir yedekleme mekanizması içerir.
Zincirleme kimlik bilgisi nasıl seçilir?
Go ile kimlik bilgisi zincirleme için iki seçenek vardır:
-
Önceden yapılandırılmış bir zincirkullanın:
DefaultAzureCredentialtürü tarafından uygulanan önceden yapılandırılmış zinciri kullanın. Bu yaklaşım için DefaultAzureCredential overview bölümüne bakın. - Özel kimlik bilgileri zinciri oluşturma: Boş bir zincirle başlayın ve yalnızca ihtiyacınız olanları ekleyin. Bu yaklaşım için ChainedTokenCredential genel bakış bölümüne bakın.
DefaultAzureCredential'a genel bakış
DefaultAzureCredential, belirli bir görüşe sahip, önceden yapılandırılmış bir kimlik bilgileri zinciridir. En yaygın kimlik doğrulama akışları ve geliştirici araçlarının yanı sıra birçok ortamı destekleyecek şekilde tasarlanmıştır. Grafik biçiminde, temel zincir şöyle görünür:
DefaultAzureCredential kimlik doğrulama akışını gösteren
DefaultAzureCredential kimlik bilgilerini deneme sırası aşağıdadır.
| Sipariş | Kimlik doğrulama bilgisi | Açıklama |
|---|---|---|
| 1 | Çevre | Uygulama hizmet sorumlusunun (uygulama kullanıcısı) uygulama için yapılandırılıp yapılandırılmadığını belirlemek için DefaultAzureCredential uygulamanın Kimliğini Azure'da doğrulamak için bu değerleri kullanır. Bu yöntem genellikle sunucu ortamlarında kullanılır, ancak yerel olarak geliştirirken de kullanılabilir. |
| 2 | İş Yükü Kimliği | Uygulama İş Yükü Kimliği etkinleştirilmiş bir Azure konağına dağıtıldıysa bu hesabın kimliğini doğrula. |
| 3 | Yönetilen Kimlik | Uygulama Yönetilen Kimlik etkinleştirilmiş bir Azure konağına dağıtılırsa, bu Yönetilen Kimliği kullanarak uygulamanın kimliğini Azure'da doğrularsınız. |
| 4 | Azure CLI | Geliştirici Azure CLI'nın az login komutunu kullanarak Azure'da kimlik doğrulaması yaptıysa, aynı hesabı kullanarak uygulamanın kimliğini Azure'da doğrular. |
| 5 | Azure Geliştirici CLI'sı | Geliştirici, Azure Geliştirici CLI'sının azd auth login komutunu kullanarak Azure'da kimlik doğrulaması yaptıysa, bu hesapla kimlik doğrulamasından geçin. |
| 6 | Azure PowerShell | Geliştirici Azure PowerShell'in cmdlet'ini kullanarak Azure'da Connect-AzAccount kimlik doğrulaması yaptıysa, bu hesapla kimlik doğrulamasından geçin. |
En basit haliyle, DefaultAzureCredential parametresiz sürümünü aşağıdaki gibi kullanabilirsiniz:
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
// create a credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
// TODO: handle error
}
// create a Blob service client
accountURL := "https://<my_account_name>.blob.core.windows.net"
client, err := azblob.NewClient(accountURL, credential, nil)
if err != nil {
// TODO: handle error
}
DefaultAzureCredential'ı özelleştirme
Aşağıdaki bölümlerde, zincire hangi kimlik bilgilerinin dahil olduğunu denetlemeye yönelik stratejiler açıklanmaktadır.
Kimlik bilgisi türü kategorisini dışlama
Tüm Developer tool veya Deployed service kimlik bilgilerini dışlamak için ortam değişkenini AZURE_TOKEN_CREDENTIALSprod sırasıyla veya devolarak ayarlayın. değeri prod kullanıldığında, temel alınan kimlik bilgisi zinciri aşağıdaki gibi görünür:
değeri dev kullanıldığında, zincir aşağıdaki gibi görünür:
Önemli
Ortam AZURE_TOKEN_CREDENTIALS değişkeni 1.10.0 ve sonraki modül sürümlerinde desteklenir azidentity .
Ortam değişkeninin tanımlandığından emin olmak için seçeneğini RequireAzureTokenCredentials olarak trueayarlayın:
opts := azidentity.DefaultAzureCredentialOptions{RequireAzureTokenCredentials: true}
credential, err := azidentity.NewDefaultAzureCredential(&opts)
if err != nil {
// TODO: handle error
}
Belirli bir kimlik bilgilerini kullanma
Biri dışındaki tüm kimlik bilgilerini dışlamak için ortam değişkenini AZURE_TOKEN_CREDENTIALS kimlik bilgisi adına ayarlayın. Örneğin, DefaultAzureCredential'yi AzureCLICredential olarak ayarlayarak AZURE_TOKEN_CREDENTIALS zincirini AzureCLICredential olarak azaltabilirsiniz. Dize karşılaştırması büyük/küçük harfe duyarsız bir şekilde gerçekleştirilir. Ortam değişkeni için geçerli dize değerleri şunlardır:
AzureCLICredentialAzureDeveloperCLICredentialAzurePowerShellCredentialEnvironmentCredentialManagedIdentityCredentialWorkloadIdentityCredential
Önemli
AZURE_TOKEN_CREDENTIALS ortam değişkeni, azidentity modül sürümleri 1.11.0 ve sonrasında bireysel kimlik bilgisi adlarını destekler.
Ortam değişkeninin tanımlandığından emin olmak için seçeneğini RequireAzureTokenCredentials olarak trueayarlayın:
opts := azidentity.DefaultAzureCredentialOptions{RequireAzureTokenCredentials: true}
credential, err := azidentity.NewDefaultAzureCredential(&opts)
if err != nil {
// TODO: handle error
}
ChainedTokenCredential'a genel bakış
ChainedTokenCredential, uygulamanızın gereksinimlerine uygun kimlik bilgileri eklediğiniz boş bir zincirdir. Örneğin:
azCLI, err := azidentity.NewAzureCLICredential(nil)
if err != nil {
// handle error
}
azdCLI, err := azidentity.NewAzureDeveloperCLICredential(nil)
if err != nil {
// handle error
}
chain, err := azidentity.NewChainedTokenCredential([]azcore.TokenCredential{azCLI, azdCLI}, nil)
if err != nil {
// handle error
}
Yukarıdaki kod örneği, iki kimlik bilgisi içeren uyarlanmış bir kimlik bilgisi zinciri oluşturur.
AzureCLICredential önce denendi, ardından gerekirse AzureDeveloperCLICredential. Grafik biçiminde zincir şöyle görünür:
Azure CLI ve Azure Geliştirici CLI kimlik bilgilerinden oluşan ChainedTokenCredential örneğinin kimlik doğrulama akışını gösteren
Bahşiş
İyileştirilmiş performans için ChainedTokenCredential kimlik bilgisi sıralamasını en az kullanılan kimlik bilgilerine kadar iyileştirin.
DefaultAzureCredential için kullanım kılavuzu
DefaultAzureCredential şüphesiz Azure Kimlik kitaplığını kullanmaya başlamanın en kolay yoludur, ancak bu kolaylıktan ödünler alınıyor. Uygulamanızı Azure'a dağıttığınızda uygulamanın kimlik doğrulama gereksinimlerini anlamanız gerekir. Bu nedenle, DefaultAzureCredentialTokenCredentialgibi belirli bir ManagedIdentityCredential uygulamasıyla değiştirin.
Bunun nedeni şu şekildedir:
- Hata ayıklama zorlukları: Kimlik doğrulaması başarısız olduğunda, hata ayıklamak ve sorunlu kimlik bilgilerini belirlemek zor olabilir. Bir kimlik bilgisinden diğerine ilerleme durumunu ve her birinin başarı/başarısızlık durumunu görmek için günlüğe kaydetmeyi etkinleştirmeniz gerekir. Daha fazla bilgi için bkz. Zincirlenmiş kimlik bilgilerini hata ayıklama.
-
Performans ek yükü: Birden çok kimlik bilgilerini sıralı olarak deneme işlemi performans ek yüküne neden olabilir. Örneğin, yerel bir geliştirme makinesinde çalışırken yönetilen kimlik kullanılamaz. Sonuç olarak,
ManagedIdentityCredentialilgiliexcludeön ekli özelliği aracılığıyla açıkça devre dışı bırakılmadığı sürece yerel geliştirme ortamında her zaman başarısız olur. Beklenmeyen davranış :belirli ortam değişkenlerinin varlığını denetler. Birinin konak makinede sistem düzeyinde bu ortam değişkenlerini eklemesi veya değiştirmesi mümkündür. Bu değişiklikler genel olarak uygulanır ve bu nedenle bu makinede çalışan herhangi bir uygulamada çalışma zamanında DefaultAzureCredentialdavranışını değiştirir.
Zincirli kimlik bilgisi üzerinde hata ayıklama
Beklenmeyen bir sorunu tanılamak veya zincirlenen kimlik bilgilerinin ne yaptığını anlamak için uygulamanızda log kaydını etkinleştirin. İsteğe bağlı olarak günlükleri yalnızca Azure Identity istemci kitaplığından yayılan olaylara göre filtreleyin. Örneğin:
import azlog "github.com/Azure/azure-sdk-for-go/sdk/azcore/log"
// print log output to stdout
azlog.SetListener(func(event azlog.Event, s string) {
fmt.Println(s)
})
// include only azidentity credential logs
azlog.SetEvents(azidentity.EventAuthentication)
Belirli kimlik bilgileri türlerinden gelen hataları çözme yönergeleri için