Udostępnij za pośrednictwem


Konfigurowanie i konfigurowanie zwrotnego serwera proxy w usłudze Azure Service Fabric

Zwrotny serwer proxy to opcjonalna usługa Azure Service Fabric, która ułatwia mikrousługi uruchomione w klastrze usługi Service Fabric odnajdywanie i komunikowanie się z innymi usługami, które mają punkty końcowe HTTP. Aby dowiedzieć się więcej, zobacz Zwrotny serwer proxy w usłudze Azure Service Fabric. W tym artykule przedstawiono sposób konfigurowania i konfigurowania zwrotnego serwera proxy w klastrze.

Włączanie zwrotnego serwera proxy przy użyciu witryny Azure Portal

Witryna Azure Portal udostępnia opcję włączania zwrotnego serwera proxy podczas tworzenia nowego klastra usługi Service Fabric. Nie można uaktualnić istniejącego klastra do używania zwrotnego serwera proxy za pośrednictwem portalu.

Aby skonfigurować zwrotny serwer proxy podczas tworzenia klastra przy użyciu witryny Azure Portal, upewnij się, że wykonasz następujące czynności:

  1. W kroku 2: Konfiguracja klastra w obszarze Konfiguracja typu węzła wybierz pozycję Włącz zwrotny serwer proxy.

    Włączanie zwrotnego serwera proxy w portalu

  2. (Opcjonalnie) Aby skonfigurować bezpieczny zwrotny serwer proxy, należy skonfigurować certyfikat TLS/SSL. W kroku 3. Zabezpieczenia w obszarze Konfigurowanie ustawień zabezpieczeń klastra w obszarze Typ konfiguracji wybierz pozycję Niestandardowe. Następnie w obszarze Zwrotny certyfikat SSL serwera proxy wybierz pozycję Uwzględnij certyfikat SSL dla zwrotnego serwera proxy i wprowadź szczegóły certyfikatu.

    Konfigurowanie bezpiecznego zwrotnego serwera proxy w portalu

    Jeśli zdecydujesz się nie skonfigurować zwrotnego serwera proxy przy użyciu certyfikatu podczas tworzenia klastra, możesz to zrobić później za pomocą szablonu usługi Resource Manager dla grupy zasobów klastra. Aby dowiedzieć się więcej, zobacz Włączanie zwrotnego serwera proxy za pośrednictwem szablonów usługi Azure Resource Manager.

Włączanie zwrotnego serwera proxy za pośrednictwem szablonów usługi Azure Resource Manager

W przypadku klastrów na platformie Azure można użyć szablonu usługi Azure Resource Manager, aby włączyć zwrotny serwer proxy w usłudze Service Fabric. Zwrotny serwer proxy można włączyć podczas tworzenia klastra lub włączania go, aktualizując klaster w późniejszym czasie.

W przypadku nowego klastra można utworzyć niestandardowy szablon usługi Resource Manager lub użyć przykładowego szablonu.

Przykładowe szablony usługi Resource Manager mogą pomóc w skonfigurowaniu bezpiecznego zwrotnego serwera proxy dla klastra platformy Azure w przykładowych szablonach bezpiecznego zwrotnego serwera proxy w usłudze GitHub. Zapoznaj się z tematem Konfigurowanie zwrotnego serwera proxy HTTPS w bezpiecznym klastrze w pliku README, aby uzyskać instrukcje i szablony używane do konfigurowania bezpiecznego zwrotnego serwera proxy przy użyciu certyfikatu i obsługi przerzucania certyfikatów.

W przypadku istniejącego klastra można wyeksportować szablon usługi Resource Manager dla grupy zasobów klastra przy użyciu witryny Azure Portal, programu PowerShell lub interfejsu wiersza polecenia platformy Azure.

Po utworzeniu szablonu usługi Resource Manager możesz włączyć zwrotny serwer proxy, wykonując następujące czynności:

  1. Zdefiniuj port zwrotnego serwera proxy w sekcji Parametry szablonu.

    "SFReverseProxyPort": {
        "type": "int",
        "defaultValue": 19081,
        "metadata": {
            "description": "Endpoint for Service Fabric Reverse proxy"
        }
    },
    
  2. Określ port dla każdego obiektu nodetype w sekcji Typ zasobu Microsoft.ServiceFabric/clusters.

    Port jest identyfikowany przez nazwę parametru reverseProxyEndpointPort.

    {
        "apiVersion": "2021-06-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
       "nodeTypes": [
          {
           ...
           "reverseProxyEndpointPort": "[parameters('SFReverseProxyPort')]",
           ...
          },
        ...
        ],
        ...
    }
    
  3. Aby skonfigurować certyfikaty TLS/SSL na porcie dla zwrotnego serwera proxy, dodaj certyfikat do obiektu reverseProxyCertificate w szablonie zasobów 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",
        }
    }
    

    Można również określić nazwę pospolitą dla certyfikatów zwrotnego serwera proxy przy użyciu obiektu reverseProxyCertificateCommonNames w szablonie zasobów klastrów.

