Bagikan melalui


Menyebarkan aplikasi dengan Identitas Terkelola ke kluster terkelola Service Fabric

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 menyebarkan aplikasi Service Fabric melalui Azure Resource Manager, lihat Menyebarkan aplikasi ke kluster terkelola menggunakan Azure Resource Manager.

Catatan

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

Penyebaran aplikasi Service Fabric dengan Identitas Terkelola didukung dengan versi API "2021-05-01" pada kluster terkelola.

Contoh templat klaster terkelola tersedia di sini: Templat kluster terkelola Service Fabric

Dukungan identitas terkelola di kluster terkelola Service Fabric

Ketika aplikasi Service Fabric dikonfigurasi dengan Identitas terkelola untuk sumber daya Azure dan disebarkan ke kluster, maka akan memicu konfigurasi otomatis Layanan Token Identitas Terkelola di kluster terkelola Service Fabric. Layanan ini bertanggung jawab atas autentikasi aplikasi Service Fabric menggunakan identitas terkelola mereka, dan untuk mendapatkan token akses atas nama mereka. Setelah layanan diaktifkan, Anda dapat melihatnya di Service Fabric Explorer di bagian Sistem di panel kiri, berjalan dengan nama fabric:/System/ManagedIdentityTokenService.

Catatan

Saat pertama kali aplikasi disebarkan dengan Identitas Terkelola, Anda akan melihat satu kali penyebaran yang lebih lama karena perubahan konfigurasi kluster otomatis. Diperkirakan ini akan memakan waktu dari 15 menit untuk kluster zona hingga 45 menit untuk kluster yang menjangkau zona. Jika ada penyebaran lain dalam penerbangan, konfigurasi Identitas Terkelola harus menunggu penyebaran selesai terlebih dahulu.

Sumber daya aplikasi mendukung penugasan SystemAssigned atau UserAssigned, dan penugasan dapat dilakukan seperti yang ditunjukkan pada cuplikan di bawah ini.

{
  "type": "Microsoft.ServiceFabric/managedclusters/applications",
  "apiVersion": "2021-05-01",
  "identity": {
    "type": "SystemAssigned",
    "userAssignedIdentities": {}
  },
}

Referensi JSON lengkap

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": "2021-05-01",
  "type": "Microsoft.ServiceFabric/managedclusters/applications",
  "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[parameters('applicationVersion')]",
    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]"
  ],
  "identity": {
    "type" : "userAssigned",
    "userAssignedIdentities": {
        "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]": {}
    }
  },
  "properties": {
    "version": "[parameters('applicationVersion')]",
    "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>
    

Identitas terkelola yang ditetapkan sistem

Templat aplikasi

Untuk mengaktifkan aplikasi dengan identitas terkelola yang ditetapkan sistem, tambahkan properti identitas ke sumber daya aplikasi, dengan jenis systemAssigned seperti yang ditunjukkan pada contoh di bawah ini:

    {
      "apiVersion": "2021-05-01",
      "type": "Microsoft.ServiceFabric/managedclusters/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": {
        }
      }
    }

Properti ini menyatakan (kepada Azure Resource Manager, dan Managed Identity and Service Fabric Resource Providers, masing-masing, bahwa sumber daya ini harus memiliki identitas terkelola implisit (system assigned).

Paket aplikasi dan layanan

  1. Perbarui manifes aplikasi untuk menambahkan elemen ManagedIdentity di bagian Prinsipal, yang berisi satu entri seperti yang ditunjukkan di bawah ini:

    ApplicationManifest.xml

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

    Ini memetakan identitas yang ditetapkan ke aplikasi sebagai sumber daya untuk nama panggilan, untuk tugas lebih lanjut ke layanan yang terdiri dari aplikasi.

  2. Di bagian ServiceManifestImport yang sesuai dengan layanan yang diberi identitas terkelola, tambahkan elemen IdentityBindingPolicy, seperti yang ditunjukkan di bawah ini:

    ApplicationManifest.xml

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

    Elemen ini menetapkan identitas aplikasi ke layanan; tanpa penugasan ini, layanan tidak akan dapat mengakses identitas aplikasi. Dalam potongan di atas, SystemAssigned identitas (yang merupakan kata kunci yang dipesan) dipetakan ke definisi layanan di bawah nama yang ramah WebAdmin.

  3. Perbarui manifes layanan untuk menambahkan elemen ManagedIdentity di dalam bagian Sumber Daya dengan nama yang cocok dengan nilai setelan ServiceIdentityRef dari definisi IdentityBindingPolicy dalam manifes aplikasi:

    ServiceManifest.xml

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

    Ini adalah pemetaan identitas yang setara ke layanan seperti yang dijelaskan di atas, tetapi dari perspektif definisi layanan. Di sini identitas dirujuk dengan nama sapaannya (WebAdmin), seperti yang dideklarasikan dalam manifes aplikasi.

Langkah berikutnya