Azure Service Fabric'te ters ara sunucuyu ayarlama ve yapılandırma

Ters ara sunucu, Bir Service Fabric kümesinde çalışan mikro hizmetlerin http uç noktaları olan diğer hizmetleri bulmasına ve bunlarla iletişim kurmalarına yardımcı olan isteğe bağlı bir Azure Service Fabric hizmetidir. Daha fazla bilgi edinmek için bkz . Azure Service Fabric'te ters proxy. Bu makalede, kümenizde ters ara sunucuyu ayarlama ve yapılandırma adımları gösterilmektedir.

Azure portalını kullanarak ters proxy'yi etkinleştirme

Azure portalı, yeni bir Service Fabric kümesi oluşturduğunuzda ters ara sunucuyu etkinleştirme seçeneği sunar. Mevcut bir kümeyi portal aracılığıyla ters ara sunucu kullanacak şekilde yükseltemezsiniz.

Azure portalını kullanarak küme oluştururken ters ara sunucuyu yapılandırmak için aşağıdakileri yaptığınızdan emin olun:

  1. 2. Adım: Küme Yapılandırması'nda Düğüm türü yapılandırması'nın altında Ters ara sunucuyu etkinleştir'i seçin.

    Portalda ters ara sunucuyu etkinleştirme

  2. (İsteğe bağlı) Güvenli ters ara sunucuyu yapılandırmak için bir TLS/SSL sertifikası yapılandırmanız gerekir. 3. Adım: Güvenlik'te, Küme güvenlik ayarlarını yapılandır'ın Yapılandırma türü altında Özel'i seçin. Ardından Ters Proxy SSL sertifikası'nın altında Ters ara sunucu için SSL sertifikası ekle'yi seçin ve sertifika ayrıntılarınızı girin.

    Portalda güvenli ters proxy yapılandırma

    Kümeyi oluştururken ters proxy'yi bir sertifikayla yapılandırmamayı seçerseniz, bunu daha sonra kümenin kaynak grubu için Resource Manager şablonu aracılığıyla yapabilirsiniz. Daha fazla bilgi edinmek için bkz . Azure Resource Manager şablonları aracılığıyla ters ara sunucuyu etkinleştirme.

Azure Resource Manager şablonları aracılığıyla ters ara sunucuyu etkinleştirme

Azure'daki kümeler için, Service Fabric'te ters ara sunucuyu etkinleştirmek için Azure Resource Manager şablonunu kullanabilirsiniz. Kümeyi oluştururken ters ara sunucuyu etkinleştirebilir veya kümeyi daha sonra güncelleştirerek etkinleştirebilirsiniz.

Yeni bir küme için özel bir Resource Manager şablonu oluşturabilir veya örnek bir şablon kullanabilirsiniz.

Azure kümesi için güvenli ters ara sunucu yapılandırmanıza yardımcı olabilecek örnek Resource Manager şablonlarını GitHub'daki Güvenli Ters Proxy Örnek Şablonları'nda bulabilirsiniz. Bir sertifikayla güvenli ters proxy yapılandırmak ve sertifika geçişi işlemek için kullanılacak yönergeler ve şablonlar için README dosyasındaki güvenli bir kümede HTTPS Ters Proxy yapılandırma bölümüne bakın.

Mevcut bir küme için Azure portalını, PowerShell'i veya Azure CLI'yı kullanarak kümenin kaynak grubu için Resource Manager şablonunu dışarı aktarabilirsiniz.

Resource Manager şablonunuz olduktan sonra aşağıdaki adımlarla ters proxy'yi etkinleştirebilirsiniz:

  1. Şablonun Parametreler bölümünde ters ara sunucu için bir bağlantı noktası tanımlayın.

    "SFReverseProxyPort": {
        "type": "int",
        "defaultValue": 19081,
        "metadata": {
            "description": "Endpoint for Service Fabric Reverse proxy"
        }
    },
    
  2. Microsoft.ServiceFabric/clusters Kaynak türü bölümünde nodetype nesnelerinin her biri için bağlantı noktasını belirtin.

    Bağlantı noktası, reverseProxyEndpointPort parametre adıyla tanımlanır.

    {
        "apiVersion": "2021-06-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
       "nodeTypes": [
          {
           ...
           "reverseProxyEndpointPort": "[parameters('SFReverseProxyPort')]",
           ...
          },
        ...
        ],
        ...
    }
    
  3. Ters ara sunucu için bağlantı noktasında TLS/SSL sertifikalarını yapılandırmak için, sertifikayı Microsoft.ServiceFabric/clusters kaynak şablonundaki reverseProxyCertificate nesnesine ekleyin.

    {
        "apiVersion": "2021-06-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        "dependsOn": [
            "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]"
        ],
        "properties": {
            ...
            "reverseProxyCertificate": {
                "thumbprint": "[parameters('sfReverseProxyCertificateThumbprint')]",
                "x509StoreName": "[parameters('sfReverseProxyCertificateStoreName')]"
            },
            ...
            "clusterState": "Default",
        }
    }
    

    Ayrıca, kümeler kaynak şablonundaki reverseProxyCertificateCommonNames nesnesini kullanarak ters proxy sertifikaları için ortak bir ad belirtebilirsiniz.

