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.
- Ortam tabanlı kimlik doğrulama kimlik bilgilerini doğrudan programın ortamından okur.
- Dosya tabanlı kimlik doğrulama hizmet sorumlusu kimlik bilgilerini içeren bir dosya yükler.
- İstemci tabanlı kimlik doğrulama, kodda bir nesne kullanır ve program yürütme sırasında sizi kimlik bilgilerini sağlama görevinden sorumlu hale getirir.
- Cihaz belirteci kimlik doğrulama, kullanıcının bir web tarayıcısından etkileşimli olarak oturum açmasını gerektirir.
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin