Azure'da Service Fabric kümesine sertifika ekleme veya kaldırma

Service Fabric'in X.509 sertifikalarını nasıl kullandığını ve Küme güvenlik senaryolarını nasıl kullandığını anlamanız önerilir. Devam etmeden önce küme sertifikasının ne olduğunu ve ne için kullanıldığını anlamanız gerekir.

Azure Service Fabrics SDK'sının varsayılan sertifika yükleme davranışı, süresi dolmak üzere gelecekte en uzak olan tanımlı sertifikayı dağıtmak ve kullanmaktır; birincil veya ikincil yapılandırma tanımlarından bağımsız olarak. Klasik davranışa geri dönmek önerilen bir gelişmiş eylem değildir ve yapılandırmanızda parametre değerini false olarak ayarlamak için "UseSecondaryIfNewer" ayarının Fabric.Code yapılması gerekir.

Service fabric, istemci sertifikalarına ek olarak küme oluşturma sırasında sertifika güvenliğini yapılandırırken birincil ve ikincil olmak üzere iki küme sertifikası belirtmenize olanak tanır. Oluşturma zamanında ayarlama hakkında ayrıntılı bilgi için portal aracılığıylaAzure kümesi oluşturma veya Azure Resource Manager aracılığıyla Azure kümesi oluşturma makalesine bakın. Oluşturma sırasında yalnızca bir küme sertifikası belirtirseniz, birincil sertifika olarak kullanılır. Küme oluşturulduktan sonra ikincil sertifika olarak yeni bir sertifika ekleyebilirsiniz.

Not

Güvenli bir küme için her zaman en az bir geçerli (iptal edilmemiş ve süresi dolmamış) küme sertifikasının (birincil veya ikincil) dağıtılması gerekir (aksi takdirde küme çalışmayı durdurur). Tüm geçerli sertifikaların süresi dolmadan 90 gün önce sistem, düğümde bir uyarı izlemesi ve uyarı sistem durumu olayı oluşturur. Şu anda Service Fabric'in sertifika süre sonuyla ilgili olarak gönderdiği tek bildirimler bunlardır.

Not

Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Portalı kullanarak ikincil küme sertifikası ekleme

İkincil küme sertifikası Azure portal aracılığıyla eklenemez; Azure Resource Manager kullanın.

Portalı kullanarak küme sertifikasını kaldırma

Güvenli bir küme için her zaman en az bir geçerli (iptal edilmemiş ve süresi dolmamış) sertifikaya ihtiyacınız olacaktır. Gelecekteki son kullanma tarihine en uzak sertifikayla dağıtılan sertifika kullanımda olur ve sertifikanın kaldırılması kümenizin çalışmayı durdurmasını sağlar; yalnızca süresi dolan sertifikayı veya en yakın zamanda süresi dolan kullanılmayan bir sertifikayı kaldırdığınızdan emin olun.

Kullanılmayan bir küme güvenlik sertifikasını kaldırmak için Güvenlik bölümüne gidin ve kullanılmayan sertifikanın bağlam menüsünden 'Sil' seçeneğini belirleyin.

Amacınız birincil olarak işaretlenen sertifikayı kaldırmaksa, süresi dolan bir ikincil sertifikayı birincil sertifikadan daha ileriye dağıtarak otomatik geçiş davranışını etkinleştirmeniz gerekir; otomatik geçiş tamamlandıktan sonra birincil sertifikayı silin.

Azure Resource Manager kullanarak ikincil sertifika ekleme

Bu adımlarda, Resource Manager nasıl çalıştığı hakkında bilgi sahibi olduğunuz ve Resource Manager şablonu kullanarak en az bir Service Fabric kümesi dağıttığınız ve kümeyi ayarlamak için kullandığınız şablonun kullanışlı olduğu varsayılır. Ayrıca JSON'yi rahatça kullanabileceğiniz varsayılır.

Not

Birlikte veya başlangıç noktası olarak takip etmek için kullanabileceğiniz örnek bir şablon ve parametre arıyorsanız, bu git deposundan indirin.

Resource Manager şablonunuzu düzenleme

Birlikte takip etme kolaylığı için örnek 5-VM-1-NodeTypes-Secure_Step2.JSON yapılacak tüm düzenlemeleri içerir. örneği git-repo'da kullanılabilir.

