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 Hjälp av Azure-portalen
Azure-portalen innehå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 Hjälp av Azure-portalen kontrollerar du att du gör följande:
I Steg 2: Klusterkonfiguration går du till Nodtypskonfiguration och väljer Aktivera omvänd proxy.
(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. Under Konfigurationstyp väljer du Anpassad. 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.
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 Resource Manager-mallen 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-portalen, PowerShell eller Azure CLI.
När du har en Resource Manager-mall kan du aktivera omvänd proxy med följande steg:
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" } },
Ange porten för vart och ett av nodetype-objekten i avsnittet Resurstyp fö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')]", ... }, ... ], ... }
Om du vill konfigurera TLS/SSL-certifikat på porten för omvänd proxy lägger du till certifikatet i objektet reverseProxyCertificate i resursmallen 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", } }
Du kan också ange ett gemensamt 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 Resurstyp fö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"
}
},
]
}
Kommentar
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 filen ClusterConfig.json. 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.
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 en typ av "NodeType0":
"properties": { ... "nodeTypes": [ { "name": "NodeType0", ... "reverseProxyEndpointPort": "19081", ... } ], ... }
(Valfritt) För en säker omvänd proxy konfigurerar du ett certifikat i säkerhetsavsnittet under egenskaper.
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 din ClusterConfig.json-fil 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-portalen eller Resource Manager-mallen när som helst efter att du har skapat klustret.
Varning
När du konfigurerar den omvända proxyporten 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 upptäckas 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 illasinnad 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 eventuella 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-portalen
Klicka på resursgruppen för klustret på Azure-portalen och klicka sedan på lastbalanseraren för klustret.
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 för 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.
Om du vill lägga till en Load Balancer-regel för att exponera den omvända proxyporten klickar du på Belastningsutjämningsregler i det vänstra fönstret i fönstret Lastbalanserare. Klicka sedan på Lägg till överst i fönstret Belastningsutjämningsregler och ange information för den omvända proxyporten. Kontrollera att du anger portvärdet till 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 till den hälsoavsökning som du konfigurerade i föregående steg. Ange andra fält efter behov och klicka på OK.
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. I det avsnittet i dokumentet finns 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 beteende 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 filen ClusterConfig.json 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 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"
}
]
}
],
...
}
Kommentar
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 Hjälp av 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
- Konfigurera vidarebefordran för att skydda HTTP-tjänsten med omvänd proxy
- Konfigurationsalternativ för omvänd proxy finns i avsnittet ApplicationGateway/Http i Anpassa Service Fabric-klusterinställningar.