Tworzenie zasad bazy danych i tabel dla usługi Azure Data Explorer

Azure Data Explorer to szybka i wysoce skalowalna usługa eksploracji danych na potrzeby danych dziennika i telemetrycznych. W tym artykule utworzysz zasady bazy danych i tabel dla usługi Azure Data Explorer przy użyciu języka C# lub Python.

Wymagania wstępne

Instalowanie pakietów

  • Zainstaluj pakiet NuGet Azure Data Explorer (Kusto) .
  • Zainstaluj pakiet NuGet MSAL na potrzeby uwierzytelniania za pomocą usługi Azure Active Directory (Azure AD).
  • Zainstaluj pakiet NuGet Microsoft.Rest.ClientRuntime na potrzeby uwierzytelniania za pomocą usługi Azure Active Directory (Azure AD).

Uwierzytelnianie

Aby uruchomić przykłady w tym artykule, potrzebujesz aplikacji usługi Azure AD i jednostki usługi, która może uzyskiwać dostęp do zasobów. Jeśli to konieczne, utworzyć aplikację Azure AD i nadać jej odpowiednie przypisania ról w subskrypcji. Zapisz identyfikator katalogu (dzierżawcy), identyfikator aplikacji oraz klucz tajny klienta.

Może być konieczne dodanie nowej aplikacji Azure AD jako głównego w bazie danych. Aby uzyskać więcej informacji, zobacz Zarządzanie uprawnieniami bazy danych usługi Azure Data Explorer.

Zmienianie zasad przechowywania bazy danych

W poniższym przykładzie ustawiono politykę retencji z 10-dniowym okresem miękkiego usuwania.

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Azure AD Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Application ID
var clientSecret = "PlaceholderClientSecret"; // Application secret
var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
// Create a confidential authentication client for Azure AD:
var authClient = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithAuthority($"https://login.microsoftonline.com/{tenantId}")
    .WithClientSecret(clientSecret) // can be replaced by .WithCertificate to authenticate with an X.509 certificate
    .Build();
// Acquire application token
var result = authClient.AcquireTokenForClient(
    new[] { "https://management.core.windows.net/.default" } // Define scopes for accessing Azure management plane
).ExecuteAsync().Result;
var credentials = new TokenCredentials(result.AccessToken, result.TokenType);
var kustoManagementClient = new KustoManagementClient(credentials) { SubscriptionId = subscriptionId };
var resourceGroupName = "testrg";
// The cluster and database that are created as part of the prerequisites
var clusterName = "mykustocluster";
var databaseName = "mykustodatabase";
var databasePatch = new ReadWriteDatabase(softDeletePeriod: TimeSpan.FromDays(10));
await kustoManagementClient.Databases.UpdateAsync(resourceGroupName, clusterName, databaseName, databasePatch);

Zmień zasady pamięci podręcznej bazy danych

W poniższym przykładzie ustawiono zasady pamięci podręcznej dla bazy danych. Poprzednie pięć dni danych będzie znajdować się na dysku SSD klastra.

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Azure AD Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Application ID
var clientSecret = "PlaceholderClientSecret"; // Application secret
var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
// Create a confidential authentication client for Azure AD:
var authClient = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithAuthority($"https://login.microsoftonline.com/{tenantId}")
    .WithClientSecret(clientSecret) // can be replaced by .WithCertificate to authenticate with an X.509 certificate
    .Build();
// Acquire application token
var result = authClient.AcquireTokenForClient(
    new[] { "https://management.core.windows.net/.default" } // Define scopes for accessing Azure management plane
).ExecuteAsync().Result;
var credentials = new TokenCredentials(result.AccessToken, result.TokenType);
var kustoManagementClient = new KustoManagementClient(credentials) { SubscriptionId = subscriptionId };
var resourceGroupName = "testrg";
// The cluster and database that are created as part of the prerequisites
var clusterName = "mykustocluster";
var databaseName = "mykustodatabase";
var databasePatch = new ReadWriteDatabase(hotCachePeriod: TimeSpan.FromDays(10));
await kustoManagementClient.Databases.UpdateAsync(resourceGroupName, clusterName, databaseName, databasePatch);

Zmienianie zasad pamięci podręcznej tabel

W poniższym przykładzie ustawiono zasady pamięci podręcznej dla tabeli przy użyciu Kusto Data SDK . Ten fragment kodu umożliwia skonfigurowanie gorącej pamięci podręcznej klastra (lokalnych dysków SSD) do przechowywania danych z ostatnich pięciu dni.

var kustoUri = "https://<clusterName>.<region>.kusto.windows.net/";
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Azure AD Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Application ID
var clientSecret = "PlaceholderClientSecret"; // Application secret
var kustoConnectionStringBuilder = new KustoConnectionStringBuilder(kustoUri)
    .WithAadApplicationKeyAuthentication(clientId, clientSecret, tenantId);
using var kustoClient = KustoClientFactory.CreateCslAdminProvider(kustoConnectionStringBuilder);
var command = CslCommandGenerator.GenerateAlterTableCachingPolicyCommand(
    "<tableName>", hotSpan: TimeSpan.FromDays(5)
);
await kustoClient.ExecuteControlCommandAsync("<databaseName>", command);

Dodaj nowy podmiot zabezpieczeń dla bazy danych

W poniższym przykładzie dodano nową aplikację Azure AD jako uprawnienia administratora dla bazy danych.

var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Azure AD Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; // Application ID
var clientSecret = "PlaceholderClientSecret"; // Application secret
var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
// Create a confidential authentication client for Azure AD:
var authClient = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithAuthority($"https://login.microsoftonline.com/{tenantId}")
    .WithClientSecret(clientSecret) // can be replaced by .WithCertificate to authenticate with an X.509 certificate
    .Build();
// Acquire application token
var result = authClient.AcquireTokenForClient(
    new[] { "https://management.core.windows.net/.default" } // Define scopes for accessing Azure management plane
).ExecuteAsync().Result;
var credentials = new TokenCredentials(result.AccessToken, result.TokenType);
var kustoManagementClient = new KustoManagementClient(credentials) { SubscriptionId = subscriptionId };
var resourceGroupName = "testrg";
// The cluster and database that are created as part of the prerequisites
var clusterName = "mykustocluster";
var databaseName = "mykustodatabase";
var databasePrincipalListRequest = new DatabasePrincipalListRequest
{
    Value = new List<DatabasePrincipal> { new("Admin", "<databasePrincipalName>", "App", appId: clientId, tenantName: tenantId) }
};
await kustoManagementClient.Databases.AddPrincipalsAsync(resourceGroupName, clusterName, databaseName, databasePrincipalListRequest);

Następne kroki