Tożsamość zarządzana z usługi Azure Active Directory umożliwia klastrowi łatwy dostęp do innych zasobów chronionych przez usługę Azure AD, takich jak usługa Azure Key Vault. Tożsamość jest zarządzana przez platformę Azure i nie wymaga zarządzania ani rotacji jakimikolwiek sekretami. Konfiguracja tożsamości zarządzanej jest obecnie obsługiwana tylko w celu włączenia kluczy zarządzanych przez klienta dla klastra.
Aby zapoznać się z omówieniem tożsamości zarządzanych, zobacz Uwierzytelnianie przy użyciu tożsamości zarządzanych w klastrze usługi Azure Data Explorer.
Twój klaster usługi Azure Data Explorer może mieć przypisane dwa typy tożsamości:
-
tożsamość przypisana przez system: powiązana z klastrem i usunięta, jeśli zasób zostanie usunięty. Klaster może mieć tylko jedną tożsamość przypisaną przez system.
-
tożsamość przypisana przez użytkownika: autonomiczny zasób platformy Azure, który można przypisać do klastra. Klaster może mieć wiele tożsamości przypisanych przez użytkownika.
W tym artykule pokazano, jak dodawać i usuwać tożsamości zarządzane przypisane przez system i przypisane przez użytkownika dla klastrów Azure Data Explorer.
Uwaga
Tożsamości zarządzane dla usługi Azure Data Explorer nie będą zachowywać się zgodnie z oczekiwaniami, jeśli klaster usługi Azure Data Explorer zostanie zmigrowany między subskrypcjami lub dzierżawami. Aplikacja będzie musiała uzyskać nową tożsamość, co można zrobić przez wyłączenie funkcji i ponowne włączenie. Należy również zaktualizować zasady dostępu do zasobów podrzędnych, aby korzystać z nowej tożsamości.
Dodawanie tożsamości przypisanej przez system
Przypisz tożsamość przypisaną przez system, która jest powiązana z klastrem i zostanie usunięta, jeśli klaster zostanie usunięty. Klaster może mieć tylko jedną tożsamość przypisaną przez system. Utworzenie klastra z tożsamością przypisaną przez system wymaga ustawienia dodatkowej właściwości w klastrze. Dodaj tożsamość przypisaną przez system przy użyciu witryny Azure Portal, języka C# lub szablonu usługi Resource Manager, jak opisano poniżej.
Dodawanie tożsamości przypisanej przez system przy użyciu witryny Azure Portal
Zaloguj się w witrynie Azure Portal.
Nowy klaster usługi Azure Data Explorer
Tworzenie klastra usługi Azure Data Explorer
Na karcie zabezpieczeń>tożsamość przypisana przez system, wybierz pozycję Włączone. Aby usunąć tożsamość przypisaną przez system, wybierz pozycję Wyłączone.
Wybierz Dalej : Tagi > lub Przejrzyj i utwórz, aby utworzyć klaster.
Istniejący klaster usługi Azure Data Explorer
Otwórz istniejący klaster usługi Azure Data Explorer.
W lewym okienku portalu wybierz Ustawienia >Identity.
Na karcie Identity panelu >System przypisany:
- Przesuń suwak statusu do pozycji On.
- Wybierz Zapisz
- W oknie podręcznym wybierz Tak
Po kilku minutach zostanie wyświetlony ekran:
-
identyfikator obiektu — używany w przypadku kluczy zarządzanych przez klienta
-
Uprawnienia - Wybierz odpowiednie przypisania ról
Dodawanie tożsamości przypisanej przez system przy użyciu języka C#
Wymagania wstępne
Aby skonfigurować tożsamość zarządzaną przy użyciu klienta języka C# usługi Azure Data Explorer:
- Zainstaluj pakiet NuGet Azure Data Explorer.
- Zainstaluj pakiet NuGet Microsoft.Identity.Client na potrzeby uwierzytelniania.
- Zainstaluj pakiet NuGet Microsoft.Rest.ClientRuntime na potrzeby uwierzytelniania.
-
Utwórz aplikację usługi Azure AD i jednostkę usługi, która może uzyskiwać dostęp do zasobów. Dodasz przypisanie roli w zakresie subskrypcji i uzyskasz wymagane wartości
Directory (tenant) ID, Application IDi Client Secret.
Tworzenie lub aktualizowanie klastra
Utwórz lub zaktualizuj klaster przy użyciu właściwości Identity:
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 authClient = ConfidentialClientApplicationBuilder.Create(clientId)
.WithAuthority($"https://login.microsoftonline.com/{tenantId}")
.WithClientSecret(clientSecret)
.Build();
var result = authClient.AcquireTokenForClient(new[] { "https://management.core.windows.net/" }).ExecuteAsync().Result;
var credentials = new TokenCredentials(result.AccessToken, result.TokenType);
var kustoManagementClient = new KustoManagementClient(credentials) { SubscriptionId = subscriptionId };
var resourceGroupName = "testrg";
var clusterName = "mykustocluster";
var clusterData = new Cluster(
location: "Central US",
sku: new AzureSku("Standard_E8ads_v5", "Standard", 5),
identity: new Identity(IdentityType.SystemAssigned)
);
await kustoManagementClient.Clusters.CreateOrUpdateAsync(resourceGroupName, clusterName, clusterData);
Uruchom następujące polecenie, aby sprawdzić, czy klaster został pomyślnie utworzony lub zaktualizowany przy użyciu tożsamości:
clusterData = await kustoManagementClient.Clusters.GetAsync(resourceGroupName, clusterName);
Jeśli wynik zawiera ProvisioningState z wartością Succeeded, klaster został utworzony lub zaktualizowany i powinien mieć następujące właściwości:
var principalGuid = clusterData.Identity.PrincipalId;
var tenantGuid = clusterData.Identity.TenantId;
PrincipalId i TenantId są zastępowane GUID-ami. Właściwość TenantId identyfikuje dzierżawcę usługi Azure AD, do którego należy tożsamość.
PrincipalId jest unikatowym identyfikatorem nowej tożsamości klastra. W usłudze Azure AD jednostka usługi ma tę samą nazwę, którą nadano Twojej usłudze App Service lub Azure Functions.
Dodawanie tożsamości przypisanej przez system przy użyciu szablonu usługi Azure Resource Manager
Szablon usługi Azure Resource Manager może służyć do automatyzowania wdrażania zasobów platformy Azure. Aby dowiedzieć się więcej na temat wdrażania w usłudze Azure Data Explorer, zobacz Tworzenie klastra i bazy danych usługi Azure Data Explorer przy użyciu szablonu usługi Azure Resource Manager.
Dodanie typu przypisanego przez system informuje platformę Azure o utworzeniu tożsamości klastra i zarządzaniu nią. Dowolny zasób typu Microsoft.Kusto/clusters można utworzyć przy użyciu tożsamości, uwzględniając następującą właściwość w definicji zasobu:
{
"identity": {
"type": "SystemAssigned"
}
}
Na przykład:
{
"apiVersion": "2019-09-07",
"type": "Microsoft.Kusto/clusters",
"name": "[variables('clusterName')]",
"location": "[resourceGroup().location]",
"identity": {
"type": "SystemAssigned"
}
}
Uwaga
Klaster może mieć jednocześnie tożsamości przypisane przez system i użytkownika. Właściwość type będzie SystemAssigned,UserAssigned
Po utworzeniu klastra ma następujące dodatkowe właściwości:
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
<TENANTID> i <PRINCIPALID> są zastępowane identyfikatorami GUID. Właściwość TenantId identyfikuje dzierżawcę usługi Azure AD, do którego należy tożsamość.
PrincipalId jest unikatowym identyfikatorem nowej tożsamości klastra. W usłudze Azure AD jednostka usługi ma taką samą nazwę, która została nadana wystąpieniu usługi App Service lub azure Functions.
Usuwanie tożsamości przypisanej przez system
Usunięcie tożsamości przypisanej przez system spowoduje również usunięcie jej z usługi Azure AD. Tożsamości przypisane przez system są również automatycznie usuwane z usługi Azure AD po usunięciu zasobu klastra. Tożsamość przypisana przez system można usunąć, wyłączając tę funkcję. Usuń tożsamość przypisaną przez system przy użyciu witryny Azure Portal, języka C# lub szablonu usługi Resource Manager, jak opisano poniżej.
Usuwanie tożsamości przypisanej przez system przy użyciu witryny Azure Portal
Zaloguj się w witrynie Azure Portal.
W lewym okienku portalu wybierz Ustawienia >Identity.
Na karcie Identity panelu >System przypisany:
- Przesuń suwak Status na Wyłączony.
- Wybierz Zapisz
- W oknie podręcznym wybierz opcję Tak, aby wyłączyć tożsamość przypisaną przez system. Panel Identity wraca do stanu, jaki był przed dodaniem tożsamości przypisanej przez system.
Usuwanie tożsamości przypisanej przez system przy użyciu języka C#
Uruchom następujące polecenie, aby usunąć tożsamość przypisaną przez system:
var clusterPatch = new ClusterUpdate(identity: new Identity(IdentityType.None));
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, clusterPatch);
Usuwanie tożsamości przypisanej przez system przy użyciu szablonu usługi Azure Resource Manager
Uruchom następujące polecenie, aby usunąć tożsamość przypisaną przez system:
{
"identity": {
"type": "None"
}
}
Uwaga
Jeśli klaster miał jednocześnie tożsamości przypisane przez system i przypisane przez użytkownika, po usunięciu tożsamości przypisanej przez system właściwość type będzie UserAssigned
Dodawanie tożsamości przypisanej przez użytkownika
Przypisz klastrowi tożsamość zarządzaną przypisaną użytkownikowi. Klaster może mieć więcej niż jedną tożsamość przypisaną przez użytkownika. Utworzenie klastra z tożsamością przypisaną przez użytkownika wymaga ustawienia dodatkowej właściwości w klastrze. Dodaj tożsamość przypisaną przez użytkownika przy użyciu witryny Azure Portal, języka C# lub szablonu usługi Resource Manager, zgodnie z poniższym opisem.
Dodawanie tożsamości przypisanej przez użytkownika przy użyciu witryny Azure Portal
Zaloguj się w witrynie Azure Portal.
Utwórz zasób zarządzanej tożsamości przypisanej przez użytkownika.
Otwórz istniejący klaster usługi Azure Data Explorer.
W lewym okienku portalu wybierz Ustawienia >Identity.
Na karcie Przypisanie użytkownika do wybierz pozycję Dodaj.
Wyszukaj utworzoną wcześniej tożsamość i wybierz ją. Wybierz Dodaj.
Dodawanie tożsamości przypisanej przez użytkownika przy użyciu języka C#
Wymagania wstępne
Aby skonfigurować tożsamość zarządzaną przy użyciu klienta języka C# usługi Azure Data Explorer:
- Zainstaluj pakiet NuGet Azure Data Explorer.
- Zainstaluj pakiet NuGet Microsoft.Identity.Client na potrzeby uwierzytelniania.
- Zainstaluj pakiet NuGet Microsoft.Rest.ClientRuntime na potrzeby uwierzytelniania.
-
Utwórz aplikację usługi Azure AD i jednostkę usługi, która może uzyskiwać dostęp do zasobów. Dodaj przypisanie roli w zakresie subskrypcji i uzyskaj wymagane wartości:
Directory (tenant) ID, Application ID i Client Secret.
Tworzenie lub aktualizowanie klastra
Utwórz lub zaktualizuj klaster przy użyciu właściwości Identity:
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 authClient = ConfidentialClientApplicationBuilder.Create(clientId)
.WithAuthority($"https://login.microsoftonline.com/{tenantId}")
.WithClientSecret(clientSecret)
.Build();
var result = authClient.AcquireTokenForClient(new[] { "https://management.core.windows.net/" }).ExecuteAsync().Result;
var credentials = new TokenCredentials(result.AccessToken, result.TokenType);
var kustoManagementClient = new KustoManagementClient(credentials) { SubscriptionId = subscriptionId };
var resourceGroupName = "testrg";
var clusterName = "mykustocluster";
var userIdentityResourceId = $"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identityName>";
var clusterData = new Cluster(
location: "Central US",
sku: new AzureSku("Standard_E8ads_v5", "Standard", 5),
identity: new Identity(
IdentityType.UserAssigned,
userAssignedIdentities: new Dictionary<string, IdentityUserAssignedIdentitiesValue>(1)
{
{ userIdentityResourceId, new IdentityUserAssignedIdentitiesValue() }
}
)
);
await kustoManagementClient.Clusters.CreateOrUpdateAsync(resourceGroupName, clusterName, clusterData);
Uruchom następujące polecenie, aby sprawdzić, czy klaster został pomyślnie utworzony lub zaktualizowany przy użyciu tożsamości:
clusterData = await kustoManagementClient.Clusters.GetAsync(resourceGroupName, clusterName);
Jeśli wynik zawiera ProvisioningState z wartością Succeeded, klaster został utworzony lub zaktualizowany i powinien mieć następujące właściwości:
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId;
var clientGuid = userIdentity.ClientId;
PrincipalId jest unikatowym identyfikatorem tożsamości używanej do administrowania usługą Azure AD.
ClientId jest unikatowym identyfikatorem nowej tożsamości aplikacji używanej do określania tożsamości, która ma być używana podczas wywołań środowiska uruchomieniowego.
Dodawanie tożsamości przypisanej przez użytkownika przy użyciu szablonu usługi Azure Resource Manager
Szablon usługi Azure Resource Manager może służyć do automatyzowania wdrażania zasobów platformy Azure. Aby dowiedzieć się więcej na temat wdrażania w usłudze Azure Data Explorer, zobacz Tworzenie klastra i bazy danych usługi Azure Data Explorer przy użyciu szablonu usługi Azure Resource Manager.
Dowolny zasób typu Microsoft.Kusto/clusters można utworzyć przy użyciu tożsamości przypisanej przez użytkownika, uwzględniając następującą właściwość w definicji zasobu, zastępując <RESOURCEID> identyfikatorem zasobu żądanej tożsamości:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
}
Na przykład:
{
"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'))]"
]
}
Po utworzeniu klastra ma następujące dodatkowe właściwości:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
}
PrincipalId jest unikatowym identyfikatorem tożsamości używanej do administrowania usługą Azure AD.
ClientId jest unikatowym identyfikatorem nowej tożsamości aplikacji używanej do określania tożsamości, która ma być używana podczas wywołań środowiska uruchomieniowego.
Uwaga
Klaster może mieć jednocześnie tożsamości przypisane przez system i użytkownika. W tym przypadku type właściwość będzie miała wartość SystemAssigned,UserAssigned.
Usuwanie tożsamości zarządzanej przypisanej przez użytkownika z klastra
Usuń tożsamość przypisaną przez użytkownika przy użyciu witryny Azure Portal, języka C# lub szablonu usługi Resource Manager, jak opisano poniżej.
Usuwanie tożsamości zarządzanej przypisanej przez użytkownika w portalu Azure
Zaloguj się w witrynie Azure Portal.
W lewym okienku portalu wybierz Ustawienia >Identity.
Wybierz kartę Przypisany użytkownik.
Wyszukaj utworzoną wcześniej tożsamość i wybierz ją. Wybierz Usuń.
W oknie podręcznym wybierz opcję Tak, aby usunąć tożsamość przypisaną użytkownikowi. Okienko Identity wraca do tego samego stanu co przed dodaniem tożsamości użytkownika.
Usuwanie tożsamości przypisanej przez użytkownika przy użyciu języka C#
Uruchom następujące polecenie, aby usunąć tożsamość przypisaną przez użytkownika:
var clusterUpdate = new ClusterUpdate(
identity: new Identity(
IdentityType.UserAssigned,
userAssignedIdentities: new Dictionary<string, IdentityUserAssignedIdentitiesValue>(1)
{
{ userIdentityResourceId, null }
}
)
);
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, clusterUpdate);
Usuwanie tożsamości przypisanej przez użytkownika przy użyciu szablonu usługi Azure Resource Manager
Uruchom następujące polecenie, aby usunąć tożsamość przypisaną przez użytkownika:
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": null
}
}
}
Uwaga
- Aby usunąć identyfikatory, ustaw ich wartości na null. Nie będzie to miało wpływu na wszystkie inne istniejące tożsamości.
- Aby usunąć wszystkie tożsamości przypisane przez użytkownika, właściwość
type powinna być None.
- Jeśli klaster miał jednocześnie tożsamości przypisane przez system i przypisane przez użytkownika, właściwość
type będzie zawierać SystemAssigned,UserAssigned listę tożsamości do usunięcia lub SystemAssigned w celu usunięcia wszystkich tożsamości przypisanych przez użytkownika.
Następne kroki