Cara menambahkan atau menghapus sertifikat untuk kluster Service Fabric di Azure

Sebaiknya pelajari bagaimana Service Fabric menggunakan sertifikat X.509 dan mempelajari skenario keamanan Kluster. Anda harus memahami apa yang dimaksud dengan sertifikat kluster dan untuk apa digunakan, sebelum Anda melanjutkan lebih lanjut.

Perilaku beban sertifikat default Azure Service Fabrics SDK adalah untuk menyebarkan dan menggunakan sertifikat yang ditentukan dengan tanggal kedaluwarsa terpanjang; terlepas dari definisi konfigurasi primer atau sekundernya. Melakukan failback ke perilaku klasik adalah tindakan lanjutan yang tidak disarankan, dan memerlukan pengaturan nilai parameter pengaturan "UseSecondaryIfNewer" menjadi salah dalam konfigurasi Fabric.Code Anda.

Service fabric memungkinkan Anda menentukan dua sertifikat kluster, primer dan sekunder, saat Anda mengonfigurasi keamanan sertifikat selama pembuatan kluster, selain sertifikat klien. Lihat membuat kluster Azure melalui portal atau membuat kluster Azure melalui Azure Resource Manager untuk mengetahui detail tentang cara menyiapkannya pada waktu pembuatan. Jika Anda hanya menentukan satu sertifikat kluster pada waktu pembuatan, sertifikat tersebut digunakan sebagai sertifikat utama. Setelah pembuatan kluster, Anda dapat menambahkan sertifikat baru sebagai sekunder.

Catatan

Untuk kluster aman, Anda akan selalu memerlukan setidaknya satu sertifikat kluster yang valid (tidak dicabut dan tidak kedaluwarsa) (primer atau sekunder) yang disebarkan (jika tidak, kluster berhenti berfungsi). 90 hari sebelum semua sertifikat yang valid mencapai tanggal kedaluwarsa, sistem menghasilkan jejak peringatan dan peristiwa kesehatan peringatan pada simpul. Saat ini adalah satu-satunya pemberitahuan yang dikirim Service Fabric mengenai kedaluwarsa sertifikat.

Catatan

Kami menyarankan agar Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Menambahkan sertifikat kluster sekunder menggunakan portal

Sertifikat kluster sekunder tidak dapat ditambahkan melalui portal Azure; gunakan Azure Resource Manager.

Menghapus sertifikat kluster menggunakan portal

Untuk kluster aman, Anda akan selalu memerlukan setidaknya satu sertifikat yang valid (tidak dicabut dan tidak kedaluwarsa). Sertifikat yang disebarkan dengan tanggal kedaluwarsa yang panjang akan digunakan, dan menghapusnya akan membuat kluster Anda berhenti berfungsi; pastikan untuk menghapus sertifikat yang kedaluwarsa saja, atau sertifikat yang tidak digunakan yang kedaluwarsa paling cepat.

Untuk menghapus sertifikat keamanan kluster yang tidak digunakan, Buka bagian Keamanan dan pilih opsi 'Hapus' dari menu konteks pada sertifikat yang tidak digunakan.

Jika niat Anda adalah untuk menghapus sertifikat yang ditandai sebagai utama, Anda harus menggunakan sertifikat sekunder dengan tanggal kedaluwarsa yang lebih lama daripada sertifikat utama, yang memungkinkan perilaku rollover otomatis; hapus sertifikat utama setelah rollover otomatis selesai.

Menambahkan sertifikat sekunder menggunakan Azure Resource Manager

Langkah-langkah ini mengasumsikan bahwa Anda mengetahui cara kerja Resource Manager dan telah menyebarkan minimal satu kluster Service Fabric menggunakan templat Resource Manager, dan memiliki templat yang Anda gunakan untuk mengatur kluster yang berguna. Diasumsikan juga bahwa Anda nyaman menggunakan JSON.

Catatan

Jika Anda mencari contoh templat dan parameter yang dapat Anda gunakan untuk diikuti atau sebagai titik awal, unduh dari git-repo ini.

Edit templat Resource Manager

Untuk kemudahan menggunakannya, sampel 5-VM-1-NodeTypes-Secure_Step2.JSON berisi semua pengeditan yang akan kami buat. sampel tersedia di git-repo.

