Share via


Konfigurera omvänd proxy i Azure Service Fabric

Omvänd proxy är en valfri Azure Service Fabric-tjänst som hjälper mikrotjänster som körs i ett Service Fabric-kluster att identifiera och kommunicera med andra tjänster som har http-slutpunkter. Mer information finns i Omvänd proxy i Azure Service Fabric. Den här artikeln visar hur du konfigurerar omvänd proxy i klustret.

Aktivera omvänd proxy med Azure Portal

Azure Portal tillhandahåller ett alternativ för att aktivera omvänd proxy när du skapar ett nytt Service Fabric-kluster. Du kan inte uppgradera ett befintligt kluster för att använda omvänd proxy via portalen.

Om du vill konfigurera omvänd proxy när du skapar ett kluster med Azure Portal kontrollerar du att du gör följande:

  1. I Steg 2: Klusterkonfiguration går du till Nodtypskonfiguration och väljer Aktivera omvänd proxy.

    Aktivera omvänd proxy på portalen

  2. (Valfritt) För att konfigurera säker omvänd proxy måste du konfigurera ett TLS/SSL-certifikat. I Steg 3: Säkerhet går du till Konfigurera klustersäkerhetsinställningar och väljer Anpassad under Konfigurationstyp. Under SSL-certifikat för omvänd proxy väljer du Sedan Inkludera ett SSL-certifikat för omvänd proxy och anger din certifikatinformation.

    Konfigurera säker omvänd proxy på portalen

    Om du väljer att inte konfigurera den omvända proxyn med ett certifikat när du skapar klustret kan du göra det senare via mallen Resource Manager för klustrets resursgrupp. Mer information finns i Aktivera omvänd proxy via Azure Resource Manager-mallar.

Aktivera omvänd proxy via Azure Resource Manager-mallar

För kluster i Azure kan du använda Azure Resource Manager-mallen för att aktivera omvänd proxy i Service Fabric. Du kan aktivera omvänd proxy när du skapar klustret eller aktiverar det genom att uppdatera klustret vid ett senare tillfälle.

För ett nytt kluster kan du skapa en anpassad Resource Manager mall eller använda en exempelmall.

Du hittar exempel på Resource Manager mallar som kan hjälpa dig att konfigurera säker omvänd proxy för ett Azure-kluster i Exempelmallar för säker omvänd proxy på GitHub. Se Konfigurera omvänd HTTPS-proxy i ett säkert kluster i README-filen för instruktioner och mallar som ska användas för att konfigurera säker omvänd proxy med ett certifikat och för att hantera certifikatsåterställning.

För ett befintligt kluster kan du exportera Resource Manager-mallen för klustrets resursgrupp med hjälp av Azure Portal, PowerShell eller Azure CLI.

När du har en Resource Manager mall kan du aktivera omvänd proxy med följande steg:

  1. Definiera en port för den omvända proxyn i avsnittet Parametrar i mallen.

    "SFReverseProxyPort": {
        "type": "int",
        "defaultValue": 19081,
        "metadata": {
            "description": "Endpoint for Service Fabric Reverse proxy"
        }
    },
    
  2. Ange porten för vart och ett av nodetype-objekten i avsnittet Resurstypför Microsoft.ServiceFabric/clusters.

    Porten identifieras med parameternamnet reverseProxyEndpointPort.

    {
        "apiVersion": "2021-06-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        ...
       "nodeTypes": [
          {
           ...
           "reverseProxyEndpointPort": "[parameters('SFReverseProxyPort')]",
           ...
          },
        ...
        ],
        ...
    }
    
  3. Om du vill konfigurera TLS/SSL-certifikat på porten för den omvända proxyn lägger du till certifikatet i objektet reverseProxyCertificate i resursmallenMicrosoft.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",
        }
    }
    

    Du kan också ange ett vanligt namn för omvända proxycertifikat med hjälp av objektet reverseProxyCertificateCommonNames i klusterresursmallen.

