Compartilhar via


Tutorial: Habilitar a autenticação do Microsoft Entra para SQL Server no Windows sem o Azure Arc

Aplica-se a: SQL Server 2022 (16.x) e posterior.

Este artigo descreve como autenticar com o Microsoft Entra ID sem configurar o Azure Arc para suas versões locais do SQL Server 2022 e posteriores. A autenticação do Microsoft Entra é um serviço de gerenciamento de identidade baseado em nuvem que fornece acesso seguro aos bancos de dados do SQL Server. Este tutorial orienta você pelo processo de configuração da autenticação do Microsoft Entra para SQL Server no Windows sem o Azure Arc.

Observação

O Microsoft Entra ID era anteriormente conhecido como Azure Active Directory (Azure AD).

Neste tutorial, você aprenderá como:

  • Adicione um certificado para o SQL Server.
  • Instale adal.dll, usado para se conectar ao SQL Server.
  • Crie e registre um aplicativo de ID do Microsoft Entra.
  • Conceda permissões de aplicativo.
  • Carregue o certificado no aplicativo.
  • Adicione valores de registro para habilitar a autenticação do Microsoft Entra para SQL Server.

Pré-requisitos

  • Uma versão local do SQL Server 2022 ou posterior.
  • Um assinante ativo da ID do Microsoft Entra.
  • Essa configuração usa um registro de aplicativo para associar o SQL Server à ID do Microsoft Entra. Siga o guia para registrar um aplicativo na ID do Microsoft Entra.
  • Verifique se o SQL Server tem conectividade de rede com o Azure, especificamente para o seguinte serviço e endereços da ID do Microsoft Entra:
    • login.windows.net.
    • login.microsoftonline.com.
    • graph.microsoft.com.
    • graph.windows.net.
    • database.windows.net.
    • A lista completa de endereços IP e URLs não são necessárias, mas podem ser encontradas no artigo, URLs do Microsoft 365 e intervalos de endereços IP.

Obter um certificado

  1. Obtenha um certificado a ser usado para o SQL Server e importe-o para o repositório de certificados do computador. Recomendamos um certificado assinado pela AC.
    1. Use um nome CN exclusivo para o certificado que não corresponda a nenhum certificado instalado no repositório de certificados.

    2. Instale o certificado no repositório de certificados do computador. Para obter mais informações, consulte Importar o certificado para o repositório de computadores local.

    3. Adicione Read permissões para a conta de serviço do SQL Server no certificado.

      Captura de tela das propriedades de permissões de um certificado.

Instalar adal.dll

  1. Instale adal.dll para SQL Server. Essa biblioteca é necessária para se conectar ao SQL Server com a autenticação do Microsoft Entra. Você pode obter adal.dll da instalação mais recente do Microsoft OLE DB Driver for SQL Server .

  2. Depois de instalar o Microsoft OLE DB Driver for SQL Server, verifique se adal.dll está na pasta C:\windows\system32.

  3. Você também deve ter a chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSADALSQL\TargetDir do Registro com o valor C:\windows\system32\adal.dll. Crie um se ele não existir.

    Captura de tela da chave do registro para adal.dll.

    Para obter mais informações sobre o Registro do Windows, consulte as informações do Registro do Windows para usuários avançados.

Criar e registrar um aplicativo de ID do Microsoft Entra

  • Acesse o portal do Azure, selecione Microsoft Entra ID>Registros de Aplicativo>Novo Registro.
    1. Especificar um nome – o exemplo neste artigo usa SQLServer.
    2. Selecione Tipos de contas com suporte e use Contas somente no diretório desta organização
    3. Não defina um URI de redirecionamento
    4. Escolha Registrar

Veja o registro de aplicativo abaixo:

Captura de tela do registro do aplicativo no portal do Azure.

Conceder permissões de aplicativo

Selecione o aplicativo recém-criado e, no menu à esquerda, selecione Permissões de API.

  1. Selecione Adicionar uma permissão>Microsoft Graph>Permissões de aplicativo

    1. Marque Directory.Read.All
    2. Selecione Adicionar permissões

Ou

  1. Selecione Adicionar uma permissão>Microsoft Graph>Permissões de aplicativo

    1. Marque Application.Read.All

    2. Marque Group.Read.All

    3. Marque User.Read.All

    4. Selecione Adicionar permissões

  2. Selecione Conceder consentimento do administrador

Captura de tela mostrando como conceder consentimento no portal do Azure.

Observação

Para dar Consentimento do administrador às permissões acima, sua conta do Microsoft Entra requer a função de Administrador de funções com privilégios ou permissões superiores.

Carregar o certificado

Carregue o certificado que você criou na seção Obter um certificado no formato .cer ou .pem no registro do aplicativo no portal do Azure.

Captura de tela carregando um certificado para o aplicativo no portal do Azure.

Adicionar valores do Registro para habilitar a autenticação do Microsoft Entra para SQL Server

Atualize a chave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication do Registro com os seguintes valores para habilitar a autenticação do Microsoft Entra para SQL Server. Um exemplo do caminho da chave do Registro para SQL Server 2022 é HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\FederatedAuthentication.

Aviso

Problemas sérios podem ocorrer se você modificar o registro incorretamente usando o Editor do Registro ou outro método. Talvez esses problemas exijam que você reinstale o sistema operacional. A Microsoft não garante que esses problemas possam ser solucionados. Modifique o registro por sua própria conta e risco.

  • Se a FederatedAuthentication chave não existir, crie-a com todos os valores a seguir.
  • As cinco primeiras entradas listadas precisam ser atualizadas com os valores do aplicativo que você criou na seção anterior. O restante das entradas são valores padrão.
  • O <sql-server-certificate-name> é o nome do certificado que você criou na seção Obter um certificado e carregou no Azure.
  • O <application-client-id> é o ID de aplicativo (cliente) do aplicativo que você criou na seção Criar e registrar um aplicativo de ID do aplicativo Microsoft Entra. Para obter mais informações sobre como localizar a ID do cliente, consulte a ID do cliente.
  • O <tenant-id> é o ID do locatário do seu locatário do Azure. Você pode encontrar o ID do locatário no portal do Azure em Microsoft Entra ID, >.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL<version-number>.<instance-name>\MSSQLServer\FederatedAuthentication]

"AADCertSubjectName"="<sql-server-certificate-name>"
"AADTenantSpecificSQLServicePrincipalCertSubjectName"="<sql-server-certificate-name>"
"ClientId"="<application-client-id>"
"AADTenantSpecificSQLServicePrincipalClientId"="<application-client-id>"
"PrimaryAADTenant"="<tenant-id>"
"AADChannelMaxBufferedMessageSize"="200000"
"AADGraphEndPoint"="graph.windows.net"
"AADGroupLookupMaxRetryAttempts"="10"
"AADGroupLookupMaxRetryDuration"="30000"
"AADGroupLookupRetryInitialBackoff"="100"
"AuthenticationEndpoint"="login.microsoftonline.com"
"CacheMaxSize"="300"
"FederationMetadataEndpoint"="login.windows.net"
"GraphAPIEndpoint"="graph.windows.net"
"IssuerURL"="https://sts.windows.net/"
"MsGraphEndPoint"="graph.microsoft.com"
"OnBehalfOfAuthority"="https://login.windows.net/"
"SendX5c"="false"
"ServicePrincipalName"="https://database.windows.net/"
"ServicePrincipalNameForArcadia"="https://sql.azuresynapse.net"
"ServicePrincipalNameForArcadiaDogfood"="https://sql.azuresynapse-dogfood.net"
"ServicePrincipalNameNoSlash"="https://database.windows.net"
"STSURL"="https://login.windows.net/"
"ClientCertBlackList"=""

Para obter mais informações sobre o Registro do Windows, incluindo backup, edição e restauração de chaves do Registro, consulte as informações do Registro do Windows para usuários avançados.

Testando a autenticação

Depois de configurar o servidor e editar os valores do Registro, a autenticação do Microsoft Entra deve ser funcional. Teste a configuração criando logons usando os seguintes comandos T-SQL:

CREATE LOGIN [<admin@___domain.com>] FROM EXTERNAL PROVIDER

Problemas comuns

Você pode ver os seguintes erros:

Keyset does not exist (AdalDll) with error code: 21

Esse erro pode ser devido a problemas de permissão no certificado. Verifique se a conta de serviço do SQL Server tem Read permissões no certificado. Se o problema persistir, verifique se o certificado tem um nome CN exclusivo que não corresponde a nenhum outro certificado no repositório de certificados.