Aracılığıyla paylaş


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 :

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 DefaultAzureCredentialkullanarak 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 DefaultAzureCredentialkullanarak 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 DefaultAzureCredentialAzure'da kimlik doğrulamasını test etmek için adlı azure-auth yeni bir örnek Go modülü oluşturun:

  1. Örnek Go kodunu test etmek ve çalıştırmak için bir dizin oluşturun, ardından bu dizine geçin.

  2. Modül oluşturmak için go mod init komutunu çalıştırın:

    go mod init azure-auth
    
  3. 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"
    
  4. 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> .

  5. 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 DefaultAzureCredentialAzure 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.

Sonraki adımlar