다음을 통해 공유


Service Fabric 관리형 클러스터 노드 유형에 관리 ID 추가

Service Fabric 관리형 클러스터의 각 노드 형식은 가상 머신 확장 집합을 통해 백업됩니다. 관리 ID를 관리형 클러스터 노드 형식에 사용할 수 있도록 vmManagedIdentity 속성이 사용할 수 있는 ID의 목록이 포함된 노드 형식 정의 userAssignedIdentities에 추가되었습니다. 이 기능은 관리 ID를 Azure Key Vault 가상 머신 확장 집합 확장에서 사용하는 경우와 같이 비 관리형 클러스터에서 관리 ID를 사용하는 방법을 미러링합니다.

특정 노드 형식에서 관리 ID를 사용하는 Service Fabric 관리형 클러스터 배포의 예는 이 템플릿을 참조하세요. 이 예제에는 다음과 같은 두 개의 템플릿이 있습니다.

  1. 관리 ID 및 역할 할당: 관리 ID 및 역할 할당을 만들기 위한 템플릿으로, Service Fabric RP가 관리 클러스터의 가상 머신 확장 집합에 ID를 할당할 수 있도록 합니다. 이는 노드 유형 리소스에서 관리 ID를 사용하기 전에 한 번만 배포해야 합니다.

  2. 관리 클러스터 및 노드 유형: 이전에 생성한 관리 ID를 사용한 서비스 패브릭 관리 클러스터 및 노드 유형 리소스에 대한 템플릿입니다.

참고 항목

현재, 이 기능에는 사용자 할당 ID만 지원됩니다.

참고 항목

애플리케이션 구성은 Service Fabric 관리형 클러스터에서 관리 ID로 애플리케이션 구성 및 사용을 참조하세요.

필수 조건

시작하기 전에 다음을 수행하십시오.

  • Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.
  • PowerShell을 사용하려는 경우 Azure CLI를 설치하여 CLI 참조 명령을 실행합니다.

1. ID 및 역할 할당 만들기

사용자 할당 관리 ID 만들기

사용자 할당 관리 ID는 ARM(Azure Resource Manager) 템플릿의 리소스에서 배포 시에 만들도록 정의할 수 있습니다.

{
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
  "name": "[parameters('userAssignedIdentityName')]",
  "apiVersion": "2023-01-31",
  "location": "[resourceGroup().location]"
}

또는 PowerShell을 통해 만들 수도 있습니다.

New-AzResourceGroup -Name <managedIdentityRGName> -Location <location>
New-AzUserAssignedIdentity -ResourceGroupName <managedIdentityRGName> -Name <userAssignedIdentityName>

Service Fabric 리소스 공급자를 사용하여 역할 할당 추가

Service Fabric 리소스 공급자 애플리케이션을 사용하여 관리 ID에 역할 할당을 추가합니다. 이 할당을 통해 Service Fabric 리소스 공급자가 관리형 클러스터의 가상 머신 확장 집합에 이전 단계에서 생성한 ID를 할당할 수 있습니다. 이 조치는 한 번만 수행하면 됩니다

Service Fabric 리소스 공급자 애플리케이션에 대한 서비스 주체를 가져옵니다.

Login-AzAccount
Select-AzSubscription -SubscriptionId <SubId>
Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"

참고 항목

올바른 구독에 있는지 확인합니다. 구독이 다른 테넌트에 있는 경우 보안 주체 ID가 변경됩니다.

ServicePrincipalNames : {74cb6831-0dbb-4be1-8206-fd4df301cdc2}
ApplicationId         : 74cb6831-0dbb-4be1-8206-fd4df301cdc2
ObjectType            : ServicePrincipal
DisplayName           : Azure Service Fabric Resource Provider
Id                    : 00000000-0000-0000-0000-000000000000

이전 출력의 IDprincipalId로 사용하고 아래의 역할 정의 ID를 roleDefinitionId로 사용합니다(템플릿 또는 PowerShell 명령에 적용 가능한 경우).

역할 정의 이름 역할 정의 ID
관리 ID 운영자 f1a07417-d97a-45cb-824c-7a7467783830