Pastikan untuk mengikuti semua langkah

  1. Buka templat Resource Manager yang Anda gunakan untuk menyebarkan Kluster Anda. (Jika Anda telah mengunduh sampel dari repo sebelumnya, gunakan 5-VM-1-NodeTypes-Secure_Step1.JSON untuk menggunakan kluster aman, lalu buka templat tersebut).

  2. Tambahkan dua parameter baru "secCertificateThumbprint" dan "secCertificateUrlValue" dengan jenis "string" ke bagian parameter templat Anda. Anda dapat menyalin cuplikan kode berikut dan menambahkannya ke templat. Bergantung pada sumber templat, Anda mungkin sudah memiliki ini didefinisikan, jika demikian lanjutkan ke langkah berikutnya.

       "secCertificateThumbprint": {
          "type": "string",
          "metadata": {
            "description": "Certificate Thumbprint"
          }
        },
        "secCertificateUrlValue": {
          "type": "string",
          "metadata": {
            "description": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>"
          }
        },
    
    
  3. Lakukan perubahan pada sumber daya Microsoft.ServiceFabric/clusters - Temukan definisi sumber daya "Microsoft.ServiceFabric/clusters" di templat Anda. Di bawah properti definisi tersebut, Anda akan menemukan tag JSON "Sertifikat", yang akan terlihat seperti cuplikan JSON berikut:

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    

    Tambahkan tag baru "thumbprintSecondary" dan berikan nilai "[parameters('secCertificateThumbprint')]".

    Jadi, sekarang definisi sumber daya harus terlihat seperti berikut (tergantung pada sumber templat Anda, mungkin tidak persis seperti cuplikan di bawah).

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "thumbprintSecondary": "[parameters('secCertificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    

    Jika Anda ingin melakukan rollover pada sertifikasi, tentukan sertifikasi baru sebagai primer dan pindahkan primer saat ini sebagai sekunder. Tindakan ini akan menghasilkan rollover sertifikat primer Anda saat ini ke sertifikat baru dalam satu langkah penyebaran.

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('secCertificateThumbprint')]",
              "thumbprintSecondary": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    
  4. Melakukan perubahan pada semua definisi sumber daya Microsoft.Compute/virtualMachineScaleSets - Temukan definisi sumber daya Microsoft.Compute/virtualMachineScaleSets. Gulir ke "penerbit": "Microsoft.Azure.ServiceFabric", di bawah "virtualMachineProfile".

    Dalam pengaturan penerbit Service Fabric, Anda akan melihat sesuatu seperti ini.

    Json_Pub_Setting1

    Tambahkan entri sertifikasi baru

                   "certificateSecondary": {
                        "thumbprint": "[parameters('secCertificateThumbprint')]",
                        "x509StoreName": "[parameters('certificateStoreValue')]"
                        }
                      },
    
    

    Properti sekarang akan terlihat seperti ini

    Json_Pub_Setting2

    Jika Anda ingin melakukan rollover pada sertifikasi, tentukan sertifikasi baru sebagai primer dan pindahkan primer saat ini sebagai sekunder. Hal ini akan menghasilkan rollover sertifikat Anda saat ini ke sertifikat baru dalam satu langkah penyebaran.

                   "certificate": {
                       "thumbprint": "[parameters('secCertificateThumbprint')]",
                       "x509StoreName": "[parameters('certificateStoreValue')]"
                         },
                   "certificateSecondary": {
                        "thumbprint": "[parameters('certificateThumbprint')]",
                        "x509StoreName": "[parameters('certificateStoreValue')]"
                        }
                      },
    

    Properti sekarang akan terlihat seperti ini
    Json_Pub_Setting3

  5. Melakukan Perubahan ke semua definisi sumber daya Microsoft.Compute/virtualMachineScaleSets - Temukan definisi sumber daya Microsoft.Compute/virtualMachineScaleSets. Gulir ke "vaultCertificates": , di bagian "OSProfile". hasilnya akan terlihat seperti ini.

    Json_Pub_Setting4

    Tambahkan secCertificateUrlValue ke dalamnya. gunakan cuplikan berikut:

                      {
                        "certificateStore": "[parameters('certificateStoreValue')]",
                        "certificateUrl": "[parameters('secCertificateUrlValue')]"
                      }
    
    

    Sekarang Json yang dihasilkan harus terlihat seperti ini. Json_Pub_Setting5

Catatan

