Entidades de segurança de servidor do Microsoft Entra

Aplica-se a:Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse Analytics (somente pools de SQL dedicados)

Agora você pode criar e usar entidades de segurança de servidor do Microsoft Entra ID (anteriormente Azure Active Directory), que são logons no banco de dados master virtual de um Banco de Dados SQL. Há vários benefícios no uso de entidades de servidor do Microsoft Entra para Banco de Dados SQL:

  • Suporte para funções de servidor do Banco de Dados SQL do Azure para gerenciamento de permissões.
  • Dar suporte a vários usuários do Microsoft Entra com funções especiais para o Banco de Dados SQL, como as funções loginmanager e dbmanager.
  • Paridade funcional entre logons SQL e logons do Microsoft Entra.
  • Aumente o suporte à melhoria funcional, como o uso da autenticação somente via Microsoft Entra. A autenticação somente via Microsoft Entra permite que a autenticação SQL seja desabilitada, incluindo o administrador do servidor SQL e os logons e os usuários do SQL.
  • Permite que as entidades de segurança do Microsoft Entra ofereçam suporte à replicação geográfica. As entidades de segurança do Microsoft Entra podem se conectar à replicação geográfica de um banco de dados de usuário com permissões de somente leitura e de negação para o servidor primário.
  • Use logons de entidades de serviço do Microsoft Entra com funções especiais para automatizar completamente a manutenção e criação de bancos de dados e usuários com aplicativos do Microsoft Entra.

Para obter mais informações sobre a autenticação do Microsoft Entra no Azure SQL, confira Usar a autenticação do Microsoft Entra

Observação

As entidades de segurança (logons) do servidor Microsoft Entra estão atualmente em visualização pública para o Banco de Dados SQL do Azure e o Azure Synapse Analytics. Os logons do Microsoft Entra estão em disponibilidade geral na Instância Gerenciada de SQL do Azure e no SQL Server 2022.

Permissões

As permissões a seguir são necessárias para utilizar ou criar logons do Microsoft Entra no banco de dados master virtual.

  • Permissão de administrador do Microsoft Entra ou associação na função de servidor loginmanager. O primeiro logon do Microsoft Entra só pode ser criado pelo administrador do Microsoft Entra.
  • É necessário ser membro do Microsoft Entra ID no mesmo diretório usado para o Banco de Dados SQL do Azure.

Por padrão, a permissão VIEW ANY DATABASE é concedida aos logons recém-criados do Microsoft Entra no banco de dados master.

Sintaxe das entidades de segurança do Microsoft Entra

Use a sintaxe a seguir para criar e gerenciar entidades de segurança de servidor e banco de dados do Microsoft Entra.

Criar logon

Essa sintaxe cria um logon no nível do servidor com base em uma identidade do Microsoft Entra. Somente o administrador do Microsoft Entra pode executar esse comando no banco de dados master virtual.

CREATE LOGIN login_name
  { 
    FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    | WITH <option_list> [,..] 
  }

<option_list> ::=
    PASSWORD = { 'password' }
    [ , SID = sid ]

O login_name especifica o principal do Microsoft Entra, que é um usuário, grupo ou aplicativo do Microsoft Entra.

Para obter mais informações, confira CRIAR LOGON (Transact-SQL).

Criar usuário no logon

A sintaxe T-SQL abaixo cria uma entidade de segurança no nível de banco de dados do Microsoft Entra mapeada para logons do Microsoft Entra no banco de dados master virtual. Semelhante à sintaxe para criar um usuário de banco de dados independente do Microsoft Entra, a única diferença é especificar FROM LOGIN [login_name] em vez de FROM EXTERNAL PROVIDER.

Para criar um usuário do Microsoft Entra por meio de um logon do Microsoft Entra, use a sintaxe a seguir.

CREATE USER [user_name] FROM LOGIN [login_name]

Você pode usar a coluna SID de sys.database_principals para distinguir entre um usuário de banco de dados independente no Microsoft Entra e um usuário do Microsoft Entra criado em um logon. Para um usuário de banco de dados independente, o SID é uma sequência binária de comprimento 16. Para um usuário com base em logon, o SID é de comprimento 18 com um sufixo AADE.

Observação

Acrescentar o sufixo AADE ao SID é a maneira como identificamos um usuário do Microsoft Entra como sendo criado em um logon. No entanto, isso também significa que os SIDs para o logon e seus usuários não correspondem entre sys.server_principals e sys.database_principals. Para correlacionar o usuário de volta ao seu logon, o sufixo AADE deve primeiro ser removido.

Para entender a diferença conceitual entre usuários com base em logon e usuários de banco de dados independente, consulte Usuários de banco de dados independente.

Para obter mais informações sobre como criar a sintaxe do usuário, consulte CREATE USER (Transact-SQL).

Desabilitar ou habilitar um logon usando ALTER LOGIN

A sintaxe DDL ALTER LOGIN (Transact-SQL) pode ser usada para habilitar ou desabilitar um logon do Microsoft Entra no Banco de Dados SQL do Azure.

ALTER LOGIN [login_name] DISABLE 

Quando um logon é desabilitado, as conexões não são mais permitidas usando essa entidade de segurança de servidor. Ele também desabilita todas as entidades de banco de dados (usuários) criadas a partir desse logon de serem capazes de se conectar a seus respectivos bancos de dados.