이 역할 할당은 주체 ID 및 역할 정의 ID를 사용하여 리소스 섹션 템플릿에서 정의할 수 있습니다.

{
  "type": "Microsoft.Authorization/roleAssignments",
  "apiVersion": "2022-04-01",
  "name": "[parameters('vmIdentityRoleNameGuid')]",
  "scope": "[concat('Microsoft.ManagedIdentity/userAssignedIdentities', '/', parameters('userAssignedIdentityName'))]",
  "dependsOn": [
    "[concat('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "properties": {
    "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', 'f1a07417-d97a-45cb-824c-7a7467783830')]",
    "principalId": "<Service Fabric Resource Provider ID>"
  }
}

참고 항목

vmIdentityRoleNameGuid는 유효한 GUID여야 합니다. 이 역할 할당을 포함하여 동일한 템플릿을 다시 배포하는 경우 GUID가 원래 사용된 것과 동일한지 확인합니다. 또는 한 번만 만들면 되므로 이 리소스를 제거합니다.

또는 보안 주체 ID 및 역할 정의 이름을 사용하여 PowerShell을 통해 생성할 수 있습니다.

New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Managed Identity Operator" -Scope "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>"

관리 ID 및 역할 할당을 배포합니다.

New-AzResourceGroupDeployment cmdlet을 실행하여 관리 ID를 생성하고 역할 할당을 추가합니다.

New-AzResourceGroupDeployment -ResourceGroupName <managedIdentityRGName> -TemplateFile ".\MangedIdentityAndSfrpRoleAssignment.json" -TemplateParameterFile ".\MangedIdentityAndSfrpRoleAssignment.Parameters.json" -Verbose

2. ID를 노드 유형 리소스에 할당

노드 형식 정의에 관리 ID 속성 추가

마지막으로, 첫 번째 단계에서 생성한 ID의 전체 리소스 ID를 사용하여 관리 클러스터의 노드 형식 정의에 vmManagedIdentityuserAssignedIdentities 속성을 추가합니다. apiVersion에 대해 2021-05-01 이상을 사용해야 합니다.

{
  "type": "Microsoft.ServiceFabric/managedClusters/nodeTypes",
  "apiVersion": "2022-01-01",
  "properties": {
    "isPrimary": true,
    "vmInstanceCount": 5,
    "dataDiskSizeGB": 100,
    "vmSize": "Standard_D2_v2",
    "vmImagePublisher": "MicrosoftWindowsServer",
    "vmImageOffer": "WindowsServer",
    "vmImageSku": "2019-Datacenter",
    "vmImageVersion": "latest",
    "vmManagedIdentity": {
      "userAssignedIdentities": [
        "[parameters('userAssignedIdentityResourceId')]"
      ]
    }
  }
}

ID를 할당하는 노드 유형 리소스 배포

New-AzResourceGroupDeployment cmdlet을 실행하여 관리 ID를 노드 형식 리소스에 할당하는 service fabric 관리 클러스터 템플릿을 배포합니다.

New-AzResourceGroupDeployment -ResourceGroupName <sfmcRGName> -TemplateFile ".\SfmcVmMangedIdentity.json" -TemplateParameterFile ".\SfmcVmMangedIdentity.Parameters.json" -Verbose

배포 후에는 생성된 관리 ID가 지정된 노드 형식의 가상 머신 확장 집합에 추가되고 비 관리형 클러스터에서와 마찬가지로 사용할 수 있습니다.

문제 해결

역할 할당을 올바르게 추가하지 못하면 배포 시 다음 오류가 발생합니다.

ID 관리 활동을 수행할 권한이 없는 클라이언트 및 SFRP의 개체/응용 프로그램 ID를 보여주는 Azure Portal 배포 오류

이 경우 역할 "관리 ID 연산자"를 사용하여 역할 할당이 성공적으로 생성되었는지 확인합니다. 역할 할당은 아래와 같이 관리 ID 리소스의 액세스 제어 아래에 있는 Azure Portal에서 찾을 수 있습니다.

Azure Portal에 표시된 사용자가 할당한 관리 ID의 Service Fabric 리소스 공급자에 대한 역할 할당 속성

다음 단계