Küme sertifikasından farklı bir ters proxy sertifikasını destekleme

Ters ara sunucu sertifikası, kümenin güvenliğini sağlayan sertifikadan farklıysa, Service Fabric'in erişebilmesi için önceden belirtilen sertifika sanal makineye yüklenip erişim denetimi listesine (ACL) eklenmelidir. Bu işlem Microsoft.Compute/virtualMachineScaleSets Kaynak türü bölümünde yapılabilir. Yükleme için sertifikayı osProfile'a ekleyin. Şablonun uzantı bölümü, ACL'deki sertifikayı güncelleştirebilir.

{
  "apiVersion": "[variables('vmssApiVersion')]",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  ....
    "osProfile": {
        "adminPassword": "[parameters('adminPassword')]",
        "adminUsername": "[parameters('adminUsername')]",
        "computernamePrefix": "[parameters('vmNodeType0Name')]",
        "secrets": [
          {
            "sourceVault": {
              "id": "[parameters('sfReverseProxySourceVaultValue')]"
            },
            "vaultCertificates": [
              {
                "certificateStore": "[parameters('sfReverseProxyCertificateStoreValue')]",
                "certificateUrl": "[parameters('sfReverseProxyCertificateUrlValue')]"
              }
            ]
          }
        ]
      }
 ....
 "extensions": [
        {
            "name": "[concat(parameters('vmNodeType0Name'),'_ServiceFabricNode')]",
            "properties": {
                    "type": "ServiceFabricNode",
                    "autoUpgradeMinorVersion": false,
                    ...
                    "publisher": "Microsoft.Azure.ServiceFabric",
                    "settings": {
                      "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
                      "nodeTypeRef": "[parameters('vmNodeType0Name')]",
                      "dataPath": "D:\\\\SvcFab",
                      "durabilityLevel": "Bronze",
                      "testExtension": true,
                      "reverseProxyCertificate": {
                        "thumbprint": "[parameters('sfReverseProxyCertificateThumbprint')]",
                        "x509StoreName": "[parameters('sfReverseProxyCertificateStoreValue')]"
                      },
                },
                "typeHandlerVersion": "1.0"
            }
        },
    ]
  }

Not

Var olan bir kümede ters ara sunucuyu etkinleştirmek için küme sertifikasından farklı sertifikalar kullandığınızda, ters ara sunucuyu etkinleştirmeden önce ters proxy sertifikasını yükleyin ve ACL'yi kümede güncelleştirin. 1-3 arası adımlarda ters proxy'yi etkinleştirmek için bir dağıtımı başlatmadan önce belirtilen ayarları kullanarak Azure Resource Manager şablon dağıtımını tamamlayın.

Tek başına kümelerde ters ara sunucuyu etkinleştirme

Tek başına kümeler için, ClusterConfig.json dosyasında ters proxy'yi etkinleştirirsiniz. Ters ara sunucuyu küme oluşturma sırasında veya mevcut bir kümenin yapılandırmasını yükselterek etkinleştirebilirsiniz. ClusterConfig.json dosyalarında kullanılabilen ayarlar hakkında daha fazla bilgi edinmek için bkz . Tek başına küme ayarları.