Obsługa certyfikatu zwrotnego serwera proxy, który różni się od certyfikatu klastra

Jeśli certyfikat zwrotnego serwera proxy różni się od certyfikatu, który zabezpiecza klaster, wcześniej określony certyfikat powinien zostać zainstalowany na maszynie wirtualnej i dodany do listy kontroli dostępu (ACL), aby usługa Service Fabric mogła uzyskać do niego dostęp. Można to zrobić w sekcji Microsoft.Compute/virtualMachineScaleSets Typ zasobu. W przypadku instalacji dodaj certyfikat do pliku osProfile. Sekcja rozszerzenia szablonu może zaktualizować certyfikat na liście 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"
            }
        },
    ]
  }

Uwaga

W przypadku używania certyfikatów innych niż certyfikat klastra w celu włączenia zwrotnego serwera proxy w istniejącym klastrze należy zainstalować certyfikat zwrotnego serwera proxy i zaktualizować listę ACL w klastrze przed włączeniem zwrotnego serwera proxy. Wykonaj wdrożenie szablonu usługi Azure Resource Manager przy użyciu ustawień wymienionych wcześniej przed rozpoczęciem wdrażania, aby włączyć zwrotny serwer proxy w krokach 1–3.

Włączanie zwrotnego serwera proxy w klastrach autonomicznych

W przypadku klastrów autonomicznych włączysz zwrotny serwer proxy w pliku ClusterConfig.json. Zwrotny serwer proxy można włączyć podczas tworzenia klastra lub uaktualniając konfigurację istniejącego klastra. Aby dowiedzieć się więcej o ustawieniach dostępnych w plikach ClusterConfig.json, zobacz Autonomiczne ustawienia klastra.

W poniższych krokach przedstawiono ustawienia używane do włączania zwrotnego serwera proxy i opcjonalnie zabezpieczania zwrotnego serwera proxy przy użyciu certyfikatu X.509.

  1. Aby włączyć zwrotny serwer proxy, ustaw wartość reverseProxyEndpointPort dla typu węzła we właściwościach w konfiguracji klastra. Poniższy kod JSON przedstawia ustawienie portu zwrotnego punktu końcowego serwera proxy na 19081 dla węzłów o typie "NodeType0":

        "properties": {
           ... 
            "nodeTypes": [
                {
                    "name": "NodeType0",
                    ...
                    "reverseProxyEndpointPort": "19081",
                    ...
                }
            ],
           ...
        }
    
  2. (Opcjonalnie) W przypadku bezpiecznego zwrotnego serwera proxy skonfiguruj certyfikat w sekcji zabezpieczeń we właściwościach.

    • W przypadku środowiska programistycznego lub testowego można użyć ustawienia ReverseProxyCertificate :

           "properties": {
               ...
               "security": {
                   ...
                   "CertificateInformation": {
                       ...
                       "ReverseProxyCertificate": {
                           "Thumbprint": "[Thumbprint]",
                           "ThumbprintSecondary": "[Thumbprint]",
                           "X509StoreName": "My"
                       },
                       ...
                   }
               },
               ...
           }
      
    • W przypadku środowiska produkcyjnego zalecane jest ustawienie ReverseProxyCertificateCommonNames :

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

    Aby dowiedzieć się więcej o konfigurowaniu certyfikatów dla klastra autonomicznego i zarządzaniu nimi, a także bardziej szczegółowo na temat konfigurowania certyfikatów używanych do zabezpieczania zwrotnego serwera proxy, zobacz Zabezpieczenia oparte na certyfikatach X509.

Po zmodyfikowaniu pliku ClusterConfig.json w celu włączenia zwrotnego serwera proxy postępuj zgodnie z instrukcjami w temacie Uaktualnianie konfiguracji klastra, aby wypchnąć zmiany do klastra.

Uwidacznianie zwrotnego serwera proxy na porcie publicznym za pośrednictwem usługi Azure Load Balancer

Aby rozwiązać problem z zwrotnym serwerem proxy spoza klastra platformy Azure, skonfiguruj reguły usługi Azure Load Balancer i sondę kondycji platformy Azure dla portu zwrotnego serwera proxy. Te kroki można wykonać za pomocą witryny Azure Portal lub szablonu usługi Resource Manager w dowolnym momencie po utworzeniu klastra.

Ostrzeżenie

Podczas konfigurowania portu zwrotnego serwera proxy w usłudze Load Balancer wszystkie mikrousługi w klastrze, które uwidaczniają punkt końcowy HTTP, są adresowane spoza klastra. Oznacza to, że mikrousługi przeznaczone do użytku wewnętrznego mogą być wykrywalne przez określonego złośliwego użytkownika. Potencjalnie stwarza to poważne luki w zabezpieczeniach, które mogą zostać wykorzystane; na przykład:

  • Złośliwy użytkownik może uruchomić atak typu "odmowa usługi", wielokrotnie wywołując usługę wewnętrzną, która nie ma wystarczająco wzmocnionej powierzchni ataków.
  • Złośliwy użytkownik może dostarczać źle sformułowane pakiety do usługi wewnętrznej, co powoduje niezamierzone zachowanie.
  • Usługa przeznaczona do użytku wewnętrznego może zwracać prywatne lub poufne informacje, które nie mają być widoczne dla usług spoza klastra, co spowoduje ujawnienie tych poufnych informacji złośliwemu użytkownikowi.

