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

注意

針對最初使用 Azure Cmdlet 部署的現有應用程式,不支援啟用身分識別。

為存取 Azure Service Fabric 應用程式的受控識別,您必須先在該叢集啟用受控識別權杖服務。 這項服務負責驗證使用了受控識別的 Service Fabric 應用程式,並代表應用程式取得存取權杖。 啟用服務後,該服務隨即顯示於左窗格 [系統] 區段下的 Service Fabric Explorer,並在名稱 fabric:/System/ManagedIdentityTokenService 下的其他系統服務旁執行。

注意

自 API 版本 "2019-06-01-preview" 起,系統支援使用受控識別部署 Service Fabric 應用程式。 應用程式類型、應用程式類型版本和服務資源也可使用相同的 API 版本。 支援的最低 Service Fabric 執行階段為 6.5 CU2。 此外,組建/套件環境也應該在 CU2 或更新版本有 Service Fabric .NET SDK

系統指派的受控識別

應用程式範本

若要使用系統所指派的受控識別來啟用應用程式,請將類型為 systemAssignedidentity 屬性新增至應用程式資源,如下例所示:

    {
      "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'))]"
      ],
      "identity": {
        "type" : "systemAssigned"
      },
      "properties": {
        "typeName": "[parameters('applicationTypeName')]",
        "typeVersion": "[parameters('applicationTypeVersion')]",
        "parameters": {
        }
      }
    }

此屬性會分別向 Azure Resource Manager、受控識別和 Service Fabric 資源提供者宣告,此資源應具有隱含的 (system assigned) 受控身分識別。

應用程式和服務封裝

  1. 更新應用程式資訊清單,在 [主體] 區段中新增含單一項目的 ManagedIdentity 元素,如下所示:

    ApplicationManifest.xml

    <Principals>
      <ManagedIdentities>
        <ManagedIdentity Name="SystemAssigned" />
      </ManagedIdentities>
    </Principals>
    

    這會將指派給應用程式的身分識別對應至自訂名稱,進一步指派給構成應用程式的服務。

  2. 在要指派受控識別的服務對應 ServiceManifestImport 區段中新增 IdentityBindingPolicy 元素,如下所示:

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="SystemAssigned" />
        </Policies>
      </ServiceManifestImport>
    

    此元素會將應用程式的身分識別指派給服務;若未進行此指派,該服務將無法存取應用程式的身分識別。 在上述程式碼片段中,SystemAssigned 身分識別 (為保留關鍵字) 會對應至自訂名稱 WebAdmin 下的服務定義。

  3. 更新服務資訊清單,在 [資源] 區段中新增 ManagedIdentity 元素,且其名稱應符合應用程式資訊清單中 IdentityBindingPolicy 定義的 ServiceIdentityRef 設定值:

    ServiceManifest.xml

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

    此為身分識別與服務的相等對應 (如上述),但從服務定義的觀點而言, 此處則會依應用程式資訊清單中宣告的自訂名稱 (WebAdmin)參考該身分識別。

後續步驟