將受控識別新增至 Service Fabric 受控叢集節點類型

Service Fabric 受控叢集中的每個節點類型都受到虛擬機器擴展集支援。 為了允許受控識別與受控叢集節點類型搭配使用,已將屬性 vmManagedIdentity 新增至節點類型定義,其中包含可能使用的身分識別清單 (userAssignedIdentities)。 功能會鏡像如何在非受控叢集中使用受控識別,例如使用受控識別搭配 Azure Key Vault 虛擬機器擴展集延伸模組

如需在節點類型上使用受控識別的 Service Fabric 受控叢集部署範例,請參閱這些範本。 此範例有兩個範本:

  1. 受控識別和角色指派:用來建立受控識別和角色指派的範本,可讓 Service Fabric RP 將身分識別指派給受控叢集的虛擬機器擴展集。 在節點類型資源上使用受控識別之前,應該只部署一次。

  2. 受控叢集和節點類型:此範本適用於 Service Fabric 受控叢集,以及使用之前所建立受控識別的節點類型資源。

注意

此功能目前僅支援使用者指派的身分識別。

必要條件

在開始之前:

  • 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶
  • 如果您打算使用 PowerShell,請安裝 Azure CLI 以執行 CLI 參考命令。

1.建立身分識別和角色指派

建立使用者指派的受控識別

使用者指派的受控識別可以定義在 Azure Resource Manager (ARM) 範本的資源區段中,以在部署時加以建立:

{
  "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 資源提供者應用程式,將角色指派新增至受控識別。 此指派可讓 Service Fabric 資源提供者將上一個步驟中建立的身分識別指派給受控叢集的虛擬機器擴展集。 這是一次性動作

取得 Service Fabric 資源提供者應用程式的服務主體:

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

注意

請確定您位於正確的訂用帳戶中,如果訂用帳戶位於不同的租用戶,主體識別碼將會變更。

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

使用先前輸出的 識別碼 作為 principalId,以及使用下方的角色定義識別碼,作為範本或 PowerShell 命令上的 roleDefinitionId (若適用的話):

角色定義名稱 角色定義識別碼
受控身分識別操作員 f1a07417-d97a-45cb-824c-7a7467783830

您可以使用主體識別碼和角色定義識別碼,在資源區段範本中定義此角色指派:

{
  "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 與原先使用的相同,或移除此資源,因為其只需要建立一次。

或透過 PowerShell 使用主體識別碼和角色定義名稱加以建立:

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

部署受控識別和角色指派。

執行 New-AzResourceGroupDeployment Cmdlet 來建立受控識別,並新增角色指派:

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

2.將身分識別指派給節點類型資源

將受控識別屬性新增至節點類型定義

最後,使用第一個步驟上所建立身分識別的完整資源識別碼,將 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')]"
      ]
    }
  }
}

指派身分識別來部署節點類型資源

執行 New-AzResourceGroupDeployment Cmdlet,以部署將受控識別指派給節點類型資源的 Service Fabric 受控叢集範本。

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

部署後,建立的受控識別已新增至所指定節點類型的虛擬機器擴展集,而且可以如預期般使用,就像在任何非受控叢集一樣。

疑難排解

若無法適當地新增角色指派,則在部署時將遇到下列錯誤:

Azure 入口網站 部署錯誤,顯示具有 SFRP 物件/應用程式識別碼的客戶端沒有執行身分識別管理活動的許可權

在此情況下,請確定已成功使用角色「受控識別操作員」建立角色指派。 在 Azure 入口網站上,您可以在受控識別資源的存取控制底下找到角色指派,如下所示。

在 Azure 入口網站 中顯示的使用者指派受控識別上,Service Fabric 資源提供者的角色指派屬性

後續步驟