Aşağıdaki adımlar, ters ara sunucuyu etkinleştirmek ve isteğe bağlı olarak X.509 sertifikasıyla ters proxy'nin güvenliğini sağlamak için kullanılacak ayarları gösterir.

  1. Ters ara sunucuyu etkinleştirmek için, küme yapılandırmasındaki özellikler altında düğüm türü için reverseProxyEndpointPort değerini ayarlayın. Aşağıdaki JSON, "NodeType0" türüne sahip düğümler için ters proxy uç noktası bağlantı noktasını 19081 olarak ayarlamayı gösterir:

        "properties": {
           ... 
            "nodeTypes": [
                {
                    "name": "NodeType0",
                    ...
                    "reverseProxyEndpointPort": "19081",
                    ...
                }
            ],
           ...
        }
    
  2. (İsteğe bağlı) Güvenli bir ters ara sunucu için, özellikler altındaki güvenlik bölümünde bir sertifika yapılandırın.

    • Geliştirme veya test ortamı için ReverseProxyCertificate ayarını kullanabilirsiniz:

           "properties": {
               ...
               "security": {
                   ...
                   "CertificateInformation": {
                       ...
                       "ReverseProxyCertificate": {
                           "Thumbprint": "[Thumbprint]",
                           "ThumbprintSecondary": "[Thumbprint]",
                           "X509StoreName": "My"
                       },
                       ...
                   }
               },
               ...
           }
      
    • Üretim ortamı için ReverseProxyCertificateCommonNames ayarı önerilir:

           "properties": {
               ...
               "security": {
                   ...
                   "CertificateInformation": {
                       ...
                       "ReverseProxyCertificateCommonNames": {
                         "CommonNames": [
                             {
                               "CertificateCommonName": "[CertificateCommonName]"
                             }
                           ],
                           "X509StoreName": "My"
                       },
                       ...
                   }
               },
               ...
           }
      

    Tek başına küme için sertifikaları yapılandırma ve yönetme hakkında daha fazla bilgi edinmek ve ters ara sunucuyu güvenli hale getirmek için kullanılan sertifikaları yapılandırma hakkında daha fazla bilgi için bkz . X509 sertifika tabanlı güvenlik.

Ters ara sunucuyu etkinleştirmek için ClusterConfig.json dosyanızı değiştirdikten sonra, değişiklikleri kümenize göndermek için Küme yapılandırmasını yükseltme başlığındaki yönergeleri izleyin.

Azure Load Balancer aracılığıyla genel bağlantı noktasında ters ara sunucuyu kullanıma sunma

Ters ara sunucuyu bir Azure kümesi dışından ele almak için, ters ara sunucu bağlantı noktası için Azure Load Balancer kurallarını ve bir Azure Sistem Durumu Yoklaması ayarlayın. Bu adımlar, kümeyi oluşturduktan sonra istediğiniz zaman Azure portalı veya Resource Manager şablonu kullanılarak gerçekleştirilebilir.

Uyarı

Load Balancer'da ters proxy'nin bağlantı noktasını yapılandırdığınızda, kümedeki HTTP uç noktasını kullanıma sunan tüm mikro hizmetler küme dışından ele alınabilir. Bu, dahili olması gereken mikro hizmetlerin, belirlenen bir kötü amaçlı kullanıcı tarafından bulunabileceği anlamına gelir. Bu potansiyel olarak kötüye kullanılabilecek ciddi güvenlik açıkları sunar; mesela:

  • Kötü amaçlı bir kullanıcı, yeterince sağlamlaştırılmış bir saldırı yüzeyine sahip olmayan bir iç hizmeti tekrar tekrar çağırarak hizmet reddi saldırısı başlatabilir.
  • Kötü amaçlı bir kullanıcı, hatalı biçimlendirilmiş paketleri bir iç hizmete teslim ederek istenmeyen davranışlara neden olabilir.
  • İç hizmet olması amaçlanan bir hizmet, küme dışındaki hizmetlere açık olması amaçlanmamış özel veya hassas bilgiler döndürerek bu hassas bilgileri kötü amaçlı bir kullanıcıya gösterebilir.

Ters proxy bağlantı noktasını genel hale getirmeden önce kümeniz ve üzerinde çalışan uygulamalar için olası güvenlik etkilerini tam olarak anladığınızdan ve azalttınızdan emin olun.

Ters proxy'yi tek başına bir küme için genel kullanıma açmak istiyorsanız, bunu yapma şekliniz kümeyi barındıran sisteme bağlıdır ve bu makalenin kapsamı dışındadır. Öte yandan ters proxy'yi genel kullanıma çıkarmayla ilgili yukarıdaki uyarı yine de geçerlidir.