Stöd för ett certifikat för omvänd proxy som skiljer sig från klustercertifikatet

Om det omvända proxycertifikatet skiljer sig från certifikatet som skyddar klustret bör det tidigare angivna certifikatet installeras på den virtuella datorn och läggas till i åtkomstkontrollistan (ACL) så att Service Fabric kan komma åt det. Detta kan göras i avsnittet Resurstypför Microsoft.Compute/virtualMachineScaleSets. För installation lägger du till certifikatet i osProfile. Tilläggsavsnittet i mallen kan uppdatera certifikatet i ACL:en.

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

Anteckning

När du använder certifikat som skiljer sig från klustercertifikatet för att aktivera omvänd proxy i ett befintligt kluster installerar du det omvända proxycertifikatet och uppdaterar ACL:en i klustret innan du aktiverar den omvända proxyn. Slutför distributionen av Azure Resource Manager-mallen med hjälp av inställningarna som nämndes tidigare innan du startar en distribution för att aktivera den omvända proxyn i steg 1–3.

Aktivera omvänd proxy i fristående kluster

För fristående kluster aktiverar du omvänd proxy i ClusterConfig.json-filen. Du kan aktivera omvänd proxy när klustret skapas eller genom att uppgradera konfigurationen för ett befintligt kluster. Mer information om de inställningar som är tillgängliga i ClusterConfig.json-filer finns i Fristående klusterinställningar.

Följande steg visar de inställningar som ska användas för att aktivera omvänd proxy och, om du vill, skydda den omvända proxyn med ett X.509-certifikat.

  1. Om du vill aktivera omvänd proxy anger du värdet reverseProxyEndpointPort för nodtypen under egenskaper i klusterkonfigurationen. Följande JSON visar inställningen för den omvända proxyslutpunktsporten till 19081 för noder med typen "NodeType0":

        "properties": {
           ... 
            "nodeTypes": [
                {
                    "name": "NodeType0",
                    ...
                    "reverseProxyEndpointPort": "19081",
                    ...
                }
            ],
           ...
        }
    
  2. (Valfritt) Konfigurera ett certifikat i säkerhetsavsnittet under egenskaper för en säker omvänd proxy.

    • För en utvecklings- eller testmiljö kan du använda inställningen ReverseProxyCertificate :

           "properties": {
               ...
               "security": {
                   ...
                   "CertificateInformation": {
                       ...
                       "ReverseProxyCertificate": {
                           "Thumbprint": "[Thumbprint]",
                           "ThumbprintSecondary": "[Thumbprint]",
                           "X509StoreName": "My"
                       },
                       ...
                   }
               },
               ...
           }
      
    • För en produktionsmiljö rekommenderas inställningen ReverseProxyCertificateCommonNames :

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

    Mer information om hur du konfigurerar och hanterar certifikat för ett fristående kluster samt mer information om hur du konfigurerar certifikat som används för att skydda omvänd proxy finns i X509-certifikatbaserad säkerhet.

När du har ändrat filen ClusterConfig.json för att aktivera omvänd proxy följer du anvisningarna i Uppgradera klusterkonfigurationen för att skicka ändringarna till klustret.

Exponera omvänd proxy på en offentlig port via Azure Load Balancer

Om du vill hantera den omvända proxyn utanför ett Azure-kluster konfigurerar du Azure Load Balancer regler och en Azure Health Probe för den omvända proxyporten. De här stegen kan utföras med hjälp av Azure Portal eller Resource Manager när som helst när du har skapat klustret.

Varning