Tüm adımları izlediğinden emin olun

  1. Kümenizi dağıtmak için kullandığınız Resource Manager şablonunu açın. (Örneği önceki depodan indirdiyseniz, güvenli bir küme dağıtmak ve sonra bu şablonu açmak için 5-VM-1-NodeTypes-Secure_Step1.JSON kullanın).

  2. Şablonunuzun parametre bölümüne "string" türünde iki yeni " secCertificateThumbprint" ve "secCertificateUrlValue" parametresi ekleyin. Aşağıdaki kod parçacığını kopyalayıp şablona ekleyebilirsiniz. Şablonunuzun kaynağına bağlı olarak, bir sonraki adıma geçerseniz bunları zaten tanımlamış olabilirsiniz.

       "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. Microsoft.ServiceFabric/clusters kaynağında değişiklik yapın - Şablonunuzda "Microsoft.ServiceFabric/clusters" kaynak tanımını bulun. Bu tanımın özellikleri altında aşağıdaki JSON kod parçacığına benzeyen "Certificate" JSON etiketini bulursunuz:

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

    Yeni bir "thumbprintSecondary" etiketi ekleyin ve "[parameters('secCertificateThumbprint')]" değerini verin.

    Bu nedenle artık kaynak tanımı aşağıdaki gibi görünmelidir (şablonun kaynağınıza bağlı olarak, aşağıdaki kod parçacığına tam olarak benzemeyebilir).

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

    Sertifikayı almak istiyorsanız, yeni sertifikayı birincil olarak belirtin ve geçerli birincili ikincil olarak taşıyın. Bu, geçerli birincil sertifikanızın tek bir dağıtım adımında yeni sertifikaya geçişiyle sonuçılır.

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('secCertificateThumbprint')]",
              "thumbprintSecondary": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    
  4. TümMicrosoft.Compute/virtualMachineScaleSets kaynak tanımlarında değişiklik yapın - Microsoft.Compute/virtualMachineScaleSets kaynak tanımını bulun. "virtualMachineProfile" altında "publisher": "Microsoft.Azure.ServiceFabric" bölümüne gidin.

    Service Fabric yayımcı ayarlarında bunun gibi bir şey görmeniz gerekir.

    Json_Pub_Setting1

    Yeni sertifika girdilerini ekleyin

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

    Özellikler artık şöyle görünmelidir

    Json_Pub_Setting2

    Sertifikayı almak istiyorsanız, yeni sertifikayı birincil olarak belirtin ve geçerli birincili ikincil olarak taşıyın. Bu, geçerli sertifikanızın tek bir dağıtım adımında yeni sertifikaya geçişiyle sonuçılır.

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

    Özellikler artık şöyle görünmelidir
    Json_Pub_Setting3

  5. TümMicrosoft.Compute/virtualMachineScaleSets kaynak tanımlarında Değişiklik Yapın - Microsoft.Compute/virtualMachineScaleSets kaynak tanımını bulun. "OSProfile" altında "vaultCertificates": bölümüne kaydırın. şöyle görünmelidir.

    Json_Pub_Setting4

    secCertificateUrlValue değerini ekleyin. aşağıdaki kod parçacığını kullanın:

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

    Sonuçta elde edilen Json şuna benzer olmalıdır. Json_Pub_Setting5

Not

Şablonunuzdaki tüm Nodetypes/Microsoft.Compute/virtualMachineScaleSets kaynak tanımları için 4. ve 5. adımları tekrarladığınızdan emin olun. Bunlardan birini kaçırırsanız, sertifika bu sanal makine ölçek kümesine yüklenmez ve kümenin kapanması da dahil olmak üzere kümenizde öngörülemeyen sonuçlar elde edersiniz (kümenin güvenlik için kullanabileceği geçerli bir sertifikanız yoksa). Devam etmeden önce bir kez daha kontrol edin.

Şablon dosyanızı, yukarıda eklediğiniz yeni parametreleri yansıtacak şekilde düzenleyin

Birlikte izlemek için git deposundaki örneği kullanıyorsanız, 5-VM-1-NodeTypes-Secure.parameters_Step2.JSON örneğinde değişiklik yapmaya başlayabilirsiniz

Resource Manager Şablon parametresi Dosyanızı düzenleyin, secCertificateThumbprint ve secCertificateUrlValue için iki yeni parametre ekleyin.

    "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>"
     },

