Configurar uma conexão de um indexador do Azure Search ao SQL Server em uma VM do AzureConfigure a connection from an Azure Search indexer to SQL Server on an Azure VM

Conforme observado em Conectando o Banco de Dados SQL do Azure ao Azure Search usando indexadores, é possível criar indexadores no SQL Server em VMs do Azure (ou VMs do SQL Azure) usando o Azure Search, mas há alguns pré-requisitos relacionados à segurança que precisam ser verificados primeiro.As noted in Connecting Azure SQL Database to Azure Search using indexers, creating indexers against SQL Server on Azure VMs (or SQL Azure VMs for short) is supported by Azure Search, but there are a few security-related prerequisites to take care of first.

Conexões do Azure Search ao SQL Server em uma máquina virtual é uma conexão de Internet pública.Connections from Azure Search to SQL Server on a VM is a public internet connection. Todas as medidas de segurança que você normalmente seguiria para essas conexões se aplicam aqui também:All of the security measures you would normally follow for these connections apply here as well:

  • Obter um certificado de um provedor de Autoridade de Certificação para o nome de domínio totalmente qualificado da instância do SQL Server na VM do Azure.Obtain a certificate from a Certificate Authority provider for the fully qualified domain name of the SQL Server instance on the Azure VM.
  • Instalar o certificado na VM e, em seguida, habilitar e configurar conexões criptografadas na VM usando as instruções neste artigo.Install the certificate on the VM, and then enable and configure encrypted connections on the VM using the instructions in this article.

Habilitar conexões criptografadasEnable encrypted connections

O Azure Search requer um canal criptografado para todas as solicitações de indexador em uma conexão de Internet pública.Azure Search requires an encrypted channel for all indexer requests over a public internet connection. Esta seção lista as etapas para fazer isso funcionar.This section lists the steps to make this work.

  1. Verifique as propriedades do certificado para verificar se o nome da entidade é o nome de domínio totalmente qualificado (FQDN) da VM do Azure.Check the properties of the certificate to verify the subject name is the fully qualified domain name (FQDN) of the Azure VM. Você pode usar uma ferramenta como CertUtils ou o snap-in de certificados para exibir as propriedades.You can use a tool like CertUtils or the Certificates snap-in to view the properties. Você pode obter o FQDN na seção Essentials da folha de serviço da VM, no campo rótulo de nome de DNS/endereço IP público , no portal do Azure.You can get the FQDN from the VM service blade's Essentials section, in the Public IP address/DNS name label field, in the Azure portal.

    • Para VMs criadas usando o mais recente modelo do Resource Manager, o FQDN é formatado como <your-VM-name>.<region>.cloudapp.azure.comFor VMs created using the newer Resource Manager template, the FQDN is formatted as <your-VM-name>.<region>.cloudapp.azure.com
    • Para VMs antigas criadas como uma VM clássica, o FQDN é formatado como <your-cloud-service-name.cloudapp.net>.For older VMs created as a Classic VM, the FQDN is formatted as <your-cloud-service-name.cloudapp.net>.
  2. Configure o SQL Server para usar o certificado usando o Editor do Registro (regedit).Configure SQL Server to use the certificate using the Registry Editor (regedit).

    Embora o SQL Server Configuration Manager seja geralmente usado para essa tarefa, você não pode usá-lo para esse cenário.Although SQL Server Configuration Manager is often used for this task, you can't use it for this scenario. Ele não localizará o certificado importado porque o FQDN da VM no Azure não corresponde ao FQDN conforme determinado pela VM (ele identifica o domínio como o computador local ou domínio de rede ao qual ele está associado).It won't find the imported certificate because the FQDN of the VM on Azure doesn't match the FQDN as determined by the VM (it identifies the domain as either the local computer or the network domain to which it is joined). Quando os nomes não corresponderem, use regedit para especificar o certificado.When names don't match, use regedit to specify the certificate.

    • No regedit, navegue até esta chave do registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\[MSSQL13.MSSQLSERVER]\MSSQLServer\SuperSocketNetLib\Certificate.In regedit, browse to this registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\[MSSQL13.MSSQLSERVER]\MSSQLServer\SuperSocketNetLib\Certificate.

      A parte [MSSQL13.MSSQLSERVER] varia conforme o nome de da instância e da versão.The [MSSQL13.MSSQLSERVER] part varies based on version and instance name.

    • Defina o valor da chave do Certificado para a impressão digital do certificado SSL que você importou para a VM.Set the value of the Certificate key to the thumbprint of the SSL certificate you imported to the VM.

      Há várias maneiras de obter a impressão digital, algumas melhores do que outras.There are several ways to get the thumbprint, some better than others. Se você copiá-la a partir do snap-in de certificados do MMC, você provavelmente selecionará um caractere à esquerda invisível conforme descrito neste artigo de suporte, que resulta em um erro quando tentar uma conexão.If you copy it from the Certificates snap-in in MMC, you will probably pick up an invisible leading character as described in this support article, which results in an error when you attempt a connection. Existem várias soluções alternativas para corrigir esse problema.Several workarounds exist for correcting this problem. A maneira mais fácil é a apagar e digitar novamente o primeiro caractere da impressão digital para remover o caractere à esquerda no campo de valor de chave no regedit.The easiest is to backspace over and then retype the first character of the thumbprint to remove the leading character in the key value field in regedit. Como alternativa, você pode usar outra ferramenta para copiar a impressão digital.Alternatively, you can use a different tool to copy the thumbprint.

  3. Conceder permissões à conta de serviço.Grant permissions to the service account.

    Verifique se a conta de serviço do SQL Server recebeu permissão apropriada na chave privada do certificado SSL.Make sure the SQL Server service account is granted appropriate permission on the private key of the SSL certificate. Se você ignorar essa etapa, o SQL Server não será iniciado.If you overlook this step, SQL Server will not start. Você pode usar o snap-in Certificados ou o CertUtils para essa tarefa.You can use the Certificates snap-in or CertUtils for this task.

  4. Reinicie o serviço SQL Server.Restart the SQL Server service.