Observação

  • ALTER LOGIN login_name DISABLE não afetará os usuários de banco de dados independente, já que eles não estão associados a logons.

  • ALTER LOGIN login_name DISABLE não é compatível com grupos Microsoft Entra.

  • Um logon desabilitado individual não pode pertencer a um usuário que faz parte de um grupo de logon criado no banco de dados master (por exemplo, um grupo de administração do Microsoft Entra).

  • Para que as alterações DISABLE ou ENABLE entre em vigor imediatamente, o cache de autenticação e o cache TokenAndPermUserStore devem ser limpos usando os comandos T-SQL.

    DBCC FLUSHAUTHCACHE
    DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 
    

Funções para entidades de segurança do Microsoft Entra

Funções especiais para Banco de Dados SQL podem ser atribuídas aos usuários do banco de dados master virtual para entidades de segurança do Microsoft Entra, incluindo dbmanager e loginmanager.

Funções de servidor do Banco de Dados SQL do Azure podem ser atribuídas a logons no banco de dados master virtual.

Para obter um tutorial sobre como conceder essas funções, confira Tutorial: criar e utilizar logons do servidor do Microsoft Entra.

Limitações e comentários

  • O administrador do servidor SQL não pode criar logons ou usuários do Microsoft Entra em nenhum banco de dados.
  • Um administrador ou usuário SQL não pode executar as seguintes operações do Microsoft Entra:
    • CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    • CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
    • EXECUTE AS USER [bob@contoso.com]
    • ALTER AUTHORIZATION ON securable::name TO [bob@contoso.com]
  • Não há suporte para a usurpação de identidade da entidade de segurança (logons) do servidor Microsoft Entra no Banco de Dados SQL do Azure e no Azure Synapse Analytics. Há suporte na Instância Gerenciada de SQL do Azure para:
  • Logons do Microsoft Entra não podem sobrepor o administrador do Microsoft Entra. O administrador do Microsoft Entra tem precedência sobre qualquer logon. Se uma conta do Microsoft Entra já tiver acesso ao servidor como administrador do Microsoft Entra, individualmente ou como membro de um grupo, o logon criado para essa conta não terá qualquer efeito. Entretanto, a criação de logon não é bloqueada por meio de T-SQL. Depois que a conta se autenticar no servidor, o logon terá as permissões efetivas de um administrador do Microsoft Entra e não de um logon recém-criado.
  • Não há suporte para a alteração de permissões em um objeto de logon específico do Microsoft Entra:
    • GRANT <PERMISSION> ON LOGIN :: <Microsoft Entra account> TO <Any other login>
  • Quando você altera as permissões para um logon do Microsoft Entra, por padrão, as alterações só entram em vigor na próxima vez que o logon se conectar ao Banco de Dados SQL do Azure. Quaisquer conexões abertas existentes com o logon não são afetadas. Para forçar as alterações de permissões a terem efeito imediato, você pode limpar manualmente a autenticação e o TokenAndPermUserStore, conforme descrito anteriormente em desabilitar ou habilitar um logon usando ALTER LOGON. Esse comportamento também se aplica ao fazer alterações de subscrição de função de servidor com ALTER SERVER ROLE.
  • No SQL Server Management Studio e no Azure Data Studio, o comando de script para criar um usuário não verifica se já há um logon do Microsoft Entra no master com o mesmo nome. Ele sempre gera o T-SQL para um usuário do banco de dados independente do Microsoft Entra.
  • Poderá ocorrer um erro se você estiver tentando criar um logon ou um usuário de uma entidade de serviço com um nome de exibição que não é exclusivo. Para obter mais informações sobre como realizar a mitigação desse erro, confira Logons e usuários do Microsoft Entra com nomes de exibição que não são exclusivos.

Limitações das entidades de segurança de servidor do Microsoft Entra

Com os logons do Microsoft Entra em visualização pública para o Banco de Dados SQL do Azure e o Azure Synapse Analytics, as seguintes limitações são conhecidas:

  • As funções de servidor do Banco de Dados SQL do Azure não têm suporte para grupos do Microsoft Entra.
  • Se o administrador do SQL for um grupo do Microsoft Entra, haverá algumas limitações quando os usuários desse grupo se conectarem. Cada usuário do Microsoft Entra individualmente não faz parte da tabela sys.server_principals. Isso tem várias consequências, inclusive chamadas para SUSER_SID retornando NULL.
  • Os logons de usuário do Microsoft Entra que fazem parte dos logons de grupo do Microsoft Entra também não são criados implicitamente, o que significa que eles não terão um esquema padrão e não poderão executar operações como CREATE SCHEMA até que um logon para o usuário do Microsoft Entra seja criado ou um esquema padrão seja atribuído ao grupo.
  • Não há suporte para alterar a propriedade de um banco de dados para um grupo do Microsoft Entra como proprietário do banco de dados.
    • ALTER AUTHORIZATION ON database::<mydb> TO [my_aad_group] falhou com a seguinte mensagem de erro:

      Msg 33181, Level 16, State 1, Line 4
      The new owner cannot be Azure Active Directory group.
      

Próximas etapas