Sdílet prostřednictvím


Nastavení a konfigurace reverzního proxy serveru v Azure Service Fabric

Reverzní proxy server je volitelná služba Azure Service Fabric, která pomáhá mikroslužbám spuštěným v clusteru Service Fabric zjišťovat a komunikovat s dalšími službami, které mají koncové body HTTP. Další informace najdete v tématu Reverzní proxy server v Azure Service Fabric. V tomto článku se dozvíte, jak nastavit a nakonfigurovat reverzní proxy server v clusteru.

Povolení reverzního proxy serveru pomocí webu Azure Portal

Azure Portal nabízí možnost povolit reverzní proxy při vytváření nového clusteru Service Fabric. Existující cluster nemůžete upgradovat tak, aby používal reverzní proxy server prostřednictvím portálu.

Pokud chcete nakonfigurovat reverzní proxy server při vytváření clusteru pomocí webu Azure Portal, ujistěte se, že provedete následující kroky:

  1. V kroku 2: Konfigurace clusteru v části Konfigurace typu uzlu vyberte Povolit reverzní proxy server.

    Povolení reverzního proxy serveru na portálu

  2. (Volitelné) Pokud chcete nakonfigurovat zabezpečený reverzní proxy server, musíte nakonfigurovat certifikát TLS/SSL. V kroku 3: Zabezpečení v části Konfigurace nastavení zabezpečení clusteru v části Typ konfigurace vyberte Vlastní. Potom v části Certifikát SSL reverzního proxy serveru vyberte Zahrnout certifikát SSL pro reverzní proxy server a zadejte podrobnosti o certifikátu.

    Konfigurace zabezpečeného reverzního proxy serveru na portálu

    Pokud se rozhodnete nekonfigurovat reverzní proxy server s certifikátem při vytváření clusteru, můžete to udělat později prostřednictvím šablony Resource Manageru pro skupinu prostředků clusteru. Další informace najdete v tématu Povolení reverzního proxy serveru prostřednictvím šablon Azure Resource Manageru.

Povolení reverzního proxy serveru prostřednictvím šablon Azure Resource Manageru

V případě clusterů v Azure můžete pomocí šablony Azure Resource Manageru povolit reverzní proxy server v Service Fabric. Reverzní proxy server můžete povolit při vytváření clusteru nebo ho později povolit aktualizací clusteru.

Pro nový cluster můžete vytvořit vlastní šablonu Resource Manageru nebo můžete použít ukázkovou šablonu.

Ukázkové šablony Resource Manageru, které vám pomůžou nakonfigurovat zabezpečený reverzní proxy server pro cluster Azure, najdete v ukázkových šablonách zabezpečeného reverzního proxy serveru na GitHubu. Pokyny a šablony pro konfiguraci zabezpečeného reverzního proxy serveru HTTPS v zabezpečeném clusteru v souboru README najdete v šablonách, které se mají použít ke konfiguraci zabezpečeného reverzního proxy serveru s certifikátem a zpracování převodu certifikátů.

Pro existující cluster můžete exportovat šablonu Resource Manageru pro skupinu prostředků clusteru pomocí webu Azure Portal, PowerShellu nebo Azure CLI.

Jakmile budete mít šablonu Resource Manageru, můžete reverzní proxy server povolit pomocí následujících kroků:

  1. Definujte port pro reverzní proxy server v části Parametry šablony.

    "SFReverseProxyPort": {
        "type": "int",
        "defaultValue": 19081,
        "metadata": {
            "description": "Endpoint for Service Fabric Reverse proxy"
        }
    },
    
  2. Zadejte port pro každý z objektů nodetype v části Typ prostředku Microsoft.ServiceFabric/clusters.

    Port je identifikován názvem parametru reverseProxyEndpointPort.

    {
        "apiVersion": "2021-06-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
       "nodeTypes": [
          {
           ...
           "reverseProxyEndpointPort": "[parameters('SFReverseProxyPort')]",
           ...
          },
        ...
        ],
        ...
    }
    
  3. Pokud chcete nakonfigurovat certifikáty TLS/SSL na portu pro reverzní proxy server, přidejte certifikát do objektu reverseProxyCertificate v šabloně prostředku Microsoft.ServiceFabric/clusters.

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

    Můžete také zadat běžný název reverzních proxy certifikátů pomocí objektu reverseProxyCertificateCommonNames v šabloně prostředků clusterů.

Podpora reverzního proxy certifikátu, který se liší od certifikátu clusteru

Pokud se certifikát reverzního proxy serveru liší od certifikátu, který cluster zabezpečuje, měl by být dříve zadaný certifikát nainstalovaný na virtuálním počítači a přidaný do seznamu řízení přístupu (ACL), aby k němu služba Service Fabric měla přístup. Můžete to provést v části Typ prostředku Microsoft.Compute/virtualMachineScaleSets. Pro instalaci přidejte certifikát do souboru osProfile. Oddíl rozšíření šablony může aktualizovat certifikát v seznamu ACL.

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

Poznámka:

Pokud používáte certifikáty, které se liší od certifikátu clusteru k povolení reverzního proxy serveru v existujícím clusteru, nainstalujte certifikát reverzního proxy serveru a před povolením reverzního proxy serveru aktualizujte seznam ACL v clusteru. Před zahájením nasazení šablony Azure Resource Manageru pomocí nastavení uvedených výše povolte reverzní proxy v krocích 1 až 3.

Povolení reverzního proxy serveru v samostatných clusterech

U samostatných clusterů povolíte reverzní proxy v ClusterConfig.json souboru. Reverzní proxy server můžete povolit při vytváření clusteru nebo upgradem konfigurace existujícího clusteru. Další informace o nastaveních dostupných v ClusterConfig.json souborech najdete v tématu Nastavení samostatného clusteru.

Následující kroky ukazují nastavení, která se mají použít k povolení reverzního proxy serveru, a volitelně k zabezpečení reverzního proxy serveru pomocí certifikátu X.509.

  1. Chcete-li povolit reverzní proxy server, nastavte hodnotu reverseProxyEndpointPort pro typ uzlu ve vlastnostech v konfiguraci clusteru. Následující kód JSON ukazuje nastavení portu koncového bodu reverzního proxy serveru na 19081 pro uzly s typem NodeType0:

        "properties": {
           ... 
            "nodeTypes": [
                {
                    "name": "NodeType0",
                    ...
                    "reverseProxyEndpointPort": "19081",
                    ...
                }
            ],
           ...
        }
    
  2. (Volitelné) Pro zabezpečený reverzní proxy server nakonfigurujte certifikát v části zabezpečení ve vlastnostech.

    • Pro vývojové nebo testovací prostředí můžete použít nastavení ReverseProxyCertificate :

           "properties": {
               ...
               "security": {
                   ...
                   "CertificateInformation": {
                       ...
                       "ReverseProxyCertificate": {
                           "Thumbprint": "[Thumbprint]",
                           "ThumbprintSecondary": "[Thumbprint]",
                           "X509StoreName": "My"
                       },
                       ...
                   }
               },
               ...
           }
      
    • Pro produkční prostředí se doporučuje nastavení ReverseProxyCertificateCommonNames :

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

    Další informace o konfiguraci a správě certifikátů pro samostatný cluster a další podrobnosti o konfiguraci certifikátů používaných k zabezpečení reverzního proxy serveru najdete v tématu Zabezpečení založeném na certifikátech X509.

Po změně souboru ClusterConfig.json na povolení reverzního proxy serveru postupujte podle pokynů v části Upgrade konfigurace clusteru a nasdílejte změny do clusteru.

Zveřejnění reverzního proxy serveru na veřejném portu prostřednictvím Azure Load Balanceru

Pokud chcete řešit reverzní proxy server mimo cluster Azure, nastavte pravidla Azure Load Balanceru a sondu stavu Azure pro port reverzního proxy serveru. Tyto kroky je možné provést pomocí webu Azure Portal nebo šablony Resource Manageru kdykoli po vytvoření clusteru.

Upozorňující

Když nakonfigurujete port reverzního proxy serveru v Load Balanceru, všechny mikroslužby v clusteru, které zpřístupňují koncový bod HTTP, se dají adresovat mimo cluster. To znamená, že mikroslužby, které mají být interní, můžou být zjistitelné určeným uživatelem se zlými úmysly. To potenciálně představuje závažná ohrožení zabezpečení, která je možné zneužít; například:

  • Uživatel se zlými úmysly může spustit útok na dostupnost služby opakovaným voláním interní služby, která nemá dostatečně posílený prostor pro útok.
  • Uživatel se zlými úmysly může do interní služby doručovat poškozené pakety, což vede k neúmyslnému chování.
  • Služba, která má být interní, může vracet soukromé nebo citlivé informace, které nemají být vystaveny službám mimo cluster, a tím tyto citlivé informace vystavit škodlivému uživateli.