Configurar a conectividade do SQL Server na VMConfigure SQL Server connectivity in the VM

Depois de configurar a conexão criptografada exigida pelo Azure Search, existem etapas de configuração adicionais intrínsecas ao SQL Server nas VMs do Azure.After you set up the encrypted connection required by Azure Search, there are additional configuration steps intrinsic to SQL Server on Azure VMs. Se você ainda não fez isso, a próxima etapa é concluir a configuração usando qualquer um destes artigos:If you haven't done so already , the next step is to finish configuration using either one of these articles:

Em particular, consulte a seção em cada artigo para "conectando pela internet".In particular, review the section in each article for "connecting over the internet".

Configure o Grupo de Segurança de Rede (NSG)Configure the Network Security Group (NSG)

É comum configurar o NSG e o ponto de extremidade ou a ACL (Lista de Controle de Acesso) do Azure correspondente para dar acesso à sua VM do Azure a outras pessoas.It is not unusual to configure the NSG and corresponding Azure endpoint or Access Control List (ACL) to make your Azure VM accessible to other parties. É provável que você já tenha feito isso para permitir que a lógica do seu próprio aplicativo se conecte à VM do SQL Azure.Chances are you've done this before to allow your own application logic to connect to your SQL Azure VM. Uma conexão do Azure Search com sua VM do SQL Azure não é diferente.It's no different for an Azure Search connection to your SQL Azure VM.

Os links a seguir fornecem instruções sobre a configuração de NSG para implantações de VM.The links below provide instructions on NSG configuration for VM deployments. Use estas instruções para a ACL de um ponto de extremidade do Azure Search com base em seu endereço IP.Use these instructions to ACL an Azure Search endpoint based on its IP address.

Observação

Para saber mais, consulte O que é um Grupo de Segurança de Rede?For background, see What is a Network Security Group?

O endereçamento IP pode apresentar alguns desafios que são facilmente superados se você estiver ciente do problema e possíveis soluções alternativas.IP addressing can pose a few challenges that are easily overcome if you are aware of the issue and potential workarounds. As seções restantes fornecem recomendações para lidar com problemas relacionados a endereços IP na ACL.The remaining sections provide recommendations for handling issues related to IP addresses in the ACL.

Restringir o acesso ao endereço IP do serviço de pesquisaRestrict access to the search service IP address

É altamente recomendável restringir o acesso ao endereço IP do seu serviço de pesquisa na ACL, em vez de abrir totalmente as VMs do SQL Azure para todas as solicitações de conexão.We strongly recommend that you restrict the access to the IP address of your search service in the ACL instead of making your SQL Azure VMs wide open to any connection requests. Você pode descobrir facilmente o endereço IP fazendo ping do FQDN (por exemplo, <your-search-service-name>.search.windows.net) do seu serviço de pesquisa.You can easily find out the IP address by pinging the FQDN (for example, <your-search-service-name>.search.windows.net) of your search service.

Gerenciando flutuações de endereço IPManaging IP address fluctuations

Se o seu serviço de pesquisa tiver apenas uma unidade de pesquisa (isto é, uma réplica e uma partição), o endereço IP poderá mudar durante a reinicialização do serviço de rotina, invalidando uma ACL existente com o endereço IP do seu serviço de pesquisa.If your search service has only one search unit (that is, one replica and one partition), the IP address will change during routine service restarts, invalidating an existing ACL with your search service's IP address.

Uma maneira de evitar o erro de conectividade subsequente é usar mais de uma réplica e uma partição no Azure Search.One way to avoid the subsequent connectivity error is to use more than one replica and one partition in Azure Search. Isso aumenta o custo, mas também resolve o problema de endereço IP.Doing so increases the cost, but it also solves the IP address problem. No Azure Search, os endereços IP não são alterados quando você tiver mais de uma unidade de pesquisa.In Azure Search, IP addresses don't change when you have more than one search unit.

Uma segunda abordagem é permitir que a conexão falhe e, em seguida, reconfigurar as ACLs no NSG.A second approach is to allow the connection to fail, and then reconfigure the ACLs in the NSG. Em média, você pode esperar que os endereços IP sejam alterados todas as semanas.On average, you can expect IP addresses to change every few weeks. Para clientes que fazem a indexação controlada raramente, essa abordagem pode ser viável.For customers who do controlled indexing on an infrequent basis, this approach might be viable.

Uma terceira abordagem viável (mas não particularmente segura) é especificar o intervalo de endereços IP da região do Azure em que o serviço de pesquisa é provisionado.A third viable (but not particularly secure) approach is to specify the IP address range of the Azure region where your search service is provisioned. A lista de intervalos IP do qual os endereços IP públicos são alocados a recursos do Azure é publicada em intervalos de IP do Datacenter do Azure.The list of IP ranges from which public IP addresses are allocated to Azure resources is published at Azure Datacenter IP ranges.

Incluir endereços IP do portal do Azure SearchInclude the Azure Search portal IP addresses

Se você estiver usando o portal do Azure para criar um indexador, a lógica do portal do Azure Search também precisará acessar a VM do SQL Azure durante a criação.If you are using the Azure portal to create an indexer, Azure Search portal logic also needs access to your SQL Azure VM during creation time. Os endereços IP do portal do Azure Search podem ser encontrados executando ping de stamp2.search.ext.azure.com.Azure search portal IP addresses can be found by pinging stamp2.search.ext.azure.com.

Próximas etapasNext steps

Com a configuração acima resolvido, agora você pode especificar um SQL Server na VM do Azure como a fonte de dados de um indexador do Azure Search.With configuration out of the way, you can now specify a SQL Server on Azure VM as the data source for an Azure Search indexer. Confira Conectando o banco de dados SQL do Azure ao Azure Search usando indexadores para obter mais informações.See Connecting Azure SQL Database to Azure Search using indexers for more information.