システム割り当て ID:クラスターに関連付けられ、リソースが削除された場合は削除されます。 クラスターは 1 つのシステム割り当て ID しか持つことはできません。
ユーザー割り当て ID:クラスターに割り当てることができるスタンドアロン Azure リソース。 クラスターは複数のユーザー割り当て ID を持つことができます。
この記事では、Azure Data Explorer のシステム割り当ておよびユーザー割り当てのマネージド ID を追加および削除する方法について説明します。
注意
Azure Data Explorer クラスターがサブスクリプションやテナント間で移行された場合、Azure Data Explorer のマネージド ID は想定されたとおりに動作しません。 アプリは、機能を無効にしてから再度有効にすることで、新しい ID を取得する必要があります。 新しい ID を使用するには、ダウンストリーム リソースのアクセス ポリシーも更新する必要があります。
システム割り当て ID を追加する
クラスターに関連付けられており、クラスターが削除されると削除されるシステム割り当て ID を割り当てます。 クラスターは 1 つのシステム割り当て ID しか持つことはできません。 システム割り当て ID を持つクラスターを作成するには、クラスター上で追加のプロパティを設定する必要があります。 以下に詳細を示すとおり、Azure portal、C#、または Resource Manager テンプレートを使用してシステム割り当て ID を追加します。
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);
次のコマンドを実行して、クラスターが ID とともに正常に作成または更新されたかどうかを確認します。
<TENANTID> と <PRINCIPALID> は GUID で置き換えられます。
TenantId プロパティは、ID が属している Azure AD テナントを特定します。
PrincipalId は、クラスターの新しい ID の一意識別子です。 Azure AD のサービス プリンシパル名は、お使いの App Service または Azure Functions のインスタンスに指定したものと同じです。
システム割り当て ID を削除する
システム割り当て ID を削除すると、Azure AD からも削除されます。 クラスター リソースが削除されると、システム割り当て ID も Azure AD から自動的に削除されます。 システム割り当て ID を削除するには、機能を無効にします。 以下に詳細を示すとおり、Azure portal、C#、または Resource Manager テンプレートを使用してシステム割り当て ID を削除します。
ポップアップ ウィンドウで [はい] を選択して、システム割り当て ID を無効にします。
[ID] ペインは、システム割り当て ID が追加される前と同じ状態に戻ります。
C# を使用してシステム割り当て ID を削除する
システム割り当て ID を削除するには、次を実行します。
var clusterPatch = new ClusterUpdate(identity: new Identity(IdentityType.None));
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, clusterPatch);
Azure Resource Manager テンプレートを使用して、システム割り当て ID を削除する
システム割り当て ID を削除するには、次を実行します。
{
"identity": {
"type": "None"
}
}
注意
クラスターにシステム割り当てとユーザー割り当て ID の両方が同時にある場合、システム割り当て ID の削除後、type プロパティは UserAssigned になります。
ユーザー割り当て ID を追加する
クラスターにユーザー割り当てマネージド ID を割り当てます。 クラスターは複数のユーザー割り当て ID を持つことができます。 ユーザー割り当て ID を持つクラスターを作成するには、クラスター上で追加のプロパティを設定する必要があります。 以下に詳細を示すとおり、Azure portal、C#、または Resource Manager テンプレートを使用してユーザー割り当て ID を追加します。
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);
次のコマンドを実行して、クラスターが ID とともに正常に作成または更新されたかどうかを確認します。
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId;
var clientGuid = userIdentity.ClientId;
PrincipalId は、Azure AD の管理に使用される ID の一意識別子です。
ClientId は、ランタイム呼び出し中に使用される ID を指定するために使用される、アプリケーションの新しい ID の一意識別子です。
Azure Resource Manager テンプレートを使用して、ユーザー割り当て ID を追加する