När du konfigurerar den omvända proxyns port i Load Balancer kan alla mikrotjänster i klustret som exponerar en HTTP-slutpunkt adresseras utanför klustret. Det innebär att mikrotjänster som är avsedda att vara interna kan identifieras av en bestämd skadlig användare. Detta kan innebära allvarliga sårbarheter som kan utnyttjas. till exempel:

  • En obehörig användare kan starta en överbelastningsattack genom att upprepade gånger anropa en intern tjänst som inte har en tillräckligt härdad attackyta.
  • En obehörig användare kan leverera felaktiga paket till en intern tjänst, vilket resulterar i oavsiktligt beteende.
  • En tjänst som är avsedd att vara intern kan returnera privat eller känslig information som inte är avsedd att exponeras för tjänster utanför klustret, vilket exponerar denna känsliga information för en obehörig användare.

Se till att du förstår och minimerar potentiella säkerhetsförgreningar för klustret och de appar som körs på det innan du gör den omvända proxyporten offentlig.

Om du vill exponera omvänd proxy offentligt för ett fristående kluster beror det sätt på vilket du gör det på det system som är värd för klustret och ligger utanför omfånget för den här artikeln. Föregående varning om att exponera omvänd proxy offentligt gäller dock fortfarande.

Exponera den omvända proxyn med hjälp av Azure Portal

  1. Klicka på resursgruppen för klustret på Azure Portal och klicka sedan på lastbalanseraren för klustret.

  2. Om du vill lägga till en hälsoavsökning för den omvända proxyporten går du till den vänstra rutan i lastbalanserarens fönster och klickar på Hälsoavsökningar under INSTÄLLNINGAR. Klicka sedan på Lägg till överst i fönstret Hälsoavsökningar och ange information om den omvända proxyporten och klicka sedan på OK. Som standard är den omvända proxyporten 19081, såvida du inte ändrade den när du skapade klustret.

    Konfigurera omvänd proxyhälsoavsökning

  3. Om du vill lägga till en Load Balancer regel för att exponera den omvända proxyporten går du till den vänstra rutan i lastbalanseringsfönstret och klickar på Belastningsutjämningsregler under INSTÄLLNINGAR. Klicka sedan på Lägg till överst i fönstret Belastningsutjämningsregler och ange information om den omvända proxyporten. Kontrollera att du ställer in portvärdet på den port som du vill att den omvända proxyn ska exponeras på, portvärdet för serverdelen till den port som du angav när du aktiverade omvänd proxy och hälsoavsökningsvärdet för den hälsoavsökning som du konfigurerade i föregående steg. Ange andra fält efter behov och klicka på OK.

    Konfigurera lastbalanseringsregel för omvänd proxy

Exponera omvänd proxy via Resource Manager mallar

Följande JSON refererar till samma mall som används i Aktivera omvänd proxy via Azure Resource Manager mallar. Se avsnittet i dokumentet för information om hur du skapar en Resource Manager mall eller exporterar en mall för ett befintligt kluster. Ändringarna görs i avsnittet Resurstyp för 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"
            }
        }  
    ]
}

Anpassa beteendet för omvänd proxy med hjälp av infrastrukturinställningar

Du kan anpassa beteendet för omvänd proxy via infrastrukturinställningar i Resource Manager-mallen för kluster som finns i Azure eller i ClusterConfig.json-filen för fristående kluster. Inställningar som styr beteendet för omvänd proxy finns i avsnittet ApplicationGateway/Http i avsnittet fabricSettings under avsnittet klusteregenskaper .

Du kan till exempel ange värdet för DefaultHttpRequestTimeout för att ange tidsgränsen för begäranden till den omvända proxyn till 180 sekunder som i följande JSON:

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

Anteckning

Omvänd proxy har en gräns på 16 KB för rubriker och har inte stöd för att ändra tröskelvärdet till en större storlek.

Mer information om hur du uppdaterar infrastrukturinställningar för Azure-kluster finns i Anpassa klusterinställningar med Resource Manager mallar. För fristående kluster, se Anpassa klusterinställningar för fristående kluster.

Flera infrastrukturinställningar används för att upprätta säker kommunikation mellan omvänd proxy och tjänster. Detaljerad information om de här inställningarna finns i Ansluta till en säker tjänst med omvänd proxy.

Nästa steg