Azure portalını kullanarak ters proxy'yi kullanıma sunma

  1. Azure portalında kümenizin kaynak grubuna ve ardından kümenizin yük dengeleyicisine tıklayın.

  2. Ters ara sunucu bağlantı noktası için sistem durumu Yoklaması eklemek için, yük dengeleyici penceresinin sol bölmesinde, AYARLAR'ın altında Sistem durumu yoklamaları'na tıklayın. Ardından Sistem Durumu yoklamaları penceresinin üst kısmındaki Ekle'ye tıklayın ve ters ara sunucu bağlantı noktasının ayrıntılarını girin, ardından Tamam'a tıklayın. Varsayılan olarak, kümeyi oluştururken değiştirmediğiniz sürece ters proxy bağlantı noktası 19081'dir.

    Ters proxy sistem durumu araştırmasını yapılandırma

  3. Ters proxy bağlantı noktasını kullanıma sunan bir Load Balancer kuralı eklemek için, yük dengeleyici penceresinin sol bölmesinde, AYARLAR'ın altında Yük dengeleme kuralları'na tıklayın. Ardından Yük dengeleme kuralları penceresinin üst kısmındaki Ekle'ye tıklayın ve ters ara sunucu bağlantı noktasının ayrıntılarını girin. Bağlantı noktası değerini, ters proxy'nin açık olmasını istediğiniz bağlantı noktasına, ters ara sunucuyu etkinleştirdiğinizde ayarladığınız bağlantı noktası için Arka uç bağlantı noktası değerini ve önceki adımda yapılandırdığınız sistem durumu yoklaması değerine ayarladığınızdan emin olun. Diğer alanları uygun şekilde ayarlayın ve Tamam'a tıklayın.

    Ters ara sunucu için yük dengeleyici kuralını yapılandırma

Resource Manager şablonları aracılığıyla ters proxy'yi kullanıma sunma

Aşağıdaki JSON, Azure Resource Manager şablonları aracılığıyla ters ara sunucuyu etkinleştirme bölümünde kullanılan şablona başvurur. Resource Manager şablonu oluşturma veya mevcut küme için bir şablonu dışarı aktarma hakkında bilgi için belgenin bu bölümüne bakın. Değişiklikler Microsoft.Network/loadBalancers Kaynak türü bölümünde yapılır.

{
    "apiVersion": "[variables('lbApiVersion')]",
    "type": "Microsoft.Network/loadBalancers",
    ...
    ...
    "loadBalancingRules": [
        ...
        {
            "name": "LBSFReverseProxyRule",
            "properties": {
                "backendAddressPool": {
                    "id": "[variables('lbPoolID0')]"
                },
                "backendPort": "[parameters('SFReverseProxyPort')]",
                "enableFloatingIP": "false",
                "frontendIPConfiguration": {
                    "id": "[variables('lbIPConfig0')]"
                },
                "frontendPort": "[parameters('SFReverseProxyPort')]",
                "idleTimeoutInMinutes": "5",
                "probe": {
                    "id": "[concat(variables('lbID0'),'/probes/SFReverseProxyProbe')]"
                },
                "protocol": "tcp"
            }
        }
    ],
    "probes": [
        ...
        {
            "name": "SFReverseProxyProbe",
            "properties": {
                "intervalInSeconds": 5,
                "numberOfProbes": 2,
                "port":     "[parameters('SFReverseProxyPort')]",
                "protocol": "tcp"
            }
        }  
    ]
}

Doku ayarlarını kullanarak ters proxy davranışını özelleştirme

Ters ara sunucu davranışını, Azure'da barındırılan kümeler için Resource Manager şablonunda veya tek başına kümeler için ClusterConfig.json dosyasındaki doku ayarları aracılığıyla özelleştirebilirsiniz. Ters ara sunucu davranışını denetleyen ayarlar, küme özellikleri bölümünün altındaki fabricSettings bölümündeki ApplicationGateway/Http bölümünde bulunur.

Örneğin, aşağıdaki JSON'da olduğu gibi ters ara sunucuya yönelik isteklerin zaman aşımını 180 saniye olarak ayarlamak için DefaultHttpRequestTimeout değerini ayarlayabilirsiniz:

{
"fabricSettings": [
          ...
          {
            "name": "ApplicationGateway/Http",
            "parameters": [
              {
                "name": "DefaultHttpRequestTimeout",
                "value": "180"
              }
            ]
          }
        ],
        ...
}

Not

Ters Ara Sunucu üst bilgiler için 16 KB sınırına sahiptir ve eşiğin daha büyük bir boyuta değiştirilmesini desteklemez.

Azure kümeleri için doku ayarlarını güncelleştirme hakkında daha fazla bilgi için bkz . Resource Manager şablonlarını kullanarak küme ayarlarını özelleştirme. Tek başına kümeler için bkz . Tek başına kümeler için küme ayarlarını özelleştirme.

Ters ara sunucu ile hizmetler arasında güvenli iletişim kurulmasına yardımcı olmak için çeşitli doku ayarları kullanılır. Bu ayarlar hakkında ayrıntılı bilgi için bkz . Ters proxy ile güvenli bir hizmete bağlanma.

Sonraki adımlar