Şablonu Azure’a dağıtma

  • Artık şablonunuzu Azure'a dağıtmaya hazırsınız. Azure PowerShell sürüm 1+ komut istemini açın.
  • Azure Hesabınızda oturum açın ve belirli Azure aboneliğini seçin. Bu, birden fazla Azure aboneliğine erişimi olan kişiler için önemli bir adımdır.
Connect-AzAccount
Select-AzSubscription -SubscriptionId <Subscription ID> 

Dağıtmadan önce şablonu test edin. Kümenizin şu anda dağıtılan Kaynak Grubu'nun aynısını kullanın.

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

Şablonu kaynak grubunuz için dağıtın. Kümenizin şu anda dağıtılan Kaynak Grubu'nun aynısını kullanın. New-AzResourceGroupDeployment komutunu çalıştırın. Varsayılan değer artımlı olduğundan modu belirtmeniz gerekmez.

Not

Modu Tamamlandı olarak ayarlarsanız, şablonunuzda olmayan kaynakları yanlışlıkla silebilirsiniz. Bu nedenle bu senaryoda kullanmayın.

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

Burada aynı PowerShell'in doldurulmuş bir örneği verilmiştir.

$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

Dağıtım tamamlandıktan sonra yeni Sertifikayı kullanarak kümenize bağlanın ve bazı sorgular gerçekleştirin. Mümkünse. Ardından eski sertifikayı silebilirsiniz.

Otomatik olarak imzalanan bir sertifika kullanıyorsanız, bunları yerel TrustedPeople sertifika deponuza aktarmayı unutmayın.

######## 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)

Hızlı başvuru için burada güvenli bir kümeye bağlanma komutu verilmiştir

$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

Hızlı başvuru için burada küme durumunu alma komutu verilmiştir

Get-ServiceFabricClusterHealth 

İstemci sertifikalarını kümeye dağıtma.

Sertifikaların bir anahtar kasasından Düğümlere dağıtılması için yukarıdaki Adım 5'te açıklanan adımların aynısını kullanabilirsiniz. Farklı parametreleri tanımlamanız ve kullanmanız yeterlidir.

İstemci sertifikalarını ekleme veya kaldırma

Küme sertifikalarına ek olarak, Service Fabric kümesinde yönetim işlemlerini gerçekleştirmek için istemci sertifikaları ekleyebilirsiniz.

İki tür istemci sertifikası ekleyebilirsiniz: Yönetici veya Salt okunur. Bunlar daha sonra kümedeki yönetici işlemlerine ve Sorgu işlemlerine erişimi denetlemek için kullanılabilir. Varsayılan olarak, küme sertifikaları izin verilen Yönetici sertifikaları listesine eklenir.

İstediğiniz sayıda istemci sertifikası belirtebilirsiniz. Her ekleme/silme işlemi Service Fabric kümesine bir yapılandırma güncelleştirmesi getirir.

İstemci sertifikaları ekleme - portal aracılığıyla Yönetici veya Read-Only

  1. Güvenlik bölümüne gidin ve güvenlik bölümünün üst kısmındaki '+ Kimlik Doğrulaması' düğmesini seçin.
  2. 'Kimlik Doğrulaması Ekle' bölümünde 'Kimlik Doğrulama Türü' - 'Salt okunur istemci' veya 'Yönetici istemcisi' öğesini seçin
  3. Şimdi Yetkilendirme yöntemini seçin. Bu, Service Fabric'e konu adını veya parmak izini kullanarak bu sertifikayı aramasının gerekip gerekmediğini gösterir. Genel olarak, konu adının yetkilendirme yöntemini kullanmak iyi bir güvenlik uygulaması değildir.

İstemci sertifikası ekleme

İstemci Sertifikalarını Silme - portalı kullanarak Yönetici veya Read-Only

İkincil sertifikanın küme güvenliği için kullanılmasını kaldırmak için Güvenlik bölümüne gidin ve belirli bir sertifikanın bağlam menüsünden 'Sil' seçeneğini belirleyin.

Sanal makine ölçek kümesine uygulama sertifikaları ekleme

Uygulamalarınız için kullandığınız bir sertifikayı kümenize dağıtmak için bu örnek PowerShell betiğine bakın.

Sonraki adımlar

Küme yönetimi hakkında daha fazla bilgi için şu makaleleri okuyun: