Uygulama kimlik doğrulama yöntemleri
Şunlar için geçerlidir: ✅Microsoft Fabric✅Azure Veri Gezgini
Bu belge, Kusto istemci kitaplıkları için kullanılabilen birincil kimlik doğrulama yöntemlerine genel bir bakış sağlar. Sağlanan kod parçacıkları, kusto kümeleriyle sorunsuz etkileşime olanak tanıyarak kullanıcıların ve uygulamaların kimliğini doğrulamak için farklı yaklaşımlar gösterir. Her yöntem farklı senaryolar ve gereksinimler için uygundur.
Mümkün olduğunda, kullanıcı adı ve parola kimlik doğrulaması veya bağlantı dizeleri yerine yönetilen kimlikler kullanmanızı öneririz. Yönetilen kimlikler, kimlik doğrulamasına daha güvenli ve kolay bir yaklaşım sağlar.
Bu makalede, aşağıdakileri kullanarak kimlik doğrulaması yapmayı öğreneceksiniz:
Uygulama Sorumlusu
- Yönetilen kimlik doğrulaması
- Certificate-Based kimlik doğrulaması
- Uygulama anahtarı kimlik doğrulaması
Kullanıcı Sorumlusu
- etkileşimli kullanıcı oturum açma kimlik doğrulaması
- Azure Command-Line Arabirimi (CLI) kimlik doğrulaması
- Cihaz kodu kimlik doğrulaması
Özel Belirteç Sağlayıcısı
Önkoşullar
Uygulama Sorumlusu kimlik doğrulama yöntemleri
Bu bölüm, bir uygulama sorumlusu kullanarak kimlik doğrulamanın farklı yöntemlerini kapsar.
Yönetilen Kimlik Doğrulaması
İki tür yönetilen kimlik vardır: sistem tarafından atanan ve kullanıcı tarafından atanan. Sistem tarafından atanan yönetilen kimliklerin yaşam döngüleri onları oluşturan kaynağa bağlıdır. Bu kimlik yalnızca bir kaynakla sınırlıdır. Kullanıcı tarafından atanan yönetilen kimlikler birden çok kaynakta kullanılabilir. Daha fazla bilgi için Yönetilen Kimlikler'e bakınız.
| Aşağıdaki örneklerde <QueryEndpointUri>
ve <ManagedIdentityClientId>
değerlerini kendi değerlerinizle değiştirin.
Sistem tarafından atanan yönetilen kimlik:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadSystemManagedIdentity();
Kullanıcı tarafından atanan yönetilen kimlik. Kimlik istemci kimliğini veya nesne kimliğini aşağıdaki gibi kullanın:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadUserManagedIdentity(<ManagedIdentityClientId>);
Önemli
- Yönetilen Kimlik kaynağının nesnesine veya sorumlusuna Kusto kümesine erişmek için bir rol atanmalıdır. Bunu Kusto kümesi kaynak sayfanızdaki Azure portalında Güvenlik + ağ>İzinleraltında yapabilirsiniz. Yönetilen Kimlik doğrudan Kusto kümesine eklenmemelidir.
- Yönetilen Kimlik kimlik doğrulaması yerel geliştirme ortamlarında desteklenmez. Yönetilen Kimlik kimlik doğrulamasını test etmek için uygulamayı Azure'a dağıtın veya yerel olarak çalışırken farklı bir kimlik doğrulama yöntemi kullanın.
Sertifika tabanlı kimlik doğrulaması
Sertifikalar, belirteç isteğinde bulunurken bir uygulamanın kimliğini doğrulamak için gizli bilgi görevi görebilir. Sertifikayı yüklemek için makinenin yerel kimlik bilgileri deposundan veya diskten yükleme gibi çeşitli yöntemler vardır.
| Aşağıdaki örneklerde, <QueryEndpointUri>
, <ApplicationId>
, <CertificateSubjectName>
, <CertificateIssuerName>
, <CertificateThumbprint>
, <CertificateObject>
, <AuthorityId>
, <PemPublicCertificate>
, <PemPrivateKey>
, <privateKeyPemFilePath>
, <PemCertificatePath>
ve <EnableSubjectAndIssuerAuth>
kendi değerlerinizle değiştirin.
Makinenin yerel sertifika deposundaki sertifika yalnızca C# kullanılarak desteklenir:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadApplicationSubjectAndIssuerAuthentication(<ApplicationId>, <CertificateSubjectName>, <CertificateIssuerName>, <AuthorityId>);
Önemli
Konu adı ve veren kullanılırken sertifikanın yerel makinenin sertifika deposuna yüklenmesi gerekir.
Diskteki bir dosya, önbellek veya Azure Key Vault gibi güvenli depo gibi rastgele bir kaynaktan alınan sertifika. Sertifika nesnesi bir özel anahtar içermelidir:
X509Certificate2 certificate = <CertificateObject>; var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadApplicationCertificateAuthentication(<ApplicationId>, certificate, <AuthorityId>);
Daha fazla bilgi için bkz. Kusto bağlantı dizelerini.
Önemli
Azure Key Vault'tan sertifika yüklemek için Azure.Security.KeyVault.Certificatesistemcikullanabilirsiniz.
Uygulama anahtarı kimlik doğrulaması
Uygulama parolası olarak da bilinen uygulama anahtarı, bir uygulamanın belirteç isteğinde bulunurken kimlik doğrulaması yapmak ve kimliğini kanıtlamak için kullandığı gizli dizidir. Uygulamanın korumalı kaynaklara erişmesi için bir kimlik bilgisi biçimi görevi görür. Uygulama anahtarı genellikle kimlik sağlayıcısı veya yetkilendirme sunucusu tarafından oluşturulur ve atanır. Hassas bilgilere veya eylemlere yetkisiz erişimi önlemek için uygulama anahtarını güvenli bir şekilde yönetmek ve korumak önemlidir.
| Aşağıdaki örneklerde, <QueryEndpointUri>
, <ApplicationId>
, <ApplicationKey>
, <AuthorityId>
ve <AuthorityId>
değerlerini kendi değerlerinizle değiştirin.
Uygulama anahtarı:
- C#
- Python
- TypeScript
-
Java
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadApplicationKeyAuthentication(<ApplicationId>, <ApplicationKey>, <AuthorityId>);
Uygulama anahtarıyla bağlantı dizesi:
- C#
- Python
- TypeScript
-
Java
var connectionString = "Data Source=<QueryEndpointUri>;Initial Catalog=NetDefaultDB;AAD Federated Security=True;AppClientId=<ApplicationId>;AppKey=<ApplicationKey>;Authority Id=<AuthorityId>;" var kcsb = new KustoConnectionStringBuilder(connectionString);
Önemli
Kodunuzda gizli bilgileri veya anahtarları doğrudan koda yazmak kötü bir uygulama olarak kabul edilir. Kimlik doğrulaması kimlik bilgileri gibi hassas bilgilerin düz metin olarak depolanması güvenlik açıklarına yol açabilir. Hassas bilgileri şifrelenmiş tutmanızı veya güvenli bir şekilde bir anahtar kasasında depolamanızı öneririz. Şifreleme veya anahtar kasası kullanarak gizli dizilerinizin korunduğundan ve yalnızca yetkili kullanıcılar veya uygulamalar tarafından erişilebilir olduğundan emin olabilirsiniz.
Kullanıcı Sorumlusu kimlik doğrulama yöntemleri
Bu bölüm, kullanıcı sorumlusu kullanarak kimlik doğrulamanın farklı yöntemlerini kapsar.
Etkileşimli kullanıcı oturum açma kimlik doğrulaması
Bu kimlik doğrulama yöntemi, Kusto ile güvenli bir bağlantı kurmak için kullanıcının kimlik bilgilerini kullanır. yöntemi, kullanıcıdan kimlik doğrulama işlemini tamamlamak için kullanıcı adını ve parolasını girmesi istendiği bir web tarayıcısı açar.
| Aşağıdaki örneklerde, <QueryEndpointUri>
,<AuthorityId>
ve <AuthorityId>
değerlerini kendi değerlerinizle değiştirin.
Etkileşimli kullanıcı oturum açma:
- C#
- Python
- TypeScript
- Java
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadUserPromptAuthentication();
Azure Command-Line Arabirimi (CLI) kimlik doğrulaması
Bu kimlik doğrulama yöntemi, kullanıcının kimliğini doğrulamak ve belirteç almak için Azure Command-Line Arabirimi'ni (CLI) kullanır.
az login
komutunu çalıştırmak, kullanıcının güvenli bir şekilde bağlantı kurabileceği ve kimlik doğrulaması amacıyla gerekli belirteci alabildiği anlamına gelir. Belirteç Azure CLI önbelleğinde kullanılamıyorsa ve interactive
parametresi true
olarak ayarlandıysa kullanıcıdan oturum açması istenebilir. Daha fazla bilgi için bkz. Azure Command-Line Arayüz (CLI).
| Aşağıdaki örnekte, <QueryEndpointUri>
değerini kendi değerinizle değiştirin.
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadAzCliAuthentication(interactive: true);
Önemli
Bu yöntem yalnızca .NET Framework uygulamaları için desteklenir.
Cihaz kodu kimlik doğrulaması
Bu yöntem, IoT cihazları ve sunucu terminalleri gibi oturum açma için uygun bir kullanıcı arabirimi olmayan cihazlar için tasarlanmıştır. Kullanıcıya akıllı telefon gibi farklı bir cihaz kullanarak kimlik doğrulaması için bir kod ve URL sağlar. Bu etkileşimli yöntem, kullanıcının tarayıcı üzerinden oturum açmasını gerektirir.
| Aşağıdaki örnekte, <QueryEndpointUri>
değerini kendi değerinizle değiştirin.
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadDeviceCodeAuthentication((msg, uri, code) =>
{
// The callback is used to display instructions to the user on how to authenticate using the device code
Console.WriteLine("Device Code Message: {0}", msg);
Console.WriteLine("Device Code Uri: {0}", uri);
Console.WriteLine("Device Code: {0}", code);
return Task.CompletedTask;
});
Önemli
Cihaz kodu kimlik doğrulaması kiracı Koşullu Erişim İlkeleri tarafından engellenebilir. Bu durumda alternatif bir kimlik doğrulama yöntemi seçin.
Özel jeton sağlayıcısı kimlik doğrulama yöntemleri
Bu bölüm, özel belirteç sağlayıcısı kullanarak kimlik doğrulamanın farklı yöntemlerini kapsar.
Federasyonla Yönetilen Kimlik kimlik doğrulaması için özel belirteç sağlayıcısı
Özel belirteç sağlayıcıları, kimlik doğrulaması amacıyla bir Microsoft Entra ID belirteci almak için kullanılabilir. Aşağıdaki örnek, federatif yönetilen kimlik kullanarak belirteç almak için özel belirteç sağlayıcısının nasıl kullanılacağını göstermektedir. Kodu uygulamanızın gereksinimlerine uyacak şekilde değiştirebilirsiniz.
| Aşağıdaki örnekte, <AuthorityIdId>
, <ApplicationId>
, <ManagedIdentityClientId>
ve <QueryEndpointUri>
değerlerini kendi değerlerinizle değiştirin.
public class TokenProvider
{
private ClientAssertionCredential m_clientAssertion;
private TokenRequestContext m_tokenRequestContext;
public TokenProvider(string queryEndpointUri)
{
string resourceId = null;
try
{
// Get the appropiate resource id by querying the metadata
var httpClient = new HttpClient();
var response = httpClient.GetByteArrayAsync($"{queryEndpointUri}/v1/rest/auth/metadata").Result;
var json = JObject.Parse(Encoding.UTF8.GetString(response));
resourceId = json["AzureAD"]?["KustoServiceResourceId"]?.ToString();
// Append scope to resource id
resourceId = !string.IsNullOrWhiteSpace(resourceId) ? $"{resourceId}/.default" : null;
}
catch { /* Handle exception */}
m_tokenRequestContext = new TokenRequestContext(new string[] { resourceId ?? "https://kusto.kusto.windows.net/.default" });
// Create client assertion credential to authenticate with Kusto
m_clientAssertion = new ClientAssertionCredential
(
<AuthorityIdId>,
<ApplicationId>,
async (token) =>
{
// Get Managed Identity token
var miCredential = new ManagedIdentityCredential(<ManagedIdentityClientId>);
var miToken = await miCredential.GetTokenAsync(new TokenRequestContext(new[] {
"api://AzureADTokenExchange/.default"
})).ConfigureAwait(false);
return miToken.Token;
}
);
}
public async Task<string> GetTokenAsync()
{
var accessToken = await m_clientAssertion.GetTokenAsync(m_tokenRequestContext).ConfigureAwait(false);
return accessToken.Token;
}
}
var tokenProvider = new TokenProvider(<QueryEndpointUri>);
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadTokenProviderAuthentication(
async () =>
{
return await tokenProvider.GetTokenAsync();
});
Azure TokenCredential kimlik doğrulamayı kullanma
TokenCredential
'den devralan ve GetToken
yöntemini uygulayan bir sınıf oluşturarak özel belirteç sağlayıcısı oluşturun. Alternatif olarak, DefaultAzureCredential
gibi mevcut bir belirteç sağlayıcısını kullanabilirsiniz. Bu yöntem, özel belirteç sağlayıcısı gerektiğinde farklı kimlik doğrulama senaryoları için esneklik sağlar.
Yönetilen Kimlik kimlik doğrulaması kullanan üretim kodunu desteklemek veya Visual Studio veya Azure CLI kullanarak kodu test etme için DefaultAzureCredential
kullanabilirsiniz.
DefaultAzureCredential
farklı kimlik doğrulama yöntemleri kullanacak şekilde yapılandırılabilir.
| Aşağıdaki örnekte, <QueryEndpointUri>
ve <ManagedIdentityClientId>
değerlerini kendi değerlerinizle değiştirin.
var credentialProvider = new DefaultAzureCredential(new DefaultAzureCredentialOptions {
ManagedIdentityClientId = <ManagedIdentityClientId>
});
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadAzureTokenCredentialsAuthentication(credentialProvider);
Not
DefaultAzureCredential
, Azure hizmetlerinde kimlik doğrulaması yapmak için kullanılır.
Belirteç almak için birden çok kimlik doğrulama yöntemi dener ve Yönetilen Kimlik, Visual Studio, Azure CLI ve daha fazlası ile çalışacak şekilde yapılandırılabilir.
Bu kimlik bilgisi, farklı kimlik doğrulama yöntemlerini kullanacak şekilde ayarlanabildiği için hem test hem de üretim ortamları için uygundur.
Daha fazla bilgi için bkz. DefaultAzureCredential Class.