Go için Azure SDK ile kimlik doğrulaması (eski)

Önemli

Bu makale Go için Azure SDK'nın eski sürümü için geçerlidir. En son modüllerde kimlik doğrulaması yapmak için Azure Kimlik paketini kullanın.

Go için Azure SDK, Azure ile kimlik doğrulama gerçekleştirmek için birden fazla yöntem sunar. Bu kimlik doğrulama türleri farklı kimlik doğrulama yöntemleriyle çağrılır. Bu makalede kullanabileceğiniz tür ve yöntemlerin yanı sıra uygulamanıza en uygun seçeneği belirleme yollarına yer verilmiştir.

Kullanılabilir kimlik doğrulama türleri ve yöntemleri

Go için Azure SDK, farklı kimlik bilgileri kümeleri kullanarak birkaç farklı türde kimlik doğrulaması sunar. Kimlik doğrulama türlerinden her biri, SDK’nın bu kimlik bilgilerini giriş olarak alması gibi, farklı kimlik doğrulama yöntemleri aracılığıyla kullanılabilir. Aşağıdaki tabloda uygulamanız tarafından kullanılması önerilen uygun kimlik doğrulama türleri açıklanmaktadır.

Authentication type Şunlar olduğunda önerilir...
Sertifika tabanlı kimlik doğrulaması Microsoft Entra kullanıcısı veya hizmet sorumlusu için yapılandırılmış bir X509 sertifikanız var. Daha fazla bilgi edinmek için bkz . Microsoft Entra Id'de sertifika tabanlı kimlik doğrulamasını kullanmaya başlama.
İstemci kimlik bilgileri Bu uygulamaya veya ait olduğu uygulama sınıfına ayarlı yapılandırılmış bir hizmet sorumlusuna sahipsiniz. Daha fazla bilgi için bkz. Azure CLI ile hizmet sorumlusu oluşturma.
Azure kaynakları için yönetilen kimlikler Uygulamanız, yönetilen kimlik ile yapılandırılmış bir Azure kaynağı üzerinde çalışıyor. Daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimlikler.
Cihaz belirteci Uygulamanız yalnızca etkileşimli olarak kullanılacak şekilde tasarlanmıştır. Kullanıcıların çok faktörlü kimlik doğrulaması etkinleştirilebilir. Kullanıcıların oturum açmak için bir web tarayıcısına erişimi olur. Daha fazla bilgi için bkz. Cihaz belirteci kimlik doğrulaması kullanma.
Kullanıcı adı/parola Başka herhangi bir kimlik doğrulama yöntemi kullanamayan etkileşimli bir uygulamaya sahipsiniz. Kullanıcılarınızın Microsoft Entra oturum açmaları için çok faktörlü kimlik doğrulaması etkinleştirilmemiş.

Önemli noktalar

  • İstemci kimlik bilgileri dışında bir kimlik doğrulama türü kullanıyorsanız, uygulamanızın Microsoft Entra Id'ye kayıtlı olması gerekir. Nasıl yapılacağını öğrenmek için bkz . Uygulamaları Microsoft Entra ID ile tümleştirme.
  • Özel gereksinimleriniz yoksa, kullanıcı adı/parola kimlik doğrulamasından kaçının. Kullanıcı tabanlı oturum açmanın uygun olduğu durumlarda cihaz belirteci kimlik doğrulaması genellikle bunun yerine kullanılabilir.

Bu kimlik doğrulama türleri farklı yöntemler üzerinden kullanılabilir.

Tüm kimlik doğrulama işlevleri ve türleri github.com/Azure/go-autorest/autorest/azure/auth paketinde kullanılabilir.

Dekont

Özel gereksinimleriniz yoksa, istemci tabanlı kimlik doğrulamadan kaçının. Bu kimlik doğrulama yöntemi hatalı uygulamalara sevk eder. Özellikle, istemci tabanlı kimlik doğrulama kullanmak kimlik bilgilerini doğrudan yazmayı cazip kılar. Kimlik doğrulama için özel kod yazmak da ayrıca kimlik doğrulama değişiklik gerektirdiğinde gelecek SDK sürümlerinde başarısız olabilir.

Ortam tabanlı kimlik doğrulama kullanma

Uygulamanızı denetimli bir ortamda çalıştırıyorsanız, ortam tabanlı kimlik doğrulama doğal bir tercihtir. Bu kimlik doğrulama yöntemiyle uygulamanızı çalıştırmadan önce kabuk ortamını yapılandırırsınız. Çalışma zamanında Go SDK'sı bu ortam değişkenlerini okuyarak Azure ile kimlik doğrulama gerçekleştirir.

Ortam tabanlı kimlik doğrulaması, cihaz belirteçleri dışında aşağıdaki sırayla değerlendirilen tüm kimlik doğrulama türleri için destek içerir:

  • İstemci kimlik bilgileri
  • Sertifika tabanlı kimlik doğrulaması
  • Kullanıcı adı/parola
  • Azure kaynakları için yönetilen kimlikler

Bir kimlik doğrulama türü ayarlanmamış değerlere sahipse veya reddedilirse SDK otomatik olarak bir sonraki kimlik doğrulama türünü dener. Denenecek tür kalmadığında SDK bir hata döndürür.

Aşağıdaki tabloda ortam tabanlı kimlik doğrulama tarafından desteklenen her bir kimlik doğrulama türüne ayarlanması gereken ortam değişkenlerinin ayrıntıları verilmektedir.

Authentication type Ortam değişkeni Açıklama
İstemci kimlik bilgileri AZURE_TENANT_ID Hizmet sorumlusunun ait olduğu Active Directory kiracısının kimliği.
AZURE_CLIENT_ID Hizmet sorumlusunun adı veya kimliği.
AZURE_CLIENT_SECRET Hizmet sorumlusuyla ilişkili gizli dizi.
Sertifika AZURE_TENANT_ID Sertifikanın birlikte kayıtlı olduğu Active Directory kiracısının kimliği.
AZURE_CLIENT_ID Sertifikayla ilişkili uygulama istemci kimliği.
AZURE_CERTIFICATE_PATH İstemci sertifikası dosyası yolu.
AZURE_CERTIFICATE_PASSWORD İstemci sertifikası için parola.
Kullanıcı Adı/Parola AZURE_TENANT_ID Kullanıcının ait olduğu Active Directory kiracısının kimliği.
AZURE_CLIENT_ID Uygulama istemci kimliği.
AZURE_USERNAME Oturum açmada kullanılan kullanıcı adı.
AZURE_PASSWORD Oturum açmada kullanılan parola.
Yönetilen kimlik Yönetilen kimlik doğrulaması için kimlik bilgilerine ihtiyaç duyulmaz. Uygulama, yönetilen kimlikleri kullanmak üzere yapılandırılmış bir Azure kaynağında çalışıyor olmalıdır. Ayrıntılar için bkz. Azure kaynakları için yönetilen kimlikler.

Varsayılan Azure genel bulut dışında başka bir bulut ya da yönetim uç noktasına bağlanmak için aşağıdaki ortam değişkenlerini ayarlayın. En yaygın nedenler, Azure Stack, farklı bir coğrafi bölgede bulut veya klasik dağıtım modeli kullanmaktır.

Ortam değişkeni Açıklama
AZURE_ENVIRONMENT Bağlanılacak bulut ortamı adı.
AZURE_AD_RESOURCE Bağlantı için kullanılacak Active Directory kaynak kimliği, yönetim uç noktanızın URI'si olarak.

Ortam tabanlı kimlik doğrulaması kullanırken, yetkilendirici nesnenizi almak için NewAuthorizerFromEnvironment işlevini çağırın. Bu nesne daha sonra Azure’a erişmesine izin vermek için istemcilerin Authorizer özelliğinde ayarlanır.

import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := auth.NewAuthorizerFromEnvironment()

Azure Stack’te Kimlik Doğrulaması

Azure Stack’te kimlik doğrulaması yapmak için aşağıdaki değişkenleri ayarlamanız gerekir:

Ortam değişkeni Açıklama
AZURE_AD_ENDPOINT Active Directory uç noktası.
AZURE_AD_RESOURCE Active Directory kaynak kimliği.

Bu değişkenler Azure Stack meta data verilerinden alınabilir. Meta verileri almak için Azure Stack ortamınızda bir web tarayıcısı açıp şu URL’yi kullanın: (ResourceManagerURL)/metadata/endpoints?api-version=1.0

ResourceManagerURL Azure Stack dağıtımınızın bölge adı, makine adı ve dış tam etki alanı adına (FQDN) göre değişiklik gösterebilir:

Ortam ResourceManagerURL
Geliştirme Seti https://management.local.azurestack.external/
Tümleşik Sistemler https://management.(region).ext-(machine-name).(FQDN)

Azure Stack üzerinde Go için Azure SDK’sını kullanma hakkında daha fazla bilgi için bkz. Azure Stack’te GO ile API sürümü profillerini kullanma

Dosya tabanlı kimlik doğrulama kullanma

Dosya tabanlı kimlik doğrulama yönteminde Azure CLI tarafından oluşturulan bir dosya biçimi kullanılır. Bu dosyayı --sdk-auth parametresiyle yeni bir hizmet sorumlusu oluştururken kolaylıkla oluşturabilirsiniz. Dosya tabanlı kimlik doğrulama kullanmayı planlıyorsanız, hizmet sorumlusu oluştururken bu bağımsız değişkenin sağlandığından emin olun. CLI çıktıyı stdout öğesine yazdırdığından, çıktıyı bir dosyaya yeniden yönlendirin.

az ad sp create-for-rbac --role Contributor \
    --scopes /subscriptions/<subscription_id> \
    --sdk-auth > azure.auth

AZURE_AUTH_LOCATION ortam değişkenini yetkilendirme dosyasının bulunduğu konuma ayarlayın. Ortam değişkeni uygulama tarafından okunur ve içindeki kimlik bilgileriyse ayrıştırılır. Yetkilendirme dosyasını çalışma zamanında seçmeniz gerekiyorsa, os.Setenv işlevini kullanarak programın ortamını işleyin.

Kimlik doğrulama bilgilerini yüklemek için NewAuthorizerFromFile işlevini çağırın. Ortam tabanlı yetkilendirmeden farklı olarak, dosya tabanlı yetkilendirme bir kaynak uç noktası gerektirir.

import "github.com/Azure/go-autorest/autorest/azure/auth"
authorizer, err := NewAuthorizerFromFile(azure.PublicCloud.ResourceManagerEndpoint)

Hizmet sorumlularını kullanma ve erişim izinlerini yönetmeyle ilgili daha fazla bilgi için bkz. Azure CLI ile hizmet sorumlusu oluşturma.

Cihaz belirteci kimlik doğrulaması kullanma

Kullanıcıların etkileşimli olarak oturum açmasını istiyorsanız, en iyi yol cihaz belirteci kimlik doğrulamasıdır. Bu kimlik doğrulama akışı, kullanıcıya bir Microsoft oturum açma sitesine yapıştırmak için bir belirteç geçirir ve burada bir Microsoft Entra hesabıyla kimlik doğrulaması yapar. Bu kimlik doğrulama yöntemi, standart kullanıcı adı/parola kimlik doğrulamasının aksine çok faktörlü kimlik doğrulaması etkinleştirilmiş hesapları destekler.

Cihaz belirteci kimlik doğrulamasını kullanmak için, NewDeviceFlowConfig işleviyle bir DeviceFlowConfig yetkilendiricisi oluşturun. Kimlik doğrulama işlemini başlatmak için sonuç nesnesinin üzerinde Authorizer işlevini çağırın. Cihaz akışı kimlik doğrulaması, tüm kimlik doğrulama akışı tamamlanana kadar program yürütmesini engeller.

import "github.com/Azure/go-autorest/autorest/azure/auth"
deviceConfig := auth.NewDeviceFlowConfig(applicationID, tenantID)
authorizer, err := deviceConfig.Authorizer()

Kimlik doğrulama istemcisini kullanma

Belirli bir türde kimlik doğrulama gerekiyorsa ve programınızın kullanıcıdan kimlik doğrulama bilgilerini yükleme işini yapmasını kabul ediyorsanız, auth.AuthorizerConfig arabirimiyle uyumlu olan herhangi bir istemciyi kullanabilirsiniz. Aşağıdaki durumlarda bu arabirimi uygulayan bir tür kullanabilirsiniz:

  • Etkileşimli program yazma
  • Özel yapılandırma dosyaları kullanma
  • Yerleşik kimlik doğrulama yöntemini kullanmanızı engelleyen bir gereksinime sahip olma

Uyarı

Azure kimlik bilgilerini asla bir uygulamaya doğrudan yazmayın. Uygulama ikili dosyasına gizli diziler koymak, uygulama çalışsa da çalışmasa da saldırganın bu gizli dizileri ayıklamasını kolaylaştırır. Bu kimlik bilgilerinin yetkilendirildiği tüm Azure kaynaklarını tehlikeye atar!

Aşağıdaki tabloda SDK’da AuthorizerConfig arabirimiyle uyumlu olan türler listelenmiştir.

Authentication type Yetkilendirici türü
Sertifika tabanlı kimlik doğrulaması ClientCertificateConfig
İstemci kimlik bilgileri ClientCredentialsConfig
Azure kaynakları için yönetilen kimlikler MSIConfig
Kullanıcı adı/parola UsernamePasswordConfig

İlişkili olduğu New işleviyle birlikte bir doğrulayıcı oluşturun ve ardından kimlik doğrulama için sonuç nesnesi üzerinde Authorize işlevini çağırın. Örneğin, sertifika tabanlı kimlik doğrulaması kullanmak için:

import "github.com/Azure/go-autorest/autorest/azure/auth"
certificateAuthorizer := auth.NewClientCertificateConfig(certificatePath, certificatePassword, clientID, tenantID)
authorizerToken, err := certificateAuthorizer.Authorizer()

Sonraki adımlar