利用使用者指派的受控身分識別來部署 Service Fabric 應用程式

若要部署具有受控識別的 Service Fabric 應用程式,則須透過 Azure Resource Manager 部署該應用程式,且通常使用 Azure Resource Manager 範本。 如需有關如何透過 Azure Resource Manager 部署 Service Fabric 應用程式的詳細資訊,請參閱將應用程式和服務視為 Azure Resource Manager 進行管理

注意

未部署為 Azure 資源的應用程式無法具有受控識別。

API 版本 "2019-06-01-preview" 支援使用受控識別進行 Service Fabric 應用程式部署。 應用程式類型、應用程式類型版本和服務資源也可使用相同的 API 版本。

使用者指派的身分識別

若應用程式要採用使用者指派的身分識別,請先將 identity 屬性新增至類型為 userAssigned 的應用程式資源,以及參考的使用者指派身分識別。 接著在包含自訂名稱清單的應用程式properties 區段中,針對每個使用者指派的身分識別將 managedIdentities 區段新增至 principalId 對應。 如需有關使用者指派身分識別的詳細資訊,請參閱建立、列出或刪除使用者指派的受控識別

應用程式範本

若應用程式要採用使用者指派的身分識別,請先將 identity 屬性新增至類型為 userAssigned 的應用程式資源,以及參考的使用者指派身分識別;接著在包含自訂名稱清單的 properties 區段中,針對每個使用者指派的身分識別將 managedIdentities 物件新增至 principalId 對應。

{
  "apiVersion": "2019-06-01-preview",
  "type": "Microsoft.ServiceFabric/clusters/applications",
  "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.ServiceFabric/clusters/', parameters('clusterName'), '/applicationTypes/', parameters('applicationTypeName'), '/versions/', parameters('applicationTypeVersion'))]",
    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "identity": {
    "type" : "userAssigned",
    "userAssignedIdentities": {
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]": {}
    }
  },
  "properties": {
    "typeName": "[parameters('applicationTypeName')]",
    "typeVersion": "[parameters('applicationTypeVersion')]",
    "parameters": {
    },
    "managedIdentities": [
      {
        "name" : "[parameters('userAssignedIdentityName')]",
        "principalId" : "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName')), '2018-11-30').principalId]"
      }
    ]
  }
}

在上述範例中,使用者指派的身分識別資源名稱會作為應用程式受控識別的自訂名稱。 以下範例假設實際自訂名稱為 "AdminUser"。

應用程式套件

  1. 針對 Azure Resource Manager 範本區段中 managedIdentities 定義的每個身分識別,在 Principals 區段下的應用程式資訊清單中新增 <ManagedIdentity> 標記。 Name 屬性須符合 managedIdentities 區段中定義的 name 屬性。

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. ServiceManifestImport 區段中,為使用受控識別的服務新增 IdentityBindingPolicy。 此原則會將 AdminUser 身分識別對應至服務專屬的身分識別名稱 (稍後須新增至服務資訊清單)。

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. 使用與應用程式資訊清單 IdentityBindingPolicyServiceIdentityRef 相符的名稱,在 Resources 區段內新增ManagedIdentity,以更新服務資訊清單:

    ServiceManifest.xml

      <Resources>
        ...
        <ManagedIdentities DefaultIdentity="WebAdmin">
          <ManagedIdentity Name="WebAdmin" />
        </ManagedIdentities>
      </Resources>
    

下一步