Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer-
Dit artikel bevat een overzicht van de primaire verificatiemethoden die beschikbaar zijn voor de Kusto-clientbibliotheken. De codefragmenten tonen verschillende manieren om gebruikers en apps te verifiëren, waardoor naadloze interactie met Kusto-clusters mogelijk is. Elke methode past bij verschillende scenario's en vereisten.
Gebruik waar mogelijk beheerde identiteiten in plaats van gebruikersnaam- en wachtwoordverificatie of verbindingsreeksen. Beheerde identiteiten bieden een veiligere en gestroomlijndere benadering van verificatie.
In dit artikel leert u hoe u zich verifieert met behulp van:
Application principal
Verificatie van beheerde identiteit
Gebruikershoofdrol
- interactieve aanmeldingsverificatie van gebruikers
- Azure Command-Line Interface (CLI) authenticatie
- verificatie van apparaatcode
Aangepaste token-provider
Voorwaarden
- Uw ontwikkelomgeving instellen voor het gebruik van de Kusto-clientbibliotheek
Verificatiemethoden voor toepassingsprincipaal
In deze sectie worden de verschillende verificatiemethoden beschreven met behulp van een toepassingsprincipaal.
Verificatie van beheerde identiteit
Er zijn twee typen beheerde identiteiten: door het systeem toegewezen en door de gebruiker toegewezen. Door het systeem toegewezen beheerde identiteiten hebben hun levenscyclus gekoppeld aan de resource waarmee ze worden gemaakt. Deze identiteit is beperkt tot één bron. Door de gebruiker toegewezen beheerde identiteiten kunnen worden gebruikt voor meerdere resources. Zie Beheerde identiteitenvoor meer informatie.
Vervang <QueryEndpointUri> en <ManagedIdentityClientId> door uw eigen waarden in de volgende voorbeelden.
Door het systeem toegewezen beheerde identiteit:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadSystemManagedIdentity();Door de gebruiker toegewezen beheerde identiteit. Gebruik de identiteitsclient-ID of object-ID als volgt:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadUserManagedIdentity(<ManagedIdentityClientId>);
Belangrijk
- Aan het object of de principal-id van de beheerde identiteitsresource moet een rol worden toegewezen voor toegang tot het Kusto-cluster. U kunt een rol toewijzen in Azure Portal op de resourcepagina van uw Kusto-cluster onder Machtigingen voor beveiliging en netwerken>. Beheerde identiteit mag niet rechtstreeks aan het Kusto-cluster worden gekoppeld.
- Verificatie van beheerde identiteit wordt niet ondersteund in lokale ontwikkelomgevingen. Als u managed identity-verificatie wilt testen, implementeert u de toepassing in Azure of gebruikt u een andere verificatiemethode wanneer u lokaal werkt.
Verificatie op basis van certificaten
Certificaten fungeren als geheimen om de identiteit van een toepassing te verifiëren bij het aanvragen van een token. Er zijn verschillende methoden om het certificaat te laden, zoals het laden van het certificaat vanuit het lokale referentiearchief van de computer of van de schijf.
| Vervang in de volgende voorbeelden <QueryEndpointUri>, <ApplicationId>, <CertificateSubjectName>, <CertificateIssuerName>, <CertificateThumbprint>, <CertificateObject>, <AuthorityId>, <PemPublicCertificate>, <PemPrivateKey>, <privateKeyPemFilePath>, <PemCertificatePath>en <EnableSubjectAndIssuerAuth> door uw eigen waarden.
Het certificaat van het lokale certificaatarchief van de computer wordt alleen ondersteund met C#:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadApplicationSubjectAndIssuerAuthentication(<ApplicationId>, <CertificateSubjectName>, <CertificateIssuerName>, <AuthorityId>);Belangrijk
Wanneer u de onderwerpnaam en de uitgever gebruikt, moet het certificaat worden geïnstalleerd in de certificaatopslag van de lokale computer.
Certificaat van een willekeurige bron, zoals een bestand op schijf, cache of beveiligd archief, zoals Azure Key Vault. Het certificaatobject moet een persoonlijke sleutel bevatten:
X509Certificate2 certificate = <CertificateObject>; var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadApplicationCertificateAuthentication(<ApplicationId>, certificate, <AuthorityId>);Voor meer informatie, zie Kusto-verbindingsreeksen.
Belangrijk
Als u certificaten wilt laden vanuit Azure Key Vault, kunt u de Azure.Security.KeyVault.Certificatesclientgebruiken.
Verificatie van toepassingssleutels
Toepassingssleutel, ook wel een toepassingswachtwoord genoemd, is een geheime tekenreeks die een toepassing gebruikt om de identiteit te verifiëren en te bewijzen bij het aanvragen van een token. Het fungeert als een vorm van referentie voor de toepassing voor toegang tot beveiligde resources. De toepassingssleutel wordt doorgaans gegenereerd en toegewezen door de id-provider of autorisatieserver. Het is belangrijk dat u de toepassingssleutel veilig beheert en beveiligt om onbevoegde toegang tot gevoelige informatie of acties te voorkomen.
| Vervang in de volgende voorbeelden <QueryEndpointUri>, <ApplicationId>, <ApplicationKey>, <AuthorityId>en <AuthorityId> door uw eigen waarden.
Toepassingssleutel:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadApplicationKeyAuthentication(<ApplicationId>, <ApplicationKey>, <AuthorityId>);Verbindingsreeks met applicatiesleutel:
var connectionString = "Data Source=<QueryEndpointUri>;Initial Catalog=NetDefaultDB;AAD Federated Security=True;AppClientId=<ApplicationId>;AppKey=<ApplicationKey>;Authority Id=<AuthorityId>;" var kcsb = new KustoConnectionStringBuilder(connectionString);
Belangrijk
Hardcoderen van geheimen in uw code is een slechte gewoonte. Het opslaan van gevoelige informatie, zoals verificatiereferenties, in tekst zonder opmaak, leidt tot beveiligingsproblemen. Gevoelige informatie versleuteld houden of veilig opslaan in een sleutelkluis. Door versleuteling of een sleutelkluis te gebruiken, zorgt u ervoor dat uw geheimen worden beveiligd en alleen toegankelijk zijn voor geautoriseerde gebruikers of toepassingen.
Verificatiemethoden voor gebruikersprincipaal
In deze sectie worden de verschillende verificatiemethoden beschreven met behulp van een gebruikersprincipaal.
Interactieve gebruikersaanmeldingsverificatie
Deze verificatiemethode gebruikt de referenties van de gebruiker om een beveiligde verbinding met Kusto tot stand te brengen. De methode opent een webbrowser waarin de gebruiker wordt gevraagd om zijn gebruikersnaam en wachtwoord in te voeren om het verificatieproces te voltooien.
| Vervang in de volgende voorbeelden <QueryEndpointUri>,<AuthorityId>en <AuthorityId> door uw eigen waarden.
Interactieve gebruikersaanmelding:
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>) .WithAadUserPromptAuthentication();
Verificatie van Azure Command-Line Interface (CLI)
Deze verificatiemethode maakt gebruik van de Azure Command-Line Interface (CLI) om een token voor de gebruiker te verifiëren en te verkrijgen. Door de opdracht az login uit te voeren, kan de gebruiker veilig een verbinding tot stand brengen en het benodigde token ophalen voor verificatiedoeleinden. De gebruiker wordt mogelijk gevraagd zich aan te melden als het token niet beschikbaar is in de Azure CLI-cache en de parameter interactive is ingesteld op true. Zie Azure Command-Line Interface (CLI)voor meer informatie.
| Vervang in het volgende voorbeeld <QueryEndpointUri> door uw eigen waarde.
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadAzCliAuthentication(interactive: true);
Belangrijk
Deze methode wordt alleen ondersteund voor .NET Framework-apps.
Verificatie van apparaatcode
Deze methode is ontworpen voor apparaten die geen juiste gebruikersinterface hebben voor aanmelding, zoals IoT-apparaten en serverterminals. Het biedt de gebruiker een code en een URL om te verifiëren met behulp van een ander apparaat, zoals een smartphone. Voor deze interactieve methode moet de gebruiker zich aanmelden via een browser.
| Vervang in het volgende voorbeeld <QueryEndpointUri> door uw eigen waarde.
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;
});
Belangrijk
Verificatie van apparaatcode kan worden geblokkeerd door beleid voor voorwaardelijke toegang voor tenants. Als deze optie is geblokkeerd, selecteert u een alternatieve verificatiemethode.
Verificatiemethoden voor aangepaste tokenproviders
In deze sectie worden de verschillende verificatiemethoden beschreven met behulp van een aangepaste tokenprovider.
Aangepaste tokenprovider voor verificatie van federatieve-beheerde Managed Identity-identiteitsreferenties.
Aangepaste tokenproviders kunnen worden gebruikt om een Microsoft Entra ID-token voor verificatie te verkrijgen. In het volgende voorbeeld ziet u hoe u een aangepaste tokenprovider gebruikt om een token te verkrijgen met federatieve beheerde identiteit. U kunt de code aanpassen aan de vereisten van uw toepassing.
| Vervang in het volgende voorbeeld <AuthorityIdId>, <ApplicationId>, <ManagedIdentityClientId>en <QueryEndpointUri> door uw eigen waarden.
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-verificatie gebruiken
Maak een aangepaste tokenprovider door een klasse te maken die wordt overgenomen van TokenCredential en de GetToken-methode implementeert. U kunt ook een bestaande tokenprovider zoals DefaultAzureCredentialgebruiken. Deze methode biedt flexibiliteit voor verschillende verificatiescenario's wanneer een aangepaste tokenprovider vereist is.
U kunt DefaultAzureCredential gebruiken voor het ondersteunen van productiecode die gebruikmaakt van managed identity-verificatie of het testen van code met behulp van Visual Studio of Azure CLI.
DefaultAzureCredential kan worden geconfigureerd voor het gebruik van verschillende verificatiemethoden.
| Vervang in het volgende voorbeeld <QueryEndpointUri> en <ManagedIdentityClientId> door uw eigen waarden.
var credentialProvider = new DefaultAzureCredential(new DefaultAzureCredentialOptions {
ManagedIdentityClientId = <ManagedIdentityClientId>
});
var kcsb = new KustoConnectionStringBuilder(<QueryEndpointUri>)
.WithAadAzureTokenCredentialsAuthentication(credentialProvider);
Notitie
DefaultAzureCredential wordt gebruikt voor verificatie met Azure-services.
Er worden meerdere verificatiemethoden gebruikt om een token te verkrijgen en kan worden geconfigureerd voor gebruik met Beheerde identiteit, Visual Studio, Azure CLI en meer.
Deze referentie is geschikt voor zowel test- als productieomgevingen, omdat deze kan worden ingesteld voor het gebruik van verschillende verificatiemethoden.
Zie DefaultAzureCredential Classvoor meer informatie.