Pastikan Anda telah mengulangi langkah 4 dan 5 untuk semua definisi sumber daya Nodetypes/Microsoft.Compute/virtualMachineScaleSets di templat Anda. Jika Anda melewatkan salah satunya, sertifikat tidak akan dipasang pada set skala komputer virtual dan Anda akan memiliki hasil yang tidak dapat diprediksi di kluster Anda, termasuk kluster turun (jika Anda berakhir tanpa sertifikat valid yang dapat digunakan kluster untuk keamanan. Jadi, periksa kembali sebelum melanjutkan ke langkah selanjutnya.

Mengedit file templat Anda untuk mencerminkan parameter baru yang Anda tambahkan di atas

Jika menggunakan sampel dari git-repo untuk diikuti, Anda dapat mulai melakukan perubahan Dalam sampel 5-VM-1-NodeTypes-Secure.parameters_Step2.JSON

Edit File parameter Template Resource Manager Anda, tambahkan dua parameter baru untuk secCertificateThumbprint dan secCertificateUrlValue.

    "secCertificateThumbprint": {
      "value": "thumbprint value"
    },
    "secCertificateUrlValue": {
      "value": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>"
     },

Menyebarkan templat ke Azure

  • Anda sekarang siap untuk menyebarkan templat Anda ke Azure. Buka perintah Azure PowerShell versi 1+.
  • Masuk ke Akun Azure Anda dan pilih langganan Azure tertentu. Ini adalah langkah penting bagi orang-orang yang memiliki akses ke lebih dari satu langganan Azure.
Connect-AzAccount
Select-AzSubscription -SubscriptionId <Subscription ID> 

Uji templat sebelum menyebarkannya. Gunakan Grup Sumber Daya yang sama dengan kluster Anda yang saat ini disebarkan.

Test-AzResourceGroupDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>

Sebarkan templat ke grup sumber daya Anda. Gunakan Grup Sumber Daya yang sama dengan kluster Anda yang saat ini disebarkan. Jalankan perintah New-AzResourceGroupDeployment. Anda tidak perlu menentukan mode, karena nilai defaultnya bertahap.

Catatan

Jika Anda mengatur Mode ke Selesai, Anda secara tidak sengaja dapat menghapus sumber daya yang tidak ada di templat Anda. Jadi jangan menggunakannya dalam skenario ini.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>

Berikut adalah contoh yang diisi dari PowerShell yang sama.

$ResourceGroup2 = "chackosecure5"
$TemplateFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure_Step2.json"
$TemplateParmFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure.parameters_Step2.json"

New-AzResourceGroupDeployment -ResourceGroupName $ResourceGroup2 -TemplateParameterFile $TemplateParmFile -TemplateUri $TemplateFile -clusterName $ResourceGroup2

Setelah penyebaran selesai, sambungkan ke kluster Anda menggunakan Sertifikat baru dan lakukan beberapa kueri. Jika Anda dapat melakukannya. Kemudian Anda dapat menghapus sertifikat lama.

Jika Anda menggunakan sertifikat yang ditandatangani sendiri, jangan lupa untuk mengimpornya ke penyimpanan sertifikat TrustedPeople lokal Anda.

######## Set up the certs on your local box
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)

Untuk referensi cepat di sini adalah perintah untuk terhubung ke kluster aman

$ClusterName= "chackosecure5.westus.cloudapp.azure.com:19000"
$CertThumbprint= "70EF5E22ADB649799DA3C8B6A6BF7SD1D630F8F3" 

Connect-serviceFabricCluster -ConnectionEndpoint $ClusterName -KeepAliveIntervalInSec 10 `
    -X509Credential `
    -ServerCertThumbprint $CertThumbprint  `
    -FindType FindByThumbprint `
    -FindValue $CertThumbprint `
    -StoreLocation CurrentUser `
    -StoreName My

Untuk referensi cepat di sini adalah perintah untuk mendapatkan kesehatan kluster

Get-ServiceFabricClusterHealth 

Menyebarkan sertifikat klien ke kluster.

Anda dapat menggunakan langkah-langkah yang sama seperti yang diuraikan dalam Langkah 5 sebelumnya agar sertifikat disebarkan dari keyvault ke Simpul. Anda hanya perlu menentukan dan menggunakan parameter yang berbeda.

Menambahkan atau menghapus sertifikat Klien

Selain sertifikat kluster, Anda dapat menambahkan sertifikat klien untuk melakukan operasi manajemen pada kluster Service Fabric.

Anda dapat menambahkan dua jenis sertifikat klien - Admin atau Baca-saja. Kemudian, hal ini dapat digunakan untuk mengontrol akses ke operasi admin dan operasi Kueri pada kluster. Secara default, sertifikat kluster ditambahkan ke daftar sertifikat Admin yang diizinkan.

Anda dapat menentukan sejumlah sertifikat klien. Setiap penambahan/penghapusan menghasilkan pembaruan konfigurasi ke kluster Service Fabric.

Menambahkan sertifikat klien - Admin atau Baca-Saja melalui portal

  1. Buka bagian Keamanan, dan pilih tombol '+ Autentikasi' di atas bagian keamanan.
  2. Pada bagian 'Tambahkan Autentikasi', pilih 'Jenis Autentikasi' - 'Klien baca-saja' atau 'Klien admin'
  3. Sekarang pilih metode Otorisasi. Ini menunjukkan kepada Service Fabric apakah harus mencari sertifikat ini dengan menggunakan nama subjek atau thumbprint. Secara umum, ini bukan praktik keamanan yang baik untuk menggunakan metode otorisasi nama subjek.

Menambahkan Sertifikat klien

Penghapusan Sertifikat Klien - Admin atau Baca Saja menggunakan portal

Untuk menghapus sertifikat sekunder agar tidak digunakan untuk keamanan kluster, Buka bagian Keamanan dan pilih opsi 'Hapus' dari menu konteks pada sertifikat tertentu.

Menambahkan sertifikat aplikasi ke set skala komputer virtual

Untuk menyebarkan sertifikat yang gunakan untuk aplikasi ke kluster Anda, lihat sampel skrip PowerShell ini.

Langkah berikutnya

Baca artikel ini untuk mengetahui informasi selengkapnya tentang manajemen kluster: