Configurar e gerenciar a autenticação do Microsoft Entra com o Azure SQL

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse Analytics

Este artigo mostra como criar e preencher um locatário do Microsoft Entra e usar o Microsoft Entra ID (anteriormente Azure Active Directory) com Banco de Dados SQL do Azure, Instância Gerenciada de SQL do Azure e Azure Synapse Analytics. Para obter uma visão geral, consulte Autenticação do Microsoft Entra.

Observação

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

Métodos de autenticação do Microsoft Entra

O Microsoft Entra ID dá suporte aos seguintes métodos de autenticação:

  • Identidades somente na nuvem do Microsoft Entra
  • Identidades híbridas Microsoft Entra que dão suporte a:
    • Autenticação em nuvem com duas opções combinadas com SSO (logon único) contínuo
      • Autenticação de senha por hash do Microsoft Entra
      • Autenticação de passagem do Microsoft Entra
    • Autenticação federada

Para obter mais informações sobre os métodos de autenticação do Microsoft Entra, confira Escolher o método de autenticação correto para sua solução de identidade híbrida do Microsoft Entra.

Para obter mais informações sobre identidades, configuração e sincronização híbridas do Microsoft Entra, confira:

Criar e preencher um locatário do Microsoft Entra

Crie um locatário do Microsoft Entra e preencha-o com usuários e grupos. Os locatários do Microsoft Entra podem ser gerenciados inteiramente no Azure ou usados para federação de um Serviço de Domínio do Active Directory local.

Para saber mais, veja:

Associe ou adicione uma assinatura do Azure ao Microsoft Entra ID

  1. Associe sua assinatura do Azure ao Microsoft Entra ID tornando o diretório um diretório confiável para a assinatura do Azure que hospeda o banco de dados. Para obter detalhes, consulte Associar ou adicionar uma assinatura do Azure a seu locatário do Microsoft Entra.

  2. Use o seletor de diretório no portal do Azure para alternar para a assinatura associada ao domínio.

    Importante

    Todas as assinaturas do Azure têm uma relação de confiança com uma instância do Microsoft Entra. Ela confia que esse diretório autentique usuários, serviços e dispositivos. Várias assinaturas podem confiar no mesmo diretório, mas uma única assinatura confia em apenas um diretório. Essa relação de confiança que uma assinatura tem com um diretório é diferente daquela que uma assinatura tem com todos os outros recursos no Azure (sites, bancos de dados e assim por diante), que são mais similares a recursos filho de uma assinatura. Se uma assinatura expira, o acesso a esses outros recursos associados à assinatura também pára. No entanto, o diretório permanece no Azure e você pode associar outra assinatura a ele, além de continuar a gerenciar os usuários do diretório. Para obter mais informações sobre recursos, consulte Noções básicas sobre o acesso a recursos no Azure. Para saber mais sobre essa relação de confiança, consulte relação Como associar ou adicionar uma assinatura do Azure ao Microsoft Entra ID.

Administrador do Microsoft Entra com um servidor no banco de dados SQL

Cada servidor lógico do Azure (que hospeda um Banco de dados SQL ou um Azure Synapse) começa com uma única conta de administrador do servidor, que é o administrador de todo o servidor. Crie uma segunda conta de administrador como uma conta do Microsoft Entra. Essa entidade de segurança é criada como um usuário de banco de dados independente no banco de dados master do servidor. As contas de administrador são membros da função db_owner em todos os bancos de dados de usuários e cada banco de dados de usuário é inserido como o usuário dbo. Para mais informações sobre contas de administrador, confira Gerenciamento de bancos de dados e logons.

O administrador do Microsoft Entra deve ser configurado para os servidores primário e secundário ao usar o Microsoft Entra ID com replicação geográfica. Se um servidor não tiver um administrador do Microsoft Entra, os logons e os usuários do Microsoft Entra receberão um erro Cannot connect no servidor.

Observação

Os usuários que não são baseados em uma conta do Microsoft Entra (inclusive a conta de administrador do servidor) não podem criar usuários baseados no Microsoft Entra, pois não têm permissão para validar usuários de banco de dados propostos com o Microsoft Entra ID.

Provisionar o administrador do Microsoft Entra (instância gerenciada do SQL)

Importante

Siga estas etapas somente se estiver provisionando uma Instância Gerenciada de SQL. Esta operação só pode ser executada pelo administrador global ou por um administrador que tenha função com privilégios no Microsoft Entra ID.

Você pode atribuir a função Leitores de Diretório a um grupo do Microsoft Entra ID. Os proprietários do grupo podem então adicionar a identidade da instância gerenciada como membro desse grupo, o que lhe permite fornecer um administrador Microsoft Entra para a Instância Gerenciada de SQL. Para obter mais informações sobre esse recurso, confira Função Leitores de Diretório no Microsoft Entra para o SQL do Azure.

A Instância Gerenciada de SQL precisa de permissão de leitura no Microsoft Entra ID para executar tarefas, como autenticação de usuários, por meio da associação a um grupo de segurança ou da criação de novos usuários. Para que isso funcione, você precisa conceder permissão de leitura do Microsoft Entra ID à Instância Gerenciada SQL. Você pode fazer isso usando o portal do Azure ou o PowerShell.

Portal do Azure

Para conceder permissões de leitura a sua Instância Gerenciada de SQL para o Microsoft Entra ID usando o portal do Azure, entre como Administrador Global e siga estas etapas:

  1. No portal do Azure, no canto superior direito selecione sua conta e escolha Alternar diretórios para confirmar qual diretório é seu Diretório atual. Alterne diretórios, se necessário.

    Screenshot of the Azure portal showing where to switch your directory.

  2. Escolha o diretório correto do Microsoft Entra como o diretório atual.

    Essa etapa vincula a assinatura associada ao Microsoft Entra ID à Instância Gerenciada do SQL, garantindo que o locatário do Microsoft Entra e a Instância Gerenciada do SQL usem a mesma assinatura.

  3. Agora você pode escolher o administrador do Microsoft Entra para sua Instância Gerenciada de SQL. Para isso, acesse o recurso de instância gerenciada no portal do Azure e selecione Administrador do Microsoft Entra em Configurações.

    Screenshot of the Azure portal showing the Microsoft Entra admin page open for the selected SQL managed instance.

  4. Selecione a faixa na parte superior da página de administração do Microsoft Entra e conceda permissão ao usuário atual.

    Screenshot of the dialog for granting permissions to a SQL managed instance for accessing Microsoft Entra ID with the Grant permissions button selected.

  5. Depois que a operação for concluída com êxito, a seguinte notificação será exibida no canto superior direito:

    Screenshot of a notification confirming that Microsoft Entra ID read permissions have been successfully updated for the managed instance.

  6. Na página de Administração do Microsoft Entra, selecione Definir administrador na barra de navegação para abrir o painel Microsoft Entra ID.

    Screenshot showing the Set admin command highlighted on the Microsoft Entra admin page for the selected SQL managed instance.

  7. No painel Microsoft Entra ID, procure um usuário, marque a caixa ao lado do usuário ou grupo para ser um administrador e pressione Selecionar para fechar o painel e voltar à página Administração do Microsoft Entra para sua instância gerenciada.

    O painel Microsoft Entra ID mostra todos os membros e grupos no diretório atual. Os usuários ou grupos esmaecidos não podem ser selecionados, pois não têm suporte como administradores do Microsoft Entra. Consulte a lista de administradores com suporte em Recursos e limitações do Microsoft Entra. O Azure RBAC (controle de acesso baseado em função) aplica-se somente ao portal do Azure e não é propagado para o Banco de Dados SQL, a Instância Gerenciada de SQL ou o Azure Synapse.

  8. Na barra de navegação da página Administração do Microsoft Entra de sua instância gerenciada, selecione Salvar para confirmar o administrador do Microsoft Entra.

    Screenshot of the Microsoft Entra admin page with the Save button in the top row next to the Set admin and Remove admin buttons.

    O processo de alteração do administrador pode levar vários minutos. O novo administrador aparece na caixa Administrador do Microsoft Entra.

    A ID do objeto é exibida ao lado do nome do administrador para usuários e grupos do Microsoft Entra. Para aplicativos (entidades de serviço), a ID do aplicativo é exibida.

Após provisionar um administrador do Microsoft Entra para a Instância Gerenciada de SQL, comece a criar entidades de segurança do servidor do Microsoft Entra (logons) com a sintaxe CREATE LOGIN. Para obter mais informações, confira Visão geral da Instância Gerenciada de SQL.

Dica

Para remover um Administrador mais tarde, na parte superior da página Administrador do Microsoft Entra, selecione Remover administrador e, em seguida, selecione Salvar.

PowerShell

Para usar o PowerShell a fim de conceder à sua Instância Gerenciada de SQL permissões de leitura para o Microsoft Entra ID, execute este script:

# This script grants "Directory Readers" permission to a service principal representing the SQL Managed Instance.
# It can be executed only by a user who is a member of the **Global Administrator** or **Privileged Roles Administrator** role.

Import-Module Microsoft.Graph.Authentication
$managedInstanceName = "<ManagedInstanceName>" # Enter the name of your managed instance
$tenantId = "<TenantId>"                       # Enter your tenant ID

Connect-MgGraph -TenantId $tenantId -Scopes "RoleManagement.ReadWrite.Directory"
 
# Get Microsoft Entra "Directory Readers" role and create if it doesn't exist
$roleName = "Directory Readers"
$role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
if ($role -eq $null) {
    # Instantiate an instance of the role template
    $roleTemplate = Get-MgDirectoryRoleTemplate -Filter "DisplayName eq '$roleName'"
    New-MgDirectoryRoleTemplate -RoleTemplateId $roleTemplate.Id
    $role = Get-MgDirectoryRole -Filter "DisplayName eq '$roleName'"
}

# Get service principal for your SQL Managed Instance
$roleMember = Get-MgServicePrincipal -Filter "DisplayName eq '$managedInstanceName'"
$roleMember.Count
if ($roleMember -eq $null) {
    Write-Output "Error: No service principal with name '$($managedInstanceName)' found, make sure that managedInstanceName parameter was entered correctly."
    exit
}
if (-not ($roleMember.Count -eq 1)) {
    Write-Output "Error: Multiple service principals with name '$($managedInstanceName)'"
    Write-Output $roleMember | Format-List DisplayName, Id, AppId
    exit
}

# Check if service principal is already member of Directory Readers role
$isDirReader = Get-MgDirectoryRoleMember -DirectoryRoleId $role.Id -Filter "Id eq '$($roleMember.Id)'"
if ($isDirReader -eq $null) {
    # Add principal to Directory Readers role
    Write-Output "Adding service principal '$($managedInstanceName)' to 'Directory Readers' role..."
    $body = @{
        "@odata.id"= "https://graph.microsoft.com/v1.0/directoryObjects/{$($roleMember.Id)}"
    }
    New-MgDirectoryRoleMemberByRef -DirectoryRoleId $role.Id -BodyParameter $body
    Write-Output "'$($managedInstanceName)' service principal added to 'Directory Readers' role."
} else {
    Write-Output "Service principal '$($managedInstanceName)' is already member of 'Directory Readers' role."
}

PowerShell para Instância Gerenciada de SQL

Para executar os cmdlets do PowerShell, você precisa ter o Azure PowerShell instalado e em execução. Para obter informações detalhadas, confira Como instalar e configurar o Azure PowerShell.

Importante

A Instância Gerenciada de SQL do Azure ainda dá suporte ao módulo do Azure Resource Manager para PowerShell, mas todos os desenvolvimentos futuros serão destinados ao módulo Az.Sql. O módulo AzureRM receber as correções de bugs até pelo menos dezembro de 2020. Os argumentos para os comandos no módulo Az e nos módulos AzureRm são substancialmente idênticos. Para saber mais sobre a compatibilidade entre eles, confira Apresentação do novo módulo Az do Azure PowerShell.

Para provisionar um administrador do Microsoft Entra, execute os seguintes comandos do Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

Os cmdlets usados para provisionar e gerenciar o administrador do Microsoft Entra para a Instância Gerenciada de SQL estão listados na tabela a seguir:

Nome do cmdlet Descrição
Set-AzSqlInstanceActiveDirectoryAdministrator Provisiona um administrador do Microsoft Entra para a Instância Gerenciada de SQL na assinatura atual. (Precisa ser da assinatura atual.)
Remove-AzSqlInstanceActiveDirectoryAdministrator Remove um administrador do Microsoft Entra para a Instância Gerenciada de SQL na assinatura atual.
Get-AzSqlInstanceActiveDirectoryAdministrator Retorna informações sobre um administrador do Microsoft Entra para a Instância Gerenciada de SQL na assinatura atual.

O comando a seguir obtém informações sobre um administrador do Microsoft Entra para uma Instância Gerenciada de SQL denominada ManagedInstance01 associada a um grupo de recursos chamado de ResourceGroup01.

Get-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01"

O comando a seguir provisiona um grupo de administradores do Microsoft Entra chamado de DBAs para a Instância Gerenciada de SQL denominada ManagedInstance01. Este servidor está associado ao grupo de recursos ResourceGroup01.

Set-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstance01" -DisplayName "DBAs" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353b"

O comando a seguir remove o administrador do Microsoft Entra para a Instância Gerenciada de SQL denominada ManagedInstanceName01, associada ao grupo de recursos ResourceGroup01.

Remove-AzSqlInstanceActiveDirectoryAdministrator -ResourceGroupName "ResourceGroup01" -InstanceName "ManagedInstanceName01" -Confirm -PassThru

Provisionar o administrador do Microsoft Entra (Banco de Dados SQL)

Importante

Somente siga estas etapas se estiver provisionando um servidor para o Banco de Dados SQL ou o Azure Synapse.

Os dois procedimentos a seguir mostram como provisionar um administrador do Microsoft Entra para seu servidor no Portal do Azure usando o PowerShell.

Portal do Azure

  1. No portal do Azure, no canto superior direito, selecione sua conta e escolha Alternar diretório para abrir a página Diretórios + assinaturas. Escolha o diretório do Microsoft Entra que contém o Banco de Dados SQL do Azure ou o Azure Synapse Analytics como o Diretório atual.

  2. Procure SQL Servers e selecione o servidor lógico para seu Banco de Dados SQL do Azure.

    Search for and select SQL servers.

    Observação

    Nesta página, antes de selecionar servidores SQL, você pode selecionar a estrela ao lado do nome para marcar como favorita a categoria e adicionar servidores SQL para o menu de navegação esquerdo.

    Considere também visitar seu painel SQL do Azure.

  3. Na página SQL Server, selecione Microsoft Entra ID.

  4. Na página Microsoft Entra ID, selecione Definir administrador para abrir o painel Microsoft Entra ID

    Screenshot shows the option to set the Microsoft Entra admin for SQL servers.

  5. No painel Microsoft Entra ID, procure um usuário e selecione o usuário ou grupo para ser um administrador. Use Selecionar para confirmar sua escolha e feche o painel para voltar à página Microsoft Entra ID do servidor lógico. (O painel Microsoft Entra ID mostra todos os membros e grupos do diretório atual. Usuários ou grupos esmaecidos não podem ser selecionados porque não há suporte para administradores do Microsoft Entra. Consulte a lista de administradores com suporte na seção Recursos e limitações do Microsoft Entra de Usar a autenticação do Microsoft Entra com o Banco de Dados SQL ou o Azure Synapse.) O controle de acesso baseado em função do Azure (RBAC do Azure) se aplica somente ao portal e não é propagado para o servidor.

  6. Na parte superior da página Microsoft Entra ID para o servidor lógico, selecione Salvar.

    Screenshot shows the option to save a Microsoft Entra admin.

    A ID do objeto é exibida ao lado do nome do administrador para usuários e grupos do Microsoft Entra. Para aplicativos (entidades de serviço), a ID do aplicativo é exibida.

O processo de alteração do administrador pode levar vários minutos. Em seguida, o novo administrador aparece no campo Administração do Microsoft Entra.

Observação

Ao configurar o administrador do Microsoft Entra, o novo nome de administrador (usuário ou grupo) não pode existir no banco de dados master virtual como um usuário de autenticação do servidor. Se presente, a configuração do administrador do Microsoft Entra falha e é revertida, indicando que esse administrador (nome) já existe. Como um usuário de autenticação de servidor não faz parte do Microsoft Entra ID, qualquer esforço para se conectar ao servidor usando a autenticação do Microsoft Entra falha.

Para remover o administrador posteriormente, na parte superior da página Microsoft Entra ID, selecione Remover administrador e Salvar. Isso desabilita a autenticação do Microsoft Entra para seu servidor lógico.

PowerShell para o Banco de Dados SQL e o Azure Synapse

Para executar os cmdlets do PowerShell, você precisa ter o Azure PowerShell instalado e em execução. Para obter informações detalhadas, confira Como instalar e configurar o Azure PowerShell. Para provisionar um administrador do Microsoft Entra, execute os seguintes comandos do Azure PowerShell:

  • Connect-AzAccount
  • Select-AzSubscription

Os cmdlets usados para provisionar e gerenciar o administrador do Microsoft Entra para o Banco de Dados SQL e o Azure Synapse:

Nome do cmdlet Descrição
Set-AzSqlServerActiveDirectoryAdministrator Provisiona um administrador do Microsoft Entra para o servidor que hospeda o banco de dados SQL ou o Azure Synapse. (Precisa ser da assinatura atual.)
Remove-AzSqlServerActiveDirectoryAdministrator Remove um administrador do Microsoft Entra do servidor que hospeda o banco de dados SQL ou o Azure Synapse.
Get-AzSqlServerActiveDirectoryAdministrator Retorna informações sobre um administrador do Microsoft Entra atualmente configurado para o servidor que hospeda o banco de dados SQL ou o Azure Synapse.

Use o comando get-help do PowerShell para ver mais informações sobre cada um desses comandos. Por exemplo, get-help Set-AzSqlServerActiveDirectoryAdministrator.

O seguinte script provisiona um grupo de administradores do Microsoft Entra nomeado DBA_Group (ID de objeto 40b79501-b343-44ed-9ce7-da4c8cc7353f) para o servidor demo_server em um grupo de recursos nomeado Group-23:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" -DisplayName "DBA_Group"

O parâmetro de entrada DisplayName aceita o nome de exibição do Microsoft Entra ID ou o Nome UPN. Por exemplo, DisplayName="John Smith" e DisplayName="johns@contoso.com". Para grupos do Microsoft Entra, somente o nome de exibição do Microsoft Entra ID tem suporte.

Observação

O comando Set-AzSqlServerActiveDirectoryAdministrator do Azure PowerShell não impede que você provisione administradores do Microsoft Entra para usuários sem suporte. Um usuário para o qual não há suporte pode ser provisionado, mas não pode se conectar a um banco de dados.

O seguinte exemplo usa a ObjectIDopcional:

Set-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" `
    -DisplayName "DBA_Group" -ObjectId "40b79501-b343-44ed-9ce7-da4c8cc7353f"

Observação

ObjectID é obrigatório quando DisplayName não é exclusivo. Para recuperar os valores de ObjectID e DisplayName, você pode exibir as propriedades de um usuário ou grupo na seção Microsoft Entra ID do Portal do Azure.

O exemplo a seguir retorna informações sobre o administrador atual do Microsoft Entra para o servidor:

Get-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server" | Format-List

O seguinte exemplo remove um administrador do Microsoft Entra:

Remove-AzSqlServerActiveDirectoryAdministrator -ResourceGroupName "Group-23" -ServerName "demo_server"

Observação

Você também pode provisionar um administrador do Microsoft Entra usando as APIs REST. Para obter mais informações, confira Referência da API REST de Gerenciamento de Serviços e Operações do Banco de Dados SQL do Azure

Configurar os computadores cliente

Observação

System.Data.SqlClient usa a ADAL (Biblioteca de Autenticação do Azure Active Directory), que será preterida. Se você estiver usando o namespace System.Data.SqlClient para autenticação do Microsoft Entra, migre os aplicativos para Microsoft.Data.SqlClient e para a MSAL (Biblioteca de Autenticação da Microsoft). Para obter mais informações, consulte Usar a autenticação do Microsoft Entra com SqlClient.

Se você precisar continuar usando ADAL.DLL em seus aplicativos, poderá usar os links nesta seção para instalar o driver ODBC ou OLE DB mais recente, que contém a biblioteca ADAL.DLL mais recente.

Em todas a máquinas cliente, a partir dos quais seus aplicativos ou usuários se conectam ao Banco de Dados SQL ou ao Azure Synapse usando identidades do Microsoft Entra, você deve instalar o software a seguir:

Você pode atender a esses requisitos:

  • A instalação da versão mais recente do SQL Server Management Studio ou do SQL Server Data Tools atende aos requisitos do .NET Framework 4.6.
    • O SSMS instala a versão x86 do ADAL.DLL.
    • O SSDT instala a versão amd64 do ADAL.DLL.
    • O Visual Studio mais recente dos downloads do Visual Studio atende ao requisito do .NET Framework 4.6, mas não instala a versão amd64 necessária do ADAL.DLL.

Criar usuários mapeados contidos para identidades do Microsoft Entra

Esta seção analisa os requisitos e considerações importantes para usar a autenticação do Microsoft Entra com o Banco de Dados SQL do Azure, a Instância Gerenciada de SQL do Azure e o Azure Synapse.

  • Usar a autenticação do Microsoft Entra com o Banco de Dados SQL e o Azure Synapse requer o uso de usuários de banco de dados independente com base em uma identidade do Microsoft Entra. Um usuário de banco de dados independente não tem um logon no banco de dados master e é mapeado para uma identidade no Microsoft Entra ID associada ao banco de dados. A identidade do Microsoft Entra pode ser uma conta de usuário individual, um grupo ou um aplicativo. Para saber mais sobre usuários de bancos de dados independentes, veja Usuários do bancos de dados independentes - Tornando seu banco de dados portátil. Para obter mais informações sobre como criar usuários de banco de dados independente baseados em identidades do Microsoft Entra, consulte CRIAR USUÁRIO (Transact-SQL).

  • Como a Instância Gerenciada de SQL dá suporte a entidades de segurança do servidor do Microsoft Entra (logons), não é necessário o uso de usuários de banco de dados independente. Isso permite que você crie logons de usuários, grupos ou aplicativos do Microsoft Entra. Isso significa que você pode autenticar com a Instância Gerenciada de SQL usando o logon de servidor do Microsoft Entra, em vez de um usuário de banco de dados independente. Para obter mais informações, confira Visão geral da Instância Gerenciada de SQL. Para obter a sintaxe na criação de entidades de segurança do servidor do Microsoft Entra (logons), consulte CREATE LOGIN.

  • Os usuários de banco de dados (exceto os administradores) não podem criar um banco de dados usando o portal do Azure. As funções do Microsoft Entra não são propagadas para o banco de dados no Banco de Dados SQL, na Instância Gerenciada de SQL ou no Azure Synapse. As funções do Microsoft Entra gereniam recursos do Azure e não se aplicam a permissões de banco de dados. Por exemplo, a função Colaborador do SQL Server não concede acesso para a conexão ao banco de dados do Banco de Dados SQL, da Instância Gerenciada de SQL ou do Azure Synapse. A permissão de acesso deve ser concedida diretamente no banco de dados usando instruções Transact-SQL.

  • Você não pode criar diretamente um usuário de banco de dados para uma identidade gerenciada em um locatário do Microsoft Entra diferente daquele associado à sua assinatura do Azure. No entanto, os usuários em outros diretórios podem ser importados para o diretório associado como usuários externos. Eles podem então ser usados para criar usuários de banco de dados contidos que podem acessar o Banco de dados SQL. Os usuários externos também podem obter acesso por meio da associação a grupos do Microsoft Entra que contêm usuários de banco de dados.

  • Não há suporte para caracteres especiais, como dois-pontos : ou E comercial &, em nomes de usuário nas instruções de T-SQL CREATE LOGIN e CREATE USER.

Importante

Os usuários e as entidades de serviço do Microsoft Entra (aplicativos do Microsoft Entra) que são membros de mais de 2048 grupos de segurança do Microsoft Entra não podem fazer logon no banco de dados na Instância Gerenciada de SQL, no Banco de Dados SQL nem no Azure Synapse.

Para criar um usuário de banco de dados independente com base no Microsoft Entra ID (diferente do administrador do servidor proprietário do banco de dados), conecte-se ao banco de dados com uma identidade Microsoft Entra, como um usuário com pelo menos a permissão ALTER ANY USER. No exemplo de T-SQL a seguir, Microsoft_Entra_principal_name pode ser o nome UPN de um usuário do Microsoft Entra ou o nome de exibição de um grupo do Microsoft Entra.

CREATE USER [<Microsoft_Entra_principal_name>] FROM EXTERNAL PROVIDER;

Exemplos: para criar um usuário de banco de dados independente que representa um usuário de domínio federado ou gerenciado pelo Microsoft Entra:

CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;

Para criar um usuário de banco de dados contido representando um grupo do Microsoft Entra, forneça o nome de exibição do grupo:

CREATE USER [ICU Nurses] FROM EXTERNAL PROVIDER;

Para criar um usuário de banco de dados independente que representa um aplicativo que se conectará usando um token do Microsoft Entra:

CREATE USER [appName] FROM EXTERNAL PROVIDER;

O comando CREATE USER ... FROM EXTERNAL PROVIDER requer acesso SQL ao Microsoft Entra ID (o "provedor externo") em nome do usuário conectado. Às vezes, há circunstâncias que fazem com que o Microsoft Entra ID retorne uma exceção ao SQL.

  • Você pode encontrar o erro SQL 33134, que contém a mensagem de erro específica do Microsoft Entra ID. O erro geralmente diz que o acesso foi negado ou que o usuário deve se inscrever na MFA para acessar o recurso, ou que o acesso entre aplicativos primários deve ser realizado por meio de uma autorização prévia. Nos dois primeiros casos, o problema geralmente é causado pelas políticas de Acesso condicional que são definidas no locatário do Microsoft Entra do usuário: elas impedem que o usuário acesse o provedor externo. Atualizar as políticas de Acesso condicional para permitir o acesso ao aplicativo '00000003-0000-0000-c000-000000000000' (a ID de aplicativo da API do Microsoft Graph) deve resolver o problema. Se o erro indicar que o acesso entre aplicativos primários deve ser tratado por meio de pré-autorização, o problema ocorre, pois o usuário está conectado como uma entidade de serviço. O comando deverá ter sucesso se for executado por um usuário.
  • Se você receber um Tempo Limite de Conexão Expirado, talvez seja necessário definir o parâmetro TransparentNetworkIPResolution da cadeia de conexão como falso. Para obter mais informações, consulte Problema de tempo limite de conexão com o .NET Framework 4.6.1 – TransparentNetworkIPResolution.

Importante

Remover o administrador do Microsoft Entra do servidor impede que qualquer usuário da autenticação do Microsoft Entra se conecte ao servidor. Se for necessário, o administrador do Banco de Dados SQL pode remover manualmente os usuários do Microsoft Entra inutilizáveis.

Quando você cria um usuário de banco de dados, o usuário recebe a permissão CONNECT e pode se conectar a esse banco de dados como membro da função PUBLIC. Inicialmente, as únicas permissões disponíveis para o usuário são concedidas à função PUBLIC e a qualquer grupo do Microsoft Entra do qual seja membro. A concessão de permissões a usuários de banco de dados contidos baseados no Microsoft Entra opera da mesma maneira que a concessão de permissão a qualquer outro tipo de usuário. É recomendável conceder permissões a funções de banco de dados e adicionar usuários a essas funções, em vez de conceder permissões diretamente a usuários individuais. Para saber mais, confira Noções básicas sobre permissões do Mecanismo de Banco de Dados. Para obter mais informações sobre funções especiais do Banco de dados SQL, veja Gerenciando bancos de dados e logons no Banco de Dados SQL do Azure. Uma conta de usuário de domínio federado que é importado para um domínio gerenciado como um usuário externo deve usar a identidade do domínio gerenciado.

Usuários do Microsoft Entra são marcados nos metadados do banco de dados com tipo E (EXTERNAL_USER) e para grupos com o tipo X (EXTERNAL_GROUPS). Para obter mais informações, consulte sys.database_principals.

Conectar-se ao banco de dados usando o SSMS ou SSDT.

Para confirmar que o administrador do Microsoft Entra está configurado corretamente, conecte-se ao banco de dados master usando a conta de administrador do Microsoft Entra. Para criar um usuário de banco de dados contido baseado no Microsoft Entra, conecte-se ao banco de dados com uma identidade do Microsoft Entra que tenha acesso ao banco de dados e, pelo menos, a permissão ALTER ANY USER.

Usar uma identidade do Microsoft Entra para se conectar usando SSMS ou SSDT

Os procedimentos a seguir mostram como se conectar ao Banco de Dados SQL com uma identidade do Microsoft Entra usando o SQL Server Management Studio (SSMS) ou SQL Server Database Tools (SSDT).

Microsoft Entra ID — Integrado

Use este método se você estiver conectado ao Windows usando suas credenciais do Microsoft Entra de um domínio federado ou gerenciado, configurado para logon único contínuo para autenticação de passagem e de hash de senha. Para obter mais informações, consulte Logon único sem problemas do Microsoft Entra.

  1. Inicie o SSMS ou SSDT e na caixa de diálogo Conectar ao Servidor (ou Conectar ao Mecanismo de Banco de Dados), na caixa Autenticação, selecione Azure Active Directory — Integrado. Não é necessário digitar uma senha porque suas credenciais existentes são apresentadas para a conexão.

    Screenshot from SSMS showing Microsoft Entra Integrated authentication.

  2. Selecione o botão Opções e, na página Propriedades de Conexão, na caixa Conectar ao banco de dados, digite o nome do banco de dados de usuário ao qual você deseja se conectar.

    Screenshot from SSMS of the Options menu.

Microsoft Entra ID — Senha

Use esse método ao se conectar com um nome de entidade de segurança do Microsoft Entra usando o domínio gerenciado do Microsoft Entra. Você também pode usá-lo para contas federadas sem acesso ao domínio, por exemplo, ao trabalhar remotamente.

Use esse método para fazer a autenticação no banco de dados do Banco de Dados SQL ou da Instância Gerenciada de SQL com usuários de identidade somente na nuvem do Microsoft Entra ou com aqueles que usam identidades híbridas do Microsoft Entra. Esse método dá suporte a usuários que desejam usar suas credenciais do Windows, mas o computador local não está conectado ao domínio (por exemplo, usando acesso remoto). Nesse caso, um usuário do Windows pode indicar sua conta de domínio e senha e fazer a autenticação no banco de dados do Banco de Dados SQL, da Instância Gerenciada de SQL ou do Azure Synapse.

  1. Inicie o SSMS ou o SSDT e, na caixa de diálogo Conectar ao Servidor (ou Conectar ao Mecanismo de Banco de Dados), na caixa Autenticação, selecione Azure Active Directory - Senha.

  2. Na caixa Nome de usuário, digite seu nome de usuário do Microsoft Entra no formato username\@domain.com. Os nomes de usuário devem ser uma conta do Microsoft Entra ID ou uma conta de um domínio gerenciado ou federado com o Microsoft Entra ID.

  3. Na caixa Senha, digite sua senha de usuário para a conta do Microsoft Entra ou conta de domínio gerenciado/federado.

    Screenshot from SSMS using Microsoft Entra Password authentication.

  4. Selecione o botão Opções e, na página Propriedades de Conexão, na caixa Conectar ao banco de dados, digite o nome do banco de dados de usuário ao qual você deseja se conectar. (Confira o gráfico na opção anterior.)

Microsoft Entra ID — Universal com MFA

Use esse método para autenticação interativa com a MFA (autenticação multifator), com a senha solicitada interativamente. Esse método pode ser usado para autenticar os bancos de dados do Banco de Dados SQL, da Instância Gerenciada de SQL ou do Azure Synapse para usuários de identidade somente na nuvem do Microsoft Entra ou para aqueles que usam identidades híbridas do Microsoft Entra.

Para obter mais informações, confira Usar a autenticação multifator do Microsoft Entra com o Banco de Dados SQL e o Azure Synapse (suporte de SSMS para MFA) .

Microsoft Entra ID – entidade de serviço

Use esse método para se autenticar no no Banco de Dados SQL ou na Instância Gerenciada de SQL com entidades de serviço do Microsoft Entra (aplicativos Microsoft Entra). Para obter mais informações, consulte Entidade de serviço do Microsoft Entra com SQL do Azure.

Microsoft Entra ID — Identidade Gerenciada

Use esse método para se autenticar no Banco de Dados SQL ou na Instância Gerenciada de SQL com identidades gerenciadas do Microsoft Entra. Para obter mais informações, confira Identidades gerenciadas no Microsoft Entra para o SQL do Azure.

Microsoft Entra ID — Padrão

A opção de autenticação Padrão com o Microsoft Entra ID permite a autenticação realizada por meio de mecanismos sem senha e não interativos, incluindo identidades gerenciadas.

Usar a identidade do Microsoft Entra para se conectar usando o Editor de consultas do portal do Azure para Banco de Dados SQL do Azure

Para obter mais informações sobre o editor de consultas do portal do Azure para Banco de Dados SQL do Azure, consulte Início Rápido: Usar o editor de consultas do portal do Azure para consultar o Banco de Dados SQL do Azure.

  1. Navegue até o servidor do banco de dados SQL no portal do Azure. Por exemplo, visite seu painel do SQL do Azure.

  2. Na página Visão geral do banco de dados SQL no portal do Azure, selecione Editor de consultas no menu à esquerda.

  3. Na tela de início de sessão, em Bem-vindo ao Editor de Consultas do Banco de Dados SQL, selecione Continuar como <seu ID de usuário ou grupo>.

    Screenshot showing sign-in to the Azure portal Query editor with Microsoft Entra authentication.

