Mengonfigurasi identitas terkelola untuk kluster Azure Data Explorer Anda
Artikel
Identitas terkelola dari ID Microsoft Entra memungkinkan kluster Anda mengakses sumber daya lain yang dilindungi Microsoft Entra seperti Azure Key Vault. Identitas dikelola oleh platform Azure dan tidak mengharuskan Anda untuk menyediakan atau memutar rahasia.
Artikel ini memperlihatkan kepada Anda cara menambahkan dan menghapus identitas terkelola di kluster Anda. Untuk informasi selengkapnya tentang identitas terkelola, lihat Gambaran umum identitas terkelola.
Catatan
Identitas terkelola untuk Azure Data Explorer tidak akan berperilaku seperti yang diharapkan jika kluster Azure Data Explorer Anda dimigrasikan di seluruh langganan atau penyewa. Aplikasi ini perlu mendapatkan identitas baru, yang dapat dilakukan dengan menghapus identitas yang ditetapkan sistem lalu menambahkan identitas yang ditetapkan sistem. Kebijakan akses sumber daya hilir juga perlu diperbarui untuk menggunakan identitas baru.
Kluster Azure Data Explorer Anda dapat diberikan dua jenis identitas:
Identitas yang ditetapkan sistem: Terkait dengan kluster Anda dan dihapus jika sumber daya Anda dihapus. Kluster hanya dapat memiliki satu identitas yang ditetapkan sistem.
Identitas yang ditetapkan pengguna: Sumber daya Azure mandiri yang dapat ditetapkan ke kluster Anda. Kluster dapat memiliki beberapa identitas yang ditetapkan pengguna.
Tambahkan identitas yang ditetapkan sistem
Tetapkan identitas yang ditetapkan sistem yang terkait dengan kluster Anda, dan dihapus jika kluster Anda dihapus. Kluster hanya dapat memiliki satu identitas yang ditetapkan sistem. Membuat kluster dengan identitas yang ditetapkan sistem memerlukan properti tambahan untuk diatur pada kluster. Tambahkan identitas yang ditetapkan sistem menggunakan templat portal Azure, C#, atau Resource Manager seperti yang dijelaskan di bawah ini.
Buat aplikasi Microsoft Entra dan perwakilan layanan yang dapat mengakses sumber daya. Anda menambahkan penetapan peran di cakupan langganan dan mendapatkan yang diperlukan Directory (tenant) ID, Application ID, dan Client Secret.
Membuat atau memperbarui kluster Anda
Buat atau perbarui kluster Anda menggunakan Identity properti :
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, subscriptionId);
var resourceGroupName = "testrg";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
var clusters = resourceGroup.GetKustoClusters();
var clusterName = "mykustocluster";
var clusterData = new KustoClusterData(
location: AzureLocation.CentralUS,
sku: new KustoSku(KustoSkuName.StandardE8adsV5, KustoSkuTier.Standard) { Capacity = 5 }
) { Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.SystemAssigned) };
await clusters.CreateOrUpdateAsync(WaitUntil.Completed, clusterName, clusterData);
Jalankan perintah berikut untuk memeriksa apakah kluster Anda berhasil dibuat atau diperbarui dengan identitas:
Jika hasilnya berisi ProvisioningState dengan Succeeded nilai , maka kluster dibuat atau diperbarui, dan harus memiliki properti berikut:
var principalGuid = clusterData.Identity.PrincipalId.GetValueOrDefault();
var tenantGuid = clusterData.Identity.TenantId.GetValueOrDefault();
PrincipalId dan TenantId diganti dengan GUID. Properti TenantId mengidentifikasi penyewa Microsoft Entra tempat identitas berada.
PrincipalId adalah pengidentifikasi unik untuk identitas baru kluster. Dalam ID Microsoft Entra, perwakilan layanan memiliki nama yang sama dengan yang Anda berikan ke instans App Service atau Azure Functions Anda.
Menambahkan identitas yang ditetapkan sistem menggunakan templat Azure Resource Manager
Menambahkan jenis yang ditetapkan sistem memberi tahu Azure untuk membuat dan mengelola identitas untuk kluster Anda. Sumber daya dari Microsoft.Kusto/clusters jenis apa pun dapat dibuat dengan identitas dengan menyertakan properti berikut dalam definisi sumber daya:
Kluster dapat memiliki identitas yang ditetapkan sistem dan ditetapkan pengguna secara bersamaan. Properti type akan menjadi SystemAssigned,UserAssigned
Ketika kluster dibuat, kluster memiliki properti tambahan berikut:
<TENANTID> dan <PRINCIPALID> diganti dengan GUID. Properti TenantId mengidentifikasi penyewa Microsoft Entra tempat identitas berada.
PrincipalId adalah pengidentifikasi unik untuk identitas baru kluster. Dalam ID Microsoft Entra, perwakilan layanan memiliki nama yang sama dengan yang Anda berikan ke instans App Service atau Azure Functions Anda.
Hapus identitas yang ditetapkan sistem
Menghapus identitas yang ditetapkan sistem juga akan menghapusnya dari ID Microsoft Entra. Identitas yang ditetapkan sistem juga secara otomatis dihapus dari ID Microsoft Entra saat sumber daya kluster dihapus. Identitas yang ditetapkan sistem dapat dihapus dengan menonaktifkan fitur. Hapus identitas yang ditetapkan sistem menggunakan templat portal Azure, C#, atau Resource Manager seperti yang dijelaskan di bawah ini.
Di jendela pop-up, pilih Ya untuk menonaktifkan identitas yang ditetapkan sistem. Panel Identitas kembali ke kondisi yang sama seperti sebelum penambahan identitas yang ditetapkan sistem.
Menghapus identitas yang ditetapkan sistem menggunakan C#
Jalankan yang berikut ini untuk menghapus identitas yang ditetapkan sistem:
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterPatch = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.None)
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterPatch);
Menghapus identitas yang ditetapkan sistem menggunakan templat Azure Resource Manager
Jalankan yang berikut ini untuk menghapus identitas yang ditetapkan sistem:
{
"identity": {
"type": "None"
}
}
Catatan
Jika kluster memiliki identitas yang ditetapkan sistem dan ditetapkan pengguna secara bersamaan, setelah penghapusan identitas yang ditetapkan sistem, type properti akan menjadi UserAssigned
Menambahkan identitas yang ditetapkan pengguna
Tetapkan identitas terkelola yang ditetapkan pengguna ke kluster Anda. Kluster dapat memiliki lebih dari satu identitas yang ditetapkan pengguna. Membuat kluster dengan identitas yang ditetapkan pengguna memerlukan properti tambahan untuk diatur pada kluster. Tambahkan identitas yang ditetapkan pengguna menggunakan templat portal Azure, C#, atau Resource Manager seperti yang dijelaskan di bawah ini.
Buat aplikasi Microsoft Entra dan perwakilan layanan yang dapat mengakses sumber daya. Anda menambahkan penetapan peran di cakupan langganan dan mendapatkan , , Application IDdan Client Secretyang diperlukanDirectory (tenant) ID.
Membuat atau memperbarui kluster Anda
Buat atau perbarui kluster Anda menggunakan Identity properti :
var tenantId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Directory (tenant) ID
var clientId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx"; //Application ID
var clientSecret = "PlaceholderClientSecret"; //Client Secret
var subscriptionId = "xxxxxxxx-xxxxx-xxxx-xxxx-xxxxxxxxx";
var credentials = new ClientSecretCredential(tenantId, clientId, clientSecret);
var resourceManagementClient = new ArmClient(credentials, subscriptionId);
var resourceGroupName = "testrg";
var subscription = await resourceManagementClient.GetDefaultSubscriptionAsync();
var resourceGroup = (await subscription.GetResourceGroupAsync(resourceGroupName)).Value;
var clusters = resourceGroup.GetKustoClusters();
var clusterName = "mykustocluster";
var userIdentityResourceId = new ResourceIdentifier($"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>");
var clusterData = new KustoClusterData(
location: AzureLocation.CentralUS,
sku: new KustoSku(KustoSkuName.StandardE8adsV5, KustoSkuTier.Standard) { Capacity = 5 }
)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned)
{
UserAssignedIdentities = { { userIdentityResourceId, new UserAssignedIdentity() } }
}
};
await clusters.CreateOrUpdateAsync(WaitUntil.Completed, clusterName, clusterData);
Jalankan perintah berikut untuk memeriksa apakah kluster Anda berhasil dibuat atau diperbarui dengan identitas:
Jika hasilnya berisi ProvisioningState dengan Succeeded nilai , maka kluster dibuat atau diperbarui, dan harus memiliki properti berikut:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId.GetValueOrDefault();
var clientGuid = userIdentity.ClientId.GetValueOrDefault();
PrincipalId adalah pengidentifikasi unik untuk identitas yang digunakan untuk administrasi Microsoft Entra.
ClientId adalah pengidentifikasi unik untuk identitas baru aplikasi yang digunakan untuk menentukan identitas mana yang akan digunakan selama panggilan runtime.
Menambahkan identitas yang ditetapkan pengguna menggunakan templat Azure Resource Manager
Sumber daya jenis Microsoft.Kusto/clusters apa pun dapat dibuat dengan identitas yang ditetapkan pengguna dengan menyertakan properti berikut dalam definisi sumber daya, mengganti <RESOURCEID> dengan ID sumber daya dari identitas yang diinginkan:
PrincipalId adalah pengidentifikasi unik untuk identitas yang digunakan untuk administrasi Microsoft Entra.
ClientId adalah pengidentifikasi unik untuk identitas baru aplikasi yang digunakan untuk menentukan identitas mana yang akan digunakan selama panggilan runtime.
Catatan
Kluster dapat memiliki identitas yang ditetapkan sistem dan ditetapkan pengguna secara bersamaan. Dalam kasus ini, properti type akan menjadi SystemAssigned,UserAssigned.
Menghapus identitas terkelola yang ditetapkan pengguna dari kluster
Hapus identitas yang ditetapkan pengguna menggunakan templat portal Azure, C#, atau Resource Manager seperti yang dijelaskan di bawah ini.
Cari identitas yang Anda buat sebelumnya dan pilih identitas tersebut. Pilih Hapus.
Di jendela pop-up, pilih Ya untuk menghapus identitas yang ditetapkan pengguna. Panel Identitas kembali ke kondisi yang sama seperti sebelum penambahan identitas yang ditetapkan pengguna.
Menghapus identitas yang ditetapkan pengguna menggunakan C#
Jalankan yang berikut ini untuk menghapus identitas yang ditetapkan pengguna:
var cluster = (await clusters.GetAsync(clusterName)).Value;
var clusterUpdate = new KustoClusterPatch(clusterData.Location)
{
Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned)
{
UserAssignedIdentities = { { userIdentityResourceId, null } }
}
};
await cluster.UpdateAsync(WaitUntil.Completed, clusterUpdate);
Menghapus identitas yang ditetapkan pengguna menggunakan templat Azure Resource Manager
Jalankan yang berikut ini untuk menghapus identitas yang ditetapkan pengguna:
Untuk menghapus identitas, atur nilainya ke null. Semua identitas lain yang ada tidak akan terpengaruh.
Untuk menghapus semua identitas type yang ditetapkan pengguna, properti akan menjadi None,
Jika kluster memiliki identitas yang ditetapkan sistem dan ditetapkan pengguna secara bersamaan, type properti akan dengan SystemAssigned,UserAssigned identitas untuk dihapus, atau SystemAssigned untuk menghapus semua identitas yang ditetapkan pengguna.