Przed upublicznieniem odwrotnego portu serwera proxy upewnij się, że w pełni rozumiesz i ograniczasz potencjalne konsekwencje zabezpieczeń dla klastra i uruchomionych w nim aplikacji.

Jeśli chcesz uwidocznić zwrotny serwer proxy publicznie dla klastra autonomicznego, sposób, w jaki to zrobisz, będzie zależeć od systemu hostowania klastra i wykracza poza zakres tego artykułu. Poprzednie ostrzeżenie dotyczące publicznego uwidaczniania zwrotnego serwera proxy, jednak nadal ma zastosowanie.

Uwidacznianie zwrotnego serwera proxy przy użyciu witryny Azure Portal

  1. W witrynie Azure Portal kliknij grupę zasobów dla klastra, a następnie kliknij moduł równoważenia obciążenia dla klastra.

  2. Aby dodać sondę kondycji dla portu zwrotnego serwera proxy, w lewym okienku okna modułu równoważenia obciążenia w obszarze USTAWIENIA kliknij pozycję Sondy kondycji. Następnie kliknij przycisk Dodaj w górnej części okna Sondy kondycji i wprowadź szczegóły dla portu zwrotnego serwera proxy, a następnie kliknij przycisk OK. Domyślnie port zwrotnego serwera proxy to 19081, chyba że został zmieniony podczas tworzenia klastra.

    Konfigurowanie sondy kondycji zwrotnego serwera proxy

  3. Aby dodać regułę modułu równoważenia obciążenia w celu uwidocznienia portu zwrotnego serwera proxy, w lewym okienku okna modułu równoważenia obciążenia w obszarze USTAWIENIA kliknij pozycję Reguły równoważenia obciążenia. Następnie kliknij przycisk Dodaj w górnej części okna Reguły równoważenia obciążenia i wprowadź szczegóły dla portu zwrotnego serwera proxy. Upewnij się, że ustawiono wartość Port na port, na którym ma być uwidoczniony zwrotny serwer proxy, wartość portu zaplecza na port ustawiony po włączeniu zwrotnego serwera proxy oraz wartość sondy kondycji do sondy kondycji skonfigurowanej w poprzednim kroku. Ustaw odpowiednie pola i kliknij przycisk OK.

    Konfigurowanie reguły modułu równoważenia obciążenia dla zwrotnego serwera proxy

Uwidacznianie zwrotnego serwera proxy za pomocą szablonów usługi Resource Manager

Poniższy kod JSON odwołuje się do tego samego szablonu, który jest używany w temacie Włączanie zwrotnego serwera proxy za pośrednictwem szablonów usługi Azure Resource Manager. Zapoznaj się z sekcją tego dokumentu, aby uzyskać informacje na temat tworzenia szablonu usługi Resource Manager lub eksportowania szablonu dla istniejącego klastra. Zmiany są wprowadzane w sekcji Microsoft.Network/loadBalancers Typ zasobu.

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

Dostosowywanie zachowania zwrotnego serwera proxy przy użyciu ustawień sieci szkieletowej

Zachowanie zwrotnego serwera proxy można dostosować za pomocą ustawień sieci szkieletowej w szablonie usługi Resource Manager dla klastrów hostowanych na platformie Azure lub w pliku ClusterConfig.json dla klastrów autonomicznych. Ustawienia kontrolujące zachowanie zwrotnego serwera proxy znajdują się w sekcji ApplicationGateway/Http w sekcji fabricSettings w sekcji właściwości klastra.

Można na przykład ustawić wartość DefaultHttpRequestTimeout , aby ustawić limit czasu dla żądań odwrotnego serwera proxy na 180 sekund, jak w następującym formacie JSON:

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

Uwaga

Zwrotny serwer proxy ma limit 16 KB dla nagłówków i nie obsługuje zmiany progu na większy rozmiar.

Aby uzyskać więcej informacji na temat aktualizowania ustawień sieci szkieletowej dla klastrów platformy Azure, zobacz Dostosowywanie ustawień klastra przy użyciu szablonów usługi Resource Manager. W przypadku klastrów autonomicznych zobacz Dostosowywanie ustawień klastra dla klastrów autonomicznych.

Kilka ustawień sieci szkieletowej służy do nawiązywania bezpiecznej komunikacji między zwrotnym serwerem proxy i usługami. Aby uzyskać szczegółowe informacje na temat tych ustawień, zobacz Nawiązywanie połączenia z bezpieczną usługą przy użyciu zwrotnego serwera proxy.

Następne kroki