Menyebarkan aplikasi ke kluster yang dikelola Service Fabric

Rahasia dapat berupa informasi sensitif apa pun, seperti string koneksi penyimpanan, kata sandi, atau nilai lain yang tidak boleh ditangani dalam teks biasa. Sebaiknya gunakan Azure Key Vault untuk mengelola kunci dan rahasia untuk kluster yang dikelola Service Fabric dan memanfaatkannya untuk artikel ini. Namun, menggunakan rahasia dalam aplikasi adalah cloud platform-agnostic untuk memungkinkan aplikasi disebarkan ke kluster yang di-host di mana saja.

Cara yang disarankan untuk mengelola pengaturan konfigurasi layanan adalah melalui paket konfigurasi layanan. Paket konfigurasi dibuat versinya dan dapat diperbarui melalui peningkatan bergulir terkelola dengan validasi kesehatan dan rollback otomatis. Ini lebih cocok untuk konfigurasi global karena mengurangi kemungkinan ketidaktersediaan layanan global. Begitu pula dengan rahasia terenkripsi. Service Fabric memiliki fitur bawaan untuk mengenkripsi dan mendekripsi nilai dalam paket konfigurasi Settings.xml menggunakan enkripsi sertifikat.

Diagram berikut mengilustrasikan alur dasar untuk manajemen rahasia dalam aplikasi Service Fabric:

ringkasan manajemen rahasia

Ada empat langkah utama dalam alur ini:

  1. Dapatkan sertifikat penyandian data.
  2. Pasang sertifikat di kluster Anda.
  3. Enkripsi nilai rahasia saat menyebarkan aplikasi dengan sertifikat dan injeksikan ke file konfigurasi Settings.xml layanan.
  4. Baca nilai terenkripsi dari Settings.xml dengan mendekripsi menggunakan sertifikat penyandian yang sama.

Azure Key Vault digunakan di sini sebagai lokasi penyimpanan yang aman untuk sertifikat dan sebagai cara untuk menginstal sertifikat pada node klaster yang dikelola Service Fabric di Azure.

Untuk contoh tentang cara mengimplementasikan rahasia aplikasi, lihat Mengelola rahasia aplikasi.

Sebagai alternatif, kami juga mendukung KeyVaultReference. Dukungan KeyVaultReference Service Fabric memudahkan penyebaran rahasia ke aplikasi Anda hanya dengan merujuk URL rahasia yang disimpan di Key Vault.

Membuat sertifikat penyandian data

Untuk membuat brankas kunci Anda sendiri dan menyiapkan sertifikat, ikuti instruksi dari Azure Key Vault dengan menggunakan Azure CLI, PowerShell, Portal, dan lainnya.

Catatan

Brankas kunci harus diaktifkan untuk penyebaran templat agar penyedia sumber daya komputasi dapat memperoleh sertifikat dari brankas kunci tersebut dan menginstalnya pada node klaster.

Instal sertifikat di klaster Anda

Sertifikat ini harus diinstal pada setiap simpul (node) dalam klaster dan klaster yang dikelola Service Fabric akan mempermudah penginstalan ini. Layanan klaster terkelola dapat mendorong rahasia dengan versi tertentu ke simpul untuk membantu menginstal rahasia yang tidak akan sering berubah seperti menginstal Otoritas Sertifikat (OS) akar privat ke simpul. Untuk sebagian besar beban kerja produksi, kami menyarankan untuk menggunakan ekstensi KeyVault. Ekstensi komputer virtual Key Vault menyediakan refresh otomatis sertifikat yang disimpan di brankas kunci Azure vs. versi statis.

Untuk klaster terkelola, Anda memerlukan tiga nilai, dua dari Azure Key Vault dan satu yang Anda tentukan untuk nama penyimpanan lokal pada simpul.

Parameter:

  • Source Vault: Ini adalah
    • misalnya: /subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1
  • Certificate URL: Ini adalah pengidentifikasi rahasia Key Vault lengkap dan tidak peka huruf besar/kecil dan tidak dapat diubah
  • Certificate Store: Ini adalah penyimpanan sertifikat lokal pada simpul tempat sertifikasi akan ditempatkan
    • nama penyimpanan sertifikat pada simpul, misalnya: "SAYA"

Klaster yang dikelola Service Fabric mendukung dua metode untuk menambahkan rahasia dengan versi tertentu ke simpul Anda.

  1. Portal selama pembuatan klaster awal hanya memasukkan nilai dari atas ke dalam area ini:

input rahasia portal

  1. Azure Resource Manager selama pembuatan atau kapan saja
{
  "apiVersion": "2021-05-01",
  "type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
  "properties": {
    "vmSecrets": [
      {
        "sourceVault": {
          "id": "/subscriptions/{subscriptionid}/resourceGroups/myrg1/providers/Microsoft.KeyVault/vaults/mykeyvault1"
        },
        "vaultCertificates": [
          {
            "certificateStore": "MY",
            "certificateUrl": "https://mykeyvault1.vault.azure.net/certificates/{certificatename}/{secret-version}"
          }
        ]
      }
    ]
  }
}