Identitas terkelola dari MICROSOFT Entra ID memungkinkan kluster Anda mengakses sumber daya lain yang dilindungi Microsoft Entra seperti Azure Key Vault. Platform Azure mengelola identitas dan tidak mengharuskan Anda untuk menyediakan atau memutar rahasia apa pun.
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 berperilaku seperti yang diharapkan jika Anda memigrasikan kluster Azure Data Explorer di seluruh langganan atau penyewa. Aplikasi ini perlu mendapatkan identitas baru, yang bisa Anda dapatkan dengan menghapus identitas yang ditetapkan sistem lalu menambahkan identitas yang ditetapkan sistem. Anda juga perlu memperbarui kebijakan akses sumber daya hilir untuk menggunakan identitas baru.
Untuk sampel kode berdasarkan versi SDK sebelumnya, lihat artikel yang diarsipkan.
Jenis identitas terkelola
Anda dapat memberikan dua jenis identitas kluster Azure Data Explorer Anda:
Identitas yang ditetapkan sistem: Terikat ke kluster Anda dan dihapus jika Anda menghapus sumber daya. Kluster hanya dapat memiliki satu identitas yang ditetapkan sistem.
Identitas yang ditetapkan pengguna: Sumber daya Azure mandiri yang dapat Anda tetapkan ke kluster Anda. Kluster dapat memiliki beberapa identitas yang ditetapkan pengguna.
Tambahkan identitas yang ditetapkan sistem
Tetapkan identitas yang ditetapkan oleh sistem dan terkait dengan kluster Anda, serta akan dihapus jika Anda menghapus kluster tersebut. Kluster hanya dapat memiliki satu identitas yang ditetapkan sistem. Saat Anda membuat kluster dengan identitas yang ditetapkan sistem, Anda perlu mengatur properti tambahan pada kluster. Tambahkan identitas yang ditetapkan sistem dengan menggunakan portal Microsoft Azure, C#, atau templat Resource Manager sebagaimana dirinci di bagian berikut.
Menambahkan identitas yang ditetapkan sistem dengan menggunakan portal Microsoft Azure
Masuk ke portal Azure.
Kluster Azure Data Explorer baru
Membuat kluster Azure Data Explorer
Di tab Keamanan , di bawah Identitas yang ditetapkan sistem, pilih Aktif. Untuk menghapus identitas yang ditetapkan sistem, pilih Nonaktif.
Pilih Berikutnya : Tag > atau Tinjau + buat untuk membuat kluster.
Kluster Azure Data Explorer yang sudah ada
Buka kluster Azure Data Explorer yang sudah ada.
Pilih Pengaturan>Identitas di panel kiri portal.
Pada panel Identitas, di bawah tab Ditetapkan sistem:
- Pindahkan slider Status ke Aktif.
- Pilih Simpan.
- Di jendela pop-up, pilih Ya.
Setelah beberapa menit, layar menunjukkan:
-
ID Objek - Digunakan untuk kunci yang dikelola pelanggan
-
Izin - Pilih penetapan peran yang relevan
Menambahkan identitas yang ditetapkan sistem menggunakan C#
Prasyarat
Untuk menyiapkan identitas terkelola menggunakan klien Azure Data Explorer C#:
-
Instal paket NuGet Azure Data Explorer.
-
Instal paket Azure.Identity NuGet untuk autentikasi.
-
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 dengan 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 Anda berhasil membuat atau memperbarui kluster Anda dengan identitas:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Jika hasilnya berisi ProvisioningState dengan Succeeded nilai , maka kluster dibuat atau diperbarui, dan 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 dengan menggunakan templat Azure Resource Manager
Anda dapat menggunakan templat Azure Resource Manager untuk mengotomatiskan penyebaran sumber daya Azure Anda. Untuk mempelajari selengkapnya tentang menyebarkan ke Azure Data Explorer, lihat Membuat kluster dan database Azure Data Explorer dengan menggunakan templat Azure Resource Manager.
Saat Anda menambahkan jenis yang ditetapkan sistem, Anda memberi tahu Azure untuk membuat dan mengelola identitas untuk kluster Anda. Anda dapat membuat sumber daya jenis Microsoft.Kusto/clusters apa pun dengan identitas dengan menyertakan properti berikut dalam definisi sumber daya:
{
"identity": {
"type": "SystemAssigned"
}
}
Contoh:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
Catatan
Kluster dapat memiliki identitas yang ditetapkan sistem dan ditetapkan pengguna secara bersamaan. Properti type akan menjadi SystemAssigned,UserAssigned
Saat Anda membuat kluster, kluster memiliki properti tambahan berikut:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
<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
Saat menghapus identitas yang ditetapkan sistem, Anda juga menghapusnya dari ID Microsoft Entra. Identitas yang ditetapkan sistem juga secara otomatis dihapus dari ID Microsoft Entra saat Anda menghapus sumber daya kluster. Anda dapat menghapus identitas yang ditetapkan sistem dengan menonaktifkan fitur. Gunakan portal Microsoft Azure, C#, atau templat Resource Manager untuk menghapus identitas yang ditetapkan sistem sebagaimana dirinci di bagian berikut.
Menghapus identitas yang ditetapkan sistem dengan menggunakan portal Microsoft Azure
Masuk ke portal Azure.
Pilih Pengaturan>Identitas di panel kiri portal.
Di panel Identitas, di bawah tab Ditugaskan Sistem:
- Pindahkan slider Status ke Nonaktif.
- Pilih Simpan.
- 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 dengan menggunakan C#
Jalankan kode berikut 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 dengan menggunakan templat Azure Resource Manager
Jalankan kode berikut untuk menghapus identitas yang ditetapkan sistem:
{
"identity": {
"type": "None"
}
}
Catatan
Jika kluster memiliki identitas yang ditetapkan sistem dan ditetapkan pengguna secara bersamaan, setelah Anda menghapus identitas yang ditetapkan sistem, type propertinya adalah 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. Untuk membuat kluster dengan identitas yang ditetapkan pengguna, Anda perlu mengatur properti tambahan pada kluster. Tambahkan identitas yang ditetapkan pengguna dengan menggunakan portal Microsoft Azure, C#, atau templat Resource Manager seperti yang dirinci di bagian berikut.
Menambahkan identitas yang ditetapkan pengguna dengan menggunakan portal Microsoft Azure
Masuk ke portal Azure.
Buat sumber daya identitas terkelola yang ditetapkan pengguna.
Buka kluster Azure Data Explorer yang sudah ada.
Pilih Pengaturan>Identitas di panel kiri portal.
Di tab Pengguna yang ditetapkan, pilih Tambahkan.
Cari identitas yang Anda buat sebelumnya dan pilih identitas tersebut. Pilih Tambahkan.
Menambahkan identitas yang ditetapkan pengguna menggunakan C#
Prasyarat
Untuk menyiapkan identitas terkelola menggunakan klien Azure Data Explorer C#:
-
Instal paket NuGet Azure Data Explorer.
-
Instal paket Azure.Identity NuGet untuk autentikasi.
-
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 dengan 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 Anda berhasil membuat atau memperbarui kluster Anda dengan identitas:
clusterData = (await clusters.GetAsync(clusterName)).Value.Data;
Jika hasilnya berisi ProvisioningState dengan Succeeded nilai , maka kluster dibuat atau diperbarui, dan 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 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 dengan menggunakan templat Azure Resource Manager
Anda dapat menggunakan templat Azure Resource Manager untuk mengotomatiskan penyebaran sumber daya Azure Anda. Untuk mempelajari selengkapnya tentang menyebarkan ke Azure Data Explorer, lihat Membuat kluster dan database Azure Data Explorer dengan menggunakan templat Azure Resource Manager.
Anda dapat membuat sumber daya jenis Microsoft.Kusto/clusters apa pun dengan identitas yang ditetapkan pengguna dengan menyertakan properti berikut dalam definisi sumber daya. Ganti <RESOURCEID> dengan ID sumber daya dari identitas yang diinginkan:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
}
Contoh:
{
"apiVersion": "2019-09-07",
"type": "Microsoft.Kusto/clusters",
"name": "[variables('clusterName')]",
"location": "[resourceGroup().location]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {}
}
},
"dependsOn": [
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]"
]
}
Saat Anda membuat kluster, kluster memiliki properti tambahan berikut:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
}
PrincipalId adalah pengidentifikasi unik untuk identitas yang digunakan 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 hal ini, atur properti ke typeSystemAssigned,UserAssigned.
Menghapus identitas terkelola yang ditetapkan pengguna dari kluster
Hapus identitas yang ditetapkan pengguna dengan menggunakan portal Microsoft Azure, C#, atau templat Resource Manager seperti yang dirinci di bagian berikut.
Menghapus identitas terkelola yang ditetapkan pengguna dengan menggunakan portal Microsoft Azure
Masuk ke portal Azure.
Pilih Pengaturan>Identitas di panel kiri portal.
Memilih tab Pengguna yang ditetapkan.
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 dengan menggunakan C#
Jalankan kode berikut 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 dengan menggunakan templat Azure Resource Manager
Jalankan kode berikut untuk menghapus identitas yang ditetapkan pengguna:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": null
}
}
}
Catatan
- Atur nilai identitas ke null untuk menghapusnya. Tindakan ini tidak memengaruhi identitas lain yang ada.
- Atur
type properti ke None untuk menghapus semua identitas yang ditetapkan pengguna.
- Jika kluster memiliki identitas yang ditetapkan sistem dan ditetapkan pengguna, atur
type properti ke SystemAssigned,UserAssigned dengan identitas untuk dihapus, atau atur ke SystemAssigned untuk menghapus semua identitas yang ditetapkan pengguna.
Konten terkait