Než zpřístupníte port reverzního proxy serveru, ujistěte se, že plně rozumíte a zmírníte potenciální důsledky zabezpečení clusteru a aplikací, které na něm běží.

Pokud chcete zveřejnit reverzní proxy server veřejně pro samostatný cluster, způsob, jakým to uděláte, bude záviset na systému, který cluster hostuje, a je nad rámec tohoto článku. Předchozí upozornění na zveřejnění reverzního proxy serveru veřejně platí.

Zveřejnění reverzního proxy serveru pomocí webu Azure Portal

  1. Na webu Azure Portal klikněte na skupinu prostředků vašeho clusteru a potom klikněte na nástroj pro vyrovnávání zatížení pro váš cluster.

  2. Pokud chcete přidat sondu stavu pro port reverzního proxy serveru, klikněte v levém podokně okna nástroje pro vyrovnávání zatížení v části NASTAVENÍ na Sondy stavu. Potom klepněte na tlačítko Přidat v horní části okna Sondy stavu a zadejte podrobnosti pro reverzní proxy port a klepněte na tlačítko OK. Ve výchozím nastavení je reverzní proxy port 19081, pokud jste ho nezměnili při vytváření clusteru.

    Konfigurace sondy stavu reverzního proxy serveru

  3. Pokud chcete přidat pravidlo Load Balanceru pro zveřejnění reverzního proxy portu, klikněte v levém podokně okna nástroje pro vyrovnávání zatížení v části NASTAVENÍ na tlačítko Pravidla vyrovnávání zatížení. Potom klikněte na Přidat v horní části okna pravidel vyrovnávání zatížení a zadejte podrobnosti pro reverzní proxy port. Ujistěte se, že jste nastavili hodnotu portu na port, na který chcete reverzní proxy server vystavit, hodnotu back-endového portu na port, který jste nastavili při povolení reverzního proxy serveru, a hodnotu sondy stavu na sondu stavu, kterou jste nakonfigurovali v předchozím kroku. Podle potřeby nastavte další pole a klikněte na tlačítko OK.

    Konfigurace pravidla nástroje pro vyrovnávání zatížení pro reverzní proxy server

Zveřejnění reverzního proxy serveru prostřednictvím šablon Resource Manageru

Následující kód JSON odkazuje na stejnou šablonu, která se používá v části Povolit reverzní proxy prostřednictvím šablon Azure Resource Manageru. Informace o tom, jak vytvořit šablonu Resource Manageru nebo exportovat šablonu pro existující cluster, najdete v této části dokumentu. Změny se provádějí v části Typ prostředku Microsoft.Network/loadBalancers.

{
    "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"
            }
        }  
    ]
}

Přizpůsobení chování reverzního proxy serveru pomocí nastavení prostředků infrastruktury

Chování reverzního proxy serveru můžete přizpůsobit nastavením prostředků infrastruktury v šabloně Resource Manageru pro clustery hostované v Azure nebo v souboru ClusterConfig.json pro samostatné clustery. Nastavení, která řídí chování reverzního proxy serveru, se nachází v části ApplicationGateway/Http v oddílu fabricSettings v části vlastností clusteru.

Můžete například nastavit hodnotu DefaultHttpRequestTimeout pro nastavení časového limitu pro požadavky na reverzní proxy na 180 sekund jako v následujícím formátu JSON:

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

Poznámka:

Reverzní proxy má limit 16 kB pro hlavičky a nepodporuje změnu prahové hodnoty na větší velikost.

Další informace o aktualizaci nastavení prostředků infrastruktury pro clustery Azure najdete v tématu Přizpůsobení nastavení clusteru pomocí šablon Resource Manageru. Informace o samostatných clusterech najdete v tématu Přizpůsobení nastavení clusteru pro samostatné clustery.

K vytvoření zabezpečené komunikace mezi reverzním proxy serverem a službami se používá několik nastavení prostředků infrastruktury. Podrobné informace o těchto nastaveních najdete v tématu Připojení k zabezpečené službě pomocí reverzního proxy serveru.

Další kroky