Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O proxy reverso é um serviço opcional do Azure Service Fabric que auxilia os microsserviços em execução num cluster do Service Fabric a descobrir e comunicar-se com outros serviços que possuem pontos de extremidade HTTP. Para saber mais, consulte Proxy reverso no Azure Service Fabric. Este artigo mostra como instalar e configurar o proxy reverso em seu cluster.
Habilitar proxy reverso usando o portal do Azure
O portal do Azure fornece uma opção para habilitar o proxy reverso quando você cria um novo cluster do Service Fabric. Não é possível atualizar um cluster existente para usar proxy reverso por meio do portal.
Para configurar o proxy reverso ao criar um cluster usando o portal do Azure, faça o seguinte:
Na Etapa 2: Configuração do Cluster, em Configuração do tipo de nó, selecione Ativar proxy reverso.
(Opcional) Para configurar o proxy reverso seguro, você precisa configurar um certificado TLS/SSL. Em Etapa 3: Segurança, em Configurar configurações de segurança do cluster, em Tipo de configuração, selecione Personalizado. Em seguida, em Certificado SSL de proxy reverso, selecione Incluir um certificado SSL para proxy reverso e insira os detalhes do seu certificado.
Se você optar por não configurar o proxy reverso com um certificado ao criar o cluster, poderá fazê-lo posteriormente por meio do modelo Gerenciador de Recursos para o grupo de recursos do cluster. Para saber mais, consulte Habilitar proxy reverso por meio de modelos do Azure Resource Manager.
Habilitar proxy reverso por meio de modelos do Azure Resource Manager
Para clusters no Azure, você pode usar o modelo do Azure Resource Manager para habilitar o proxy reverso no Service Fabric. Você pode habilitar o proxy reverso ao criar o cluster ou habilitá-lo atualizando o cluster posteriormente.
Para um novo cluster, você pode criar um modelo personalizado do Gerenciador de Recursos ou pode usar um modelo de exemplo.
Você pode encontrar modelos de exemplo do Gestor de Recursos que podem ajudá-lo a configurar um proxy reverso seguro para um cluster do Azure nos Modelos de Exemplo de Proxy Reverso Seguro no GitHub. Consulte Configurar Proxy Reverso HTTPS em um cluster seguro no arquivo LEIA-ME para obter instruções e os modelos a serem usados para configurar o proxy reverso seguro com um certificado e para lidar com a substituição de certificados.
Para um cluster existente, você pode exportar o modelo do Gerenciador de Recursos para o grupo de recursos do cluster usando o portal do Azure, o PowerShell ou a CLI do Azure.
Depois de ter um modelo do Gerenciador de Recursos, você pode habilitar o proxy reverso com as seguintes etapas:
Defina uma porta para o proxy reverso na secção de Parâmetros do modelo.
"SFReverseProxyPort": { "type": "int", "defaultValue": 19081, "metadata": { "description": "Endpoint for Service Fabric Reverse proxy" } },Especifique a porta para cada um dos objetos nodetype na secção de tipo de recurso Microsoft.ServiceFabric/clusters.
A porta é identificada pelo nome do parâmetro, reverseProxyEndpointPort.
{ "apiVersion": "2021-06-01", "type": "Microsoft.ServiceFabric/clusters", "name": "[parameters('clusterName')]", "location": "[parameters('clusterLocation')]", ... "nodeTypes": [ { ... "reverseProxyEndpointPort": "[parameters('SFReverseProxyPort')]", ... }, ... ], ... }Para configurar certificados TLS/SSL na porta do proxy reverso, adicione o certificado ao reverseProxyCertificate objeto no Microsoft.ServiceFabric/clustersmodelo de recurso.
{ "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", } }Você também pode especificar um nome comum para certificados de proxy reverso usando o objeto reverseProxyCertificateCommonNames no modelo de recurso de clusters.
Suporte para um certificado de proxy reverso diferente do certificado de cluster
Se o certificado de proxy reverso for diferente do certificado que protege o cluster, o certificado especificado anteriormente deverá ser instalado na máquina virtual e adicionado à lista de controle de acesso (ACL) para que o Service Fabric possa acessá-lo. Isso pode ser feito na Microsoft.Compute/virtualMachineScaleSets na seção do tipo de recurso. Para a instalação, adicione o certificado ao osProfile. A seção de extensão do modelo pode atualizar o certificado na 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": true,
"enableAutomaticUpgrade": true,
...
"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.1"
}
},
]
}
Observação
Quando você usa certificados diferentes do certificado de cluster para habilitar o proxy reverso em um cluster existente, instale o certificado de proxy reverso e atualize a ACL no cluster antes de habilitar o proxy reverso. Conclua a implantação do modelo do Azure Resource Manager usando as configurações mencionadas anteriormente antes de iniciar uma implantação para habilitar o proxy reverso nas etapas 1 a 3.
Habilitar proxy reverso em clusters autónomos
Para clusters autônomos, você habilita o proxy reverso no arquivo ClusterConfig.json. Você pode habilitar o proxy reverso na criação do cluster ou atualizando a configuração para um cluster existente. Para saber mais sobre as configurações disponíveis nos arquivos ClusterConfig.json, consulte Configurações de cluster autónomas.
As etapas a seguir mostram as configurações a serem usadas para habilitar o proxy reverso e, opcionalmente, para proteger o proxy reverso com um certificado X.509.
Para habilitar o proxy reverso, defina o valor de reverseProxyEndpointPort para o tipo de nó dentro de propriedades na configuração do cluster. O JSON a seguir mostra a configuração da porta de proxy reverso como 19081 para nós com um tipo de "NodeType0".
"properties": { ... "nodeTypes": [ { "name": "NodeType0", ... "reverseProxyEndpointPort": "19081", ... } ], ... }(Opcional) Para um proxy reverso seguro, configure um certificado na seção de segurança em propriedades.
Para um ambiente de desenvolvimento ou teste, você pode usar a configuração ReverseProxyCertificate :
"properties": { ... "security": { ... "CertificateInformation": { ... "ReverseProxyCertificate": { "Thumbprint": "[Thumbprint]", "ThumbprintSecondary": "[Thumbprint]", "X509StoreName": "My" }, ... } }, ... }Para um ambiente de produção, recomenda-se a configuração ReverseProxyCertificateCommonNames:
"properties": { ... "security": { ... "CertificateInformation": { ... "ReverseProxyCertificateCommonNames": { "CommonNames": [ { "CertificateCommonName": "[CertificateCommonName]" } ], "X509StoreName": "My" }, ... } }, ... }
Para saber mais sobre como configurar e gerenciar certificados para um cluster autônomo, bem como mais detalhes sobre como configurar certificados usados para proteger o proxy reverso, consulte Segurança baseada em certificado X509.
Depois de modificar o arquivo ClusterConfig.json para habilitar o proxy reverso, siga as instruções em Atualizar a configuração do cluster para enviar as alterações por push para o cluster.
Expor proxy reverso numa porta pública através do Azure Load Balancer
Para abordar o proxy reverso de fora de um cluster do Azure, configure as regras do Balanceador de Carga do Azure e uma Sonda de Integridade do Azure para a porta de proxy reverso. Essas etapas podem ser executadas usando o portal do Azure ou o modelo do Gerenciador de Recursos a qualquer momento depois de criar o cluster.
Advertência
Ao configurar a porta do proxy reverso no Balanceador de Carga, todos os microsserviços no cluster que expõem um endpoint HTTP são acessíveis a partir de fora do cluster. Isso significa que microsserviços destinados a serem internos podem ser descobertos por um determinado usuário mal-intencionado. Esta situação apresenta potencialmente vulnerabilidades graves que podem ser exploradas; Por exemplo:
- Um usuário mal-intencionado pode iniciar um ataque de negação de serviço chamando repetidamente um serviço interno que não tenha uma superfície de ataque suficientemente protegida.
- Um usuário mal-intencionado pode entregar pacotes malformados para um serviço interno, resultando em comportamento não intencional.
- Um serviço destinado a ser interno pode retornar informações privadas ou confidenciais que não se destinam a ser expostas a serviços fora do cluster, expondo assim essas informações confidenciais a um usuário mal-intencionado.
Certifique-se de entender completamente e mitigar as possíveis ramificações de segurança para seu cluster e os aplicativos em execução nele, antes de tornar pública a porta de proxy reverso.
Se você quiser expor o proxy reverso publicamente para um cluster autônomo, a maneira como você fizer isso dependerá do sistema que hospeda o cluster e está além do escopo deste artigo. O aviso prévio sobre a exposição pública do proxy reverso, no entanto, ainda se aplica.
Expor o proxy reverso usando o portal do Azure
No portal do Azure, clique no grupo de recursos do cluster e, em seguida, clique no balanceador de carga do cluster.
Para adicionar uma sonda de integridade para a porta de proxy reverso, no painel esquerdo da janela do balanceador de carga, em CONFIGURAÇÕES, clique em Sondas de integridade. Em seguida, clique Adicionar na parte superior da janela Testes de Integridade, insira os detalhes da porta de proxy reverso e clique em OK. Por padrão, a porta de proxy reverso é 19081, a menos que você a tenha alterado quando criou o cluster.
Para adicionar uma regra de balanceador de carga para expor a porta de proxy reverso, no painel esquerdo da janela do balanceador de carga, em CONFIGURAÇÕES, clique em Regras de balanceamento de carga. Em seguida, clique em Adicionar na parte superior da janela Regras de balanceamento de carga e insira os detalhes da porta de proxy reverso. Certifique-se de definir o valor do Porta para a porta na qual deseja que o proxy reverso seja exposto, o valor da porta de back-end para a porta definida quando ativou o proxy reverso e o valor da sonda de integridade para a sonda de integridade configurada na etapa anterior. Defina outros campos conforme apropriado e clique em OK.
Expor o proxy reverso por meio de modelos do Gerenciador de Recursos
O JSON a seguir faz referência ao mesmo modelo usado em Habilitar proxy reverso por meio de modelos do Azure Resource Manager. Consulte essa seção do documento para obter informações sobre como criar um modelo do Gerenciador de Recursos ou exportar um modelo para um cluster existente. As alterações são feitas na seção Microsoft.Network/loadBalancersTipo de recurso.
{
"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"
}
}
]
}
Personalizar o comportamento de proxy reverso usando configurações de malha
Você pode personalizar o comportamento do proxy reverso por meio de configurações de malha no modelo do Gerenciador de Recursos para clusters hospedados no Azure ou no arquivo ClusterConfig.json para clusters autônomos. As configurações que controlam o comportamento do proxy reverso estão localizadas na seção ApplicationGateway/Http dentro da fabricSettings, na seção propriedades do cluster.
Por exemplo, poderá definir o valor de DefaultHttpRequestTimeout para que o tempo limite para solicitações ao proxy reverso seja de 180 segundos, conforme no seguinte JSON:
{
"fabricSettings": [
...
{
"name": "ApplicationGateway/Http",
"parameters": [
{
"name": "DefaultHttpRequestTimeout",
"value": "180"
}
]
}
],
...
}
Observação
O Proxy Reverso tem um limite de 16KB para cabeçalhos e não suporta a alteração do limite para um tamanho maior.
Para obter mais informações sobre como atualizar configurações de malha para clusters do Azure, consulte Personalizar configurações de cluster usando modelos do Gerenciador de Recursos. Para clusters autônomos, consulte Personalizar configurações de cluster para clusters autônomos.
Várias configurações de malha são usadas para ajudar a estabelecer uma comunicação segura entre o proxy reverso e os serviços. Para obter informações detalhadas sobre essas configurações, consulte Ligar a um serviço seguro com o reverso proxy.
Próximos passos
- Configurar o encaminhamento para o serviço HTTP seguro com o proxy reverso
- Para opções de configuração de proxy reverso, consulte a seção ApplicationGateway/Http em Personalizar as configurações do cluster do Service Fabric.