Menerapkan aplikasi Service Fabric dengan User-Assigned Managed Identity

Untuk menerapkan aplikasi Service Fabric dengan identitas terkelola, aplikasi perlu digunakan melalui Azure Resource Manager, biasanya dengan templat Azure Resource Manager. Untuk informasi selengkapnya tentang cara menggunakan aplikasi Service Fabric melalui Azure Resource Manager, lihat Mengelola aplikasi dan layanan sebagai sumber daya Azure Resource Manager.

Catatan

Aplikasi yang tidak digunakan sebagai sumber daya Azure tidak dapat memiliki Identitas Terkelola.

Penyebaran aplikasi Service Fabric dengan Managed Identity didukung dengan versi API "2019-06-01-preview". Anda juga dapat menggunakan versi API yang sama untuk jenis aplikasi, versi jenis aplikasi, dan sumber daya layanan.

Identitas User-Assigned

Untuk mengaktifkan aplikasi dengan identitas User-Assigned, pertama-tama tambahkan properti identitas ke sumber daya aplikasi dengan jenis userAssigned dan identitas yang ditetapkan pengguna yang direferensikan. Kemudian tambahkan bagian managedIdentities di dalam bagian properti untuk sumber daya aplikasi yang berisi daftar nama yang ramah ke pemetaan principalId untuk setiap identitas user-assigned. Untuk informasi selengkapnya tentang Identitas User Assigned, lihat Membuat, mencantumkan, atau menghapus identitas user-assigned.

Templat aplikasi

Untuk mengaktifkan aplikasi dengan User Assigned identity, pertama-tama tambahkan properti identitas ke sumber daya aplikasi dengan jenis userAssigned dan identitas yang ditetapkan pengguna yang direferensikan, lalu tambahkan objek managedIdentities di dalam bagian properti yang berisi daftar nama yang mudah dipahami ke pemetaan principalId untuk setiap identitas yang ditetapkan pengguna.

{
  "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]"
      }
    ]
  }
}

Dalam contoh di atas, nama sumber daya identitas yang ditetapkan pengguna digunakan sebagai nama yang mudah dipahami dari identitas terkelola untuk aplikasi. Contoh berikut mengasumsikan nama yang mudah dipahami secara aktual adalah "AdminUser".

Paket aplikasi

  1. Untuk setiap identitas yang ditentukan dalam bagian managedIdentities di templat Azure Resource Manager, tambahkan tag <ManagedIdentity> dalam manifes aplikasi di bawah bagian Prinsipal. Atribut Name harus cocok dengan properti name yang ditentukan di bagian managedIdentities.

    ApplicationManifest.xml

      <Principals>
        <ManagedIdentities>
          <ManagedIdentity Name="AdminUser" />
        </ManagedIdentities>
      </Principals>
    
  2. Di bagian ServiceManifestImport, tambahkan IdentityBindingPolicy untuk layanan yang menggunakan Managed Identity. Kebijakan ini memetakan identitas AdminUser ke nama identitas khusus layanan yang perlu ditambahkan ke dalam manifes layanan di kemudian hari.

    ApplicationManifest.xml

      <ServiceManifestImport>
        <Policies>
          <IdentityBindingPolicy ServiceIdentityRef="WebAdmin" ApplicationIdentityRef="AdminUser" />
        </Policies>
      </ServiceManifestImport>
    
  3. Perbarui manifes layanan untuk menambahkan ManagedIdentity di dalam bagian Sumber Daya dengan nama yang cocok dengan ServiceIdentityRef di IdentityBindingPolicy manifes aplikasi:

    ServiceManifest.xml

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

Langkah berikutnya