Usar uma identidade do Microsoft Entra para se conectar por meio de um aplicativo cliente

Os procedimentos a seguir mostram como se conectar a um Banco de Dados SQL com uma identidade do Microsoft Entra de um aplicativo cliente. Esta não é uma lista abrangente de métodos de autenticação ao usar uma identidade do Microsoft Entra. Para obter mais informações, consulte Conectar-se ao Azure SQL com autenticação do Microsoft Entra e SqlClient.

Autenticação integrada do Microsoft Entra

Para usar a autenticação integrada do Windows, o Active Directory do seu domínio deve ser federado com o Microsoft Entra ID, ou deve ser um domínio gerenciado, configurado para logon único contínuo para a autenticação de passagem ou de hash de senha. Para obter mais informações, consulte Logon único sem problemas do Microsoft Entra.

O aplicativo cliente (ou um serviço) que se conecta ao banco de dados deve estar em execução em um computador conectado ao domínio com as credenciais de domínio do usuário.

Para conectar-se a um banco de dados usando a autenticação integrada e uma identidade do Microsoft Entra, a palavra-chave de Autenticação na cadeia de conexão de banco de dados deve ser definida como Active Directory Integrated. Substitua <database_name> pelo nome do Banco de Dados SQL. O exemplo de código em C# a seguir usa ADO .NET.

string ConnectionString = @"Data Source=<database_name>.database.windows.net; Authentication=Active Directory Integrated; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Para a conexão ao Banco de Dados SQL do Azure, não há suporte para a palavra-chave de cadeia de conexão Integrated Security=True. Ao estabelecer uma conexão ODBC, você precisa remover espaços e definir a autenticação como ActiveDirectoryIntegrated.

Autenticação por senha do Microsoft Entra

Para se conectar a um banco de dados usando contas de usuário de identidade somente na nuvem do Microsoft Entra, ou aqueles que usam identidades híbridas do Microsoft Entra, a palavra-chave de autenticação deve ser definida como Active Directory Password. A cadeia de conexão deve conter valores e palavras-chave de ID/UID de Usuário e Senha/PWD. Substitua <database_name>, <email_address> e <password> pelos valores apropriados. O exemplo de código em C# a seguir usa ADO .NET.

string ConnectionString =
@"Data Source=<database_name>.database.windows.net; Authentication=Active Directory Password; Initial Catalog=testdb; UID=<email_address>; PWD=<password>";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();

Saiba mais sobre métodos de autenticação do Microsoft Entra usando os exemplos de código de demonstração disponíveis em Demonstração do GitHub de autenticação do Microsoft Entra.

Token de acesso do Microsoft Entra ID

Esse método de autenticação permite que os serviços de nível intermediário obtenham JWT (tokens Web JSON) para se conectar ao banco de dados do Banco de Dados SQL, da Instância Gerenciada de SQL ou do Azure Synapse, obtendo um token do Microsoft Entra. Esse método permite vários cenários de aplicativo, incluindo identidades de serviço, entidades de serviço e aplicativos que usam a autenticação baseada em certificado. Você precisa concluir quatro etapas básicas para usar a autenticação de token do Microsoft Entra:

  1. Registre o aplicativo no Microsoft Entra ID e obtenha a ID do cliente para seu código.
  2. Criar um usuário de banco de dados que representa o aplicativo. (Concluído anteriormente na seção Criar usuários contidos mapeados em identidades do Microsoft Entra).
  3. Crie um certificado no computador cliente que executa o aplicativo.
  4. Adicionar o certificado como uma chave para seu aplicativo.

Exemplo de cadeia de conexão. Substitua <database_name> pelo nome do banco de dados:

string ConnectionString = @"Data Source=<database_name>.database.windows.net; Initial Catalog=testdb;";
SqlConnection conn = new SqlConnection(ConnectionString);
conn.AccessToken = "Your JWT token";
conn.Open();

Para obter mais informações, confira Blog de segurança do SQL Server. Para obter informações sobre como adicionar um certificado, consulte Introdução à autenticação baseada em certificado no Microsoft Entra ID.

sqlcmd

As instruções a seguir estabelecem conexão usando a versão 13.1 do sqlcmd. Baixar Utilitários de Linha de Comando 14.0 da Microsoft para SQL Server.

Observação

sqlcmd com o comando -G não funciona com as identidades do sistema e requer um logon principal do usuário.

sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -U bob@contoso.com -P MyAADPassword -G -l 30

Solucionar problemas de autenticação do Microsoft Entra

Para obter orientação sobre como solucionar problemas com a autenticação do Microsoft Entra, consulte Blog: Solucionando problemas relacionados à autenticação do Azure AD com o Banco de Dados SQL e DW do Azure.