Azure Active Directory의 관리 ID를 사용하면 클러스터가 Azure Key Vault와 같은 다른 Azure AD로 보호되는 리소스에 쉽게 액세스할 수 있습니다. ID는 Azure 플랫폼에서 관리되며, 비밀을 프로비저닝하거나 회전하지 않아도 됩니다. 관리 ID 구성은 현재 클러스터에 고객 관리형 키를 사용하도록 설정하기 위해서만 지원됩니다.
관리 ID에 대한 개요는 Azure Data Explorer 클러스터에서 관리 ID를 사용하여 인증을 참조하세요.
Azure Data Explorer 클러스터에는 다음 두 가지 유형의 ID가 부여될 수 있습니다.
-
시스템 할당 ID: 클러스터에 연결되고 리소스가 삭제되면 삭제됩니다. 클러스터에는 시스템 할당 ID가 하나만 있을 수 있습니다.
-
사용자 할당 ID: 클러스터에 할당할 수 있는 독립 실행형 Azure 리소스입니다. 클러스터에는 여러 사용자 할당 ID가 있을 수 있습니다.
이 문서에서는 Azure Data Explorer 클러스터에 대한 시스템 할당 및 사용자 할당 관리 ID를 추가하고 제거하는 방법을 보여 줍니다.
비고
Azure Data Explorer 클러스터가 구독 또는 테넌트 간에 마이그레이션되는 경우 Azure Data Explorer의 관리 ID는 예상대로 작동하지 않습니다. 앱이 새 식별자를 얻으려면 해당 기능을 비활성화하고재활성화하여야 합니다. 새 ID를 사용하려면 다운스트림 리소스의 액세스 정책도 업데이트해야 합니다.
시스템 할당 ID 추가
클러스터에 연결되어 있고 클러스터가 삭제되면 삭제되는 시스템 할당 ID를 할당합니다. 클러스터에는 시스템 할당 ID가 하나만 있을 수 있습니다. 시스템 할당 ID를 사용하여 클러스터를 만들려면 클러스터에 추가 속성을 설정해야 합니다. 아래 설명된 대로 Azure Portal, C#또는 Resource Manager 템플릿을 사용하여 시스템 할당 ID를 추가합니다.
Azure Portal을 사용하여 시스템 할당 ID 추가
Azure Portal에 로그인합니다.
새 Azure Data Explorer 클러스터
Azure Data Explorer 클러스터 만들기
보안 탭 >시스템 할당 ID에서 켜기를 선택합니다. 시스템 할당 ID를 제거하려면 끄기를 선택합니다.
다음: 태그> 또는 검토 및 만들기를 선택하여 클러스터를 만드십시오.
기존 Azure Data Explorer 클러스터
기존 Azure Data Explorer 클러스터를 엽니다.
포털의 왼쪽 창에서 설정>ID 를 선택합니다.
Identity 패널의 >시스템 할당 탭:
-
상태 슬라이더를 켜기로 이동합니다.
-
저장을 선택합니다.
- 팝업 창에서 예를 선택합니다.
몇 분 후 화면에 다음이 표시됩니다.
-
개체 ID - 고객 관리형 키에 사용
-
사용 권한 - 관련 역할 할당 선택
C를 사용하여 시스템 할당 ID 추가#
필수 조건
Azure Data Explorer C# 클라이언트를 사용하여 관리 ID를 설정하려면 다음을 수행합니다.
클러스터 만들기 또는 업데이트
속성을 사용하여 클러스터를 만들거나 업데이트합니다.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);
다음 명령을 실행하여 클러스터가 ID로 성공적으로 생성되거나 업데이트되었는지 확인합니다.
clusterData = await kustoManagementClient.Clusters.GetAsync(resourceGroupName, clusterName);
결과에 값이 ProvisioningStateSucceeded 포함된 경우 클러스터가 만들어지거나 업데이트되었으며 다음 속성이 있어야 합니다.
var principalGuid = clusterData.Identity.PrincipalId;
var tenantGuid = clusterData.Identity.TenantId;
PrincipalId 및 TenantId가 각각 GUID로 대체됩니다. 이 속성은 TenantId ID가 속한 Azure AD 테넌트를 식별합니다. 클러스터 PrincipalId 의 새 ID에 대한 고유 식별자입니다. Azure AD 내에서 서비스 주체는 App Service 또는 Azure Functions 인스턴스에 지정한 이름과 동일합니다.
Azure Resource Manager 템플릿을 사용하여 시스템 할당 ID 추가
Azure Resource Manager 템플릿을 사용하여 Azure 리소스 배포를 자동화할 수 있습니다. Azure Data Explorer에 배포하는 방법에 대한 자세한 내용은 Azure Resource Manager 템플릿을 사용하여 Azure Data Explorer 클러스터 및 데이터베이스 만들기를 참조하세요.
시스템 할당 형식을 추가하면 Azure에서 클러스터의 ID를 만들고 관리하도록 지시합니다. 모든 Microsoft.Kusto/clusters 유형의 리소스는 ID를 사용하여 리소스 정의에 다음 속성을 포함하는 방법으로 만들 수 있습니다.
{
"identity": {
"type": "SystemAssigned"
}
}
다음은 그 예입니다.
{
"apiVersion": "2019-09-07",
"type": "Microsoft.Kusto/clusters",
"name": "[variables('clusterName')]",
"location": "[resourceGroup().location]",
"identity": {
"type": "SystemAssigned"
}
}
비고
클러스터는 시스템 할당 ID와 사용자 할당 ID를 동시에 가질 수 있습니다. 속성은 type 다음과 입니다. SystemAssigned,UserAssigned
클러스터를 만들 때 다음과 같은 추가 속성이 있습니다.
{
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
}
<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를 제거합니다.
Azure Portal을 사용하여 시스템 할당 ID 제거
Azure Portal에 로그인합니다.
포털의 왼쪽 창에서 설정>ID 를 선택합니다.
Identity 패널의 >시스템 할당 탭:
-
상태 슬라이더를 꺼짐으로 이동하세요.
-
저장을 선택합니다.
- 팝업 창에서 예를 선택하여 시스템 할당 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가 동시에 있는 경우 시스템 할당 ID 제거 후 속성은 type 입니다. UserAssigned
사용자 할당 ID 추가
클러스터에 사용자 할당 관리 ID를 할당합니다. 클러스터에는 둘 이상의 사용자 할당 ID가 있을 수 있습니다. 사용자 할당 ID를 사용하여 클러스터를 만들려면 클러스터에 추가 속성을 설정해야 합니다. 아래에 설명된 대로 Azure Portal, C#또는 Resource Manager 템플릿을 사용하여 사용자 할당 ID를 추가합니다.
Azure Portal을 사용하여 사용자 할당 ID 추가
Azure Portal에 로그인합니다.
사용자 할당 관리 ID 리소스를 만듭니다.
기존 Azure Data Explorer 클러스터를 엽니다.
포털의 왼쪽 창에서 설정>ID 를 선택합니다.
사용자 할당 탭에서 추가를 선택합니다.
이전에 만든 ID를 검색하여 선택합니다.
추가를 선택합니다.
C를 사용하여 사용자 할당 ID 추가#
필수 조건
Azure Data Explorer C# 클라이언트를 사용하여 관리 ID를 설정하려면 다음을 수행합니다.
클러스터 만들기 또는 업데이트
속성을 사용하여 클러스터를 만들거나 업데이트합니다.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);
다음 명령을 실행하여 클러스터가 ID로 성공적으로 생성되거나 업데이트되었는지 확인합니다.
clusterData = await kustoManagementClient.Clusters.GetAsync(resourceGroupName, clusterName);
결과에 값이 ProvisioningStateSucceeded 포함된 경우 클러스터가 만들어지거나 업데이트되었으며 다음 속성이 있어야 합니다.
var userIdentity = clusterData.Identity.UserAssignedIdentities[userIdentityResourceId];
var principalGuid = userIdentity.PrincipalId;
var clientGuid = userIdentity.ClientId;
Azure PrincipalId AD 관리에 사용되는 ID의 고유 식별자입니다. 애플리케이션의 새로운 ID를 지정하기 위해 런타임 호출 중 사용할 ID를 결정하는 고유 식별자입니다.
Azure Resource Manager 템플릿을 사용하여 사용자 할당 ID 추가
Azure Resource Manager 템플릿을 사용하여 Azure 리소스 배포를 자동화할 수 있습니다. Azure Data Explorer에 배포하는 방법에 대한 자세한 내용은 Azure Resource Manager 템플릿을 사용하여 Azure Data Explorer 클러스터 및 데이터베이스 만들기를 참조하세요.
리소스 정의에 다음 속성을 포함하고, 원하는 ID의 사용자 할당 ID를 사용할 수 있도록 Microsoft.Kusto/clusters을 해당 리소스 ID로 대체하여 <RESOURCEID> 형식의 모든 리소스를 만들 수 있습니다.
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
}
다음은 그 예입니다.
{
"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'))]"
]
}
클러스터를 만들 때 다음과 같은 추가 속성이 있습니다.
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
}
Azure PrincipalId AD 관리에 사용되는 ID의 고유 식별자입니다.
ClientId는 애플리케이션의 새로운 ID에 대한 고유 식별자로, 런타임 호출 시 사용할 ID를 지정하는 데 사용됩니다.
비고
클러스터는 시스템 할당 ID와 사용자 할당 ID를 동시에 가질 수 있습니다. 이 경우에 type 속성이 SystemAssigned,UserAssigned가 됩니다.
클러스터에서 사용자 할당 관리 ID 제거
아래에 설명된 대로 Azure Portal, C#또는 Resource Manager 템플릿을 사용하여 사용자 할당 ID를 제거합니다.
Azure Portal을 사용하여 사용자 할당 관리 ID 제거
Azure Portal에 로그인합니다.
포털의 왼쪽 창에서 설정>ID 를 선택합니다.
사용자 할당 탭을 선택합니다.
이전에 만든 ID를 검색하여 선택합니다.
선택 후제거.
팝업 창에서 예를 선택하여 사용자 할당 ID를 제거합니다.
ID 창은 사용자가 할당한 ID를 추가하기 전과 동일한 조건으로 되돌려 줍니다.
C를 사용하여 사용자 할당 ID 제거#
다음을 실행하여 사용자 할당 ID를 제거합니다.
var clusterUpdate = new ClusterUpdate(
identity: new Identity(
IdentityType.UserAssigned,
userAssignedIdentities: new Dictionary<string, IdentityUserAssignedIdentitiesValue>(1)
{
{ userIdentityResourceId, null }
}
)
);
await kustoManagementClient.Clusters.UpdateAsync(resourceGroupName, clusterName, clusterUpdate);
Azure Resource Manager 템플릿을 사용하여 사용자 할당 ID 제거
다음을 실행하여 사용자 할당 ID를 제거합니다.
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": null
}
}
}
비고
- ID를 제거하려면 해당 값을 null로 설정합니다. 다른 모든 기존 ID는 영향을 받지 않습니다.
- 모든 사용자 할당 ID를 제거하려면 속성
type은 None 다음과 입니다.
- 클러스터에 시스템 할당 ID와 사용자 할당 ID가 동시에 있을 경우,
type 속성은 제거할 ID와 함께 SystemAssigned,UserAssigned이거나, 모든 사용자 할당 ID를 제거하기 위해 SystemAssigned일 수 있습니다.
다음 단계