Partilhar 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 o SQL Server 2022 local e versões posteriores. A autenticação do Microsoft Entra é um serviço de gerenciamento de identidades baseado em nuvem que fornece acesso seguro a 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 conhecido anteriormente como Azure Ative Directory (Azure AD).

Neste tutorial, aprenderás como:

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

Pré-requisitos

  • Um SQL Server 2022 local ou versão posterior.
  • Um inquilino ativo do Microsoft Entra ID
  • Essa instalação usa um registro de aplicativo para associar o SQL Server à ID do Microsoft Entra. Siga o guia para registrar um aplicativo no Microsoft Entra ID.
  • Verifique se o SQL Server tem conectividade de rede com o Azure, especificamente com os seguintes endereços e serviço Microsoft Entra ID:
    • 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 é necessária, mas pode ser encontrada 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 armazenamento de certificados do computador. Recomendamos um certificado assinado pela autoridade de certificação.
    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 armazenamento de certificados do computador. Para obter mais informações, consulte Importar o certificado para o armazenamento do computador local.

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

      Captura de ecrã das propriedades de permissões de um certificado.

Instalar adal.dll

  1. Instale oadal.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 a partir da instalação mais recente do Microsoft OLE DB Driver for SQL Server .

  2. Depois de instalar o driver Microsoft OLE DB para SQL Server, certifique-se de queadal.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. Se não existir, crie-o.

    Captura de ecrã da chave de registo para adal.dll.

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

Criar e registrar um aplicativo Microsoft Entra ID

  • Vá para o portal do Azure, selecione ID do Microsoft Entra>Registos de Aplicações>Novo Registo.
    1. Especifique um nome - O exemplo neste artigo usa SQLServer.
    2. Selecione Tipos de contas suportados e use Somente contas neste diretório da organização
    3. Não defina um URI de redirecionamento
    4. Selecione Registrar

Veja o registro do aplicativo abaixo:

Captura de ecrã a mostrar o registo da aplicação no portal do Azure.

Conceder permissões de aplicativo

Selecione o aplicativo recém-criado e, no menu do lado esquerdo, selecione Permissões de API.

  1. Selecione Adicionar uma permissão>permissões de aplicação do Microsoft Graph>

    1. Verifique a permissão Directory.Read.All
    2. Selecione Adicionar permissões

Ou,

  1. Selecione Adicionar uma permissão>permissões de aplicação do Microsoft Graph>

    1. Verifique Application.Read.All

    2. Verifique Group.Read.All

    3. Verificar User.Read.All

    4. Selecione Adicionar permissões

  2. Selecione Conceder consentimento de administrador

Captura de ecrã a mostrar como conceder consentimento no portal do Azure.

Observação

Para conceder consentimento de Administrador às permissões acima, sua conta do Microsoft Entra requer a função de Administrador de Função Privilegiada ou permissões superiores.

Carregue o certificado

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

Captura de ecrã a carregar um certificado para a aplicação no portal do Azure.

Adicionar valores do Registro para habilitar a autenticação do Microsoft Entra para o 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 o SQL Server. Um exemplo do caminho da chave do Registro para o SQL Server 2022 é HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQLServer\FederatedAuthentication.

Advertência

Problemas sérios podem ocorrer se você modificar o registro incorretamente usando o Editor do Registro ou usando outro método. Esses problemas podem exigir que você reinstale o sistema operacional. A Microsoft não pode garantir que esses problemas possam ser resolvidos. Modifique o registo por sua conta e risco.

  • Se a FederatedAuthentication chave não existir, crie-a com todos os seguintes valores.
  • 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 do aplicativo (cliente) do aplicativo que você criou na seção Criar e registrar um aplicativo Microsoft Entra ID. Para obter mais informações sobre como localizar a ID do cliente, consulte ID do cliente.
  • O <tenant-id> é a ID do locatário do seu locatário do Azure. Você pode encontrar a ID do locatário no portal do Azure em Microsoft Entra ID>Visão geral.
[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 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 instalação criando logons usando os seguintes comandos T-SQL:

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

Problemas comuns

Poderá ver o seguinte erro:

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

Este 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, certifique-se de que o certificado tem um nome CN exclusivo que não corresponde a nenhum outro certificado no armazenamento de certificados.