Tutorial: Segurança com logons no Microsoft Entra - Instância Gerenciada de SQL do Azure

Aplica-se a:Instância Gerenciada de SQL do Azure

Neste artigo, aprenda a usar entidades de segurança de servidor (logons) com suporte do Microsoft Entra ID (antigo Azure Active Directory) para proteger uma Instância Gerenciada de SQL do Azure.

Neste tutorial, você aprenderá a:

  • Criar um logon do Microsoft Entra para uma instância gerenciada
  • Conceder permissões para logons em uma instância gerenciada
  • Criar usuários do Microsoft Entra em logons
  • Atribuir permissões para usuários e gerenciar a segurança do banco de dados
  • Usar usurpação de identidade com usuários
  • Usar consultas entre bancos de dados com usuários
  • Aprender sobre recursos de segurança, como proteção contra ameaças, auditoria, máscara de dados e criptografia

Observação

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

Pré-requisitos

Para concluir o tutorial, verifique se você tem os seguintes pré-requisitos:

Limitar o acesso

As instâncias gerenciadas podem ser acessadas por meio de um endereço IP privado. De modo muito semelhante a um ambiente do SQL Server isolado, aplicativos ou usuários precisam acessar a rede (VNet) da Instância Gerenciada de SQL antes que uma conexão possa ser estabelecida. Para obter mais informações, confira Conectar seu aplicativo à Instância Gerenciada de SQL.

Também é possível configurar um ponto de extremidade de serviço em uma instância gerenciada, o que permite conexões públicas, da mesma maneira que ocorre com o Banco de Dados SQL do Azure. Para obter mais informações, confira Configurar ponto de extremidade público na Instância Gerenciada de SQL do Azure.

Criar um logon do Microsoft Entra usando o SSMS

O primeiro logon do Microsoft Entra pode ser criado pelo administrador do SQL ou pelo administrador do Microsoft Entra criado durante o provisionamento. Para obter mais informações, confira Provisionar um administrador do Microsoft Entra para a Instância Gerenciada de SQL.

Leia os seguintes artigos para obter exemplos de como conectar-se à Instância Gerenciada de SQL:

  1. Conecte-se à sua instância gerenciada com um logon SQL sysadmin ou o administrador do Microsoft Entra usando o SQL Server Management Studio (SSMS).

  2. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha Nova Consulta.

  3. No período de consulta, use a sintaxe a seguir para criar um logon para uma conta local do Microsoft Entra.

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    Este exemplo cria um logon para a conta nativeuser@aadsqlmi.onmicrosoft.com.

    USE master
    GO
    CREATE LOGIN [nativeuser@aadsqlmi.onmicrosoft.com] FROM EXTERNAL PROVIDER
    GO
    
  4. Na barra de ferramentas, selecione Executar para criar o logon.

  5. Verifique o logon que acaba de ser adicionado executando o seguinte comando T-SQL:

    SELECT *  
    FROM sys.server_principals;  
    GO
    

    Screenshot of the Results tab in the S S M S Object Explorer showing the name, principal_id, sid, type, and type_desc of the newly added login.

Para obter mais informações, confira CREATE LOGIN.

Conceder permissões para criar logons

Os logons existentes devem ter permissões apropriadas ou fazer parte de funções de servidor apropriadas para criar outros logons do Microsoft Entra.

Logons de autenticação SQL

  • Se o logon for uma entidade de segurança de servidor baseada em autenticação SQL, deverá receber a função sysadmin para criar logons para contas do Microsoft Entra.

Logons de autenticação do Microsoft Entra

  • Se o logon for uma entidade de segurança de servidor do Microsoft Entra, deverá receber a função de servidor sysadmin ou securityadmin para criar logons para outros usuários, grupos e aplicações do Microsoft Entra.
  • No mínimo, a permissão ALTER ANY LOGIN deve ser concedida para criar outros logons do Microsoft Entra.
  • Por padrão, as permissões padrão concedidas a logons do Microsoft Entra recém-criados em master são: CONNECT SQL e VIEW ANY DATABASE.
  • A função de servidor sysadmin pode ser concedida a vários logons do Microsoft Entra dentro de uma instância gerenciada.

Para adicionar o logon à função de servidor sysadmin:

  1. Faça logon novamente na instância gerenciada ou use a conexão existente com o administrador do Microsoft Entra ou a entidade de segurança do SQL que seja um sysadmin.

  2. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha Nova Consulta.

  3. Conceda ao logon do Microsoft Entra a função de servidor sysadmin usando a sintaxe T-SQL a seguir.

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    O exemplo a seguir concede a função de servidor sysadmin para o logon nativeuser@aadsqlmi.onmicrosoft.com

    ALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com]
    GO
    

Criar logons adicionais do Microsoft Entra usando o SSMS

Depois que o logon do Microsoft Entra tiver sido criado e recebido privilégios de sysadmin, esse logon poderá criar logons adicionais usando a cláusula FROM EXTERNAL PROVIDER com CREATE LOGIN.

  1. Conecte-se à instância gerenciada com o logon do Microsoft Entra selecionando Conectar ao Servidor no SQL Server Management Studio (SSMS).

    1. Insira o nome do host de sua Instância Gerenciada de SQL Nome do servidor.
    2. Para Autenticação, selecione Active Directory - universal com suporte a MFA para abrir uma janela de logon de autenticação multifator. Entrar. Para obter mais informações, confira Autenticação universal (suporte do SSMS para autenticação multifator).
  2. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha Nova Consulta.

  3. No período de consulta, use a sintaxe a seguir para criar um logon para outra conta do Microsoft Entra.

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    Este exemplo cria um logon para o usuário do Microsoft Entra bob@aadsqlmi.net, cujo domínio aadsqlmi.net é federado com o domínio aadsqlmi.onmicrosoft.com do Microsoft Entra.

    Execute o seguinte comando T-SQL. Contas federadas do Microsoft Entra são as substituições da Instância Gerenciada de SQL para usuários e logons locais do Windows.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Crie um banco de dados na instância gerenciada usando a sintaxe CREATE DATABASE. Esse banco de dados será usado para testar os logons de usuário na próxima seção.

    1. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha Nova Consulta.

    2. Na janela de consulta, use a sintaxe a seguir para criar um banco de dados denominado MyMITestDB.

      CREATE DATABASE MyMITestDB;
      GO
      
  5. Crie um logon da Instância Gerenciada de SQL para um grupo no Microsoft Entra ID. O grupo precisa existir no Microsoft Entra ID antes de adicionar o logon à Instância Gerenciada de SQL. Confira Criar um grupo básico e adicionar membros usando o Microsoft Entra ID. Crie um grupo mygroup e adicione membros a ele.

  6. Abra uma nova janela de consulta no SQL Server Management Studio.

    Este exemplo presume que existe um grupo chamado mygroup no Microsoft Entra ID. Execute o comando a seguir:

    USE master
    GO
    CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
    GO
    
  7. Como teste, faça logon na instância gerenciada com o logon ou grupo recém-criado. Abra uma nova conexão à instância gerenciada e use o novo logon durante a autenticação.

  8. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha Nova Consulta para a nova conexão.

  9. Verifique as permissões de servidor para o logon do Microsoft Entra recém-criado executando o seguinte comando:

    SELECT * FROM sys.fn_my_permissions (NULL, 'DATABASE')
    GO
    

O suporte do SQL do Azure às entidades do Microsoft Entra como usuários e logons se estende aos usuários convidados internos e externos do Microsoft Entra External ID . Os usuários convidados, individualmente e como parte de um grupo, podem ser usados da mesma forma que qualquer outro usuário do Microsoft Entra no SQL do Azure. Se você quiser que os usuários convidados possam criar outros logons de servidor ou usuários de banco de dados do Microsoft Entra, eles devem ter permissões para ler outras identidades no diretório do Microsoft Entra. Essa permissão é configurada no nível do diretório. Para obter mais informações, consulte permissões de acesso de convidado no Microsoft Entra ID.

Criar um usuário do Microsoft Entra no logon do Microsoft Entra

A autorização para bancos de dados individuais funciona de maneira muito semelhante na Instância Gerenciada de SQL e nos bancos de dados no SQL Server. Você pode criar um usuário em um logon existente em um banco de dados ao qual foram concedidas permissões para esse banco de dados ou adicionado a uma função de banco de dados.

Agora que criamos um banco de dados chamado MyMITestDB e um logon que tem somente permissões padrão, a próxima etapa é criar um usuário com base nesse logon. No momento, o logon pode se conectar à instância gerenciada e ver todos os bancos de dados, mas não pode interagir com os bancos de dados. Se você entrar com a conta do Microsoft Entra que tem as permissões padrão e tentar expandir o banco de dados recém-criado, verá o seguinte erro:

Screenshot of an error message from the the S S M S Object Explorer that reads

Para obter mais informações sobre como conceder permissões de banco de dados, confira Introdução a Permissões de Mecanismo de Banco de Dados.

Criar um usuário do Microsoft Entra e criar uma tabela de amostra

Observação

Há algumas limitações quando um usuário entra como parte de um grupo do Microsoft Entra. Por exemplo, uma chamada para SUSER_SID retorna NULL, já que esse usuário do Microsoft Entra não faz parte da tabela sys.server_principals. Portanto, o acesso a determinados procedimentos armazenados ou a uma lista de permissões concedidas pode ser limitado nesse caso.

  1. Faça logon na sua instância gerenciada usando uma conta sysadmin usando o SQL Server Management Studio.

  2. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha Nova Consulta.

  3. No período de consulta, use a sintaxe a seguir para criar um usuário em um logon do Microsoft Entra.

    USE <Database Name> -- provide your database name
    GO
    CREATE USER user_name FROM LOGIN login_name
    GO
    

    O exemplo a seguir cria um usuário bob@aadsqlmi.net com base no logon bob@aadsqlmi.net:

    USE MyMITestDB
    GO
    CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net]
    GO
    
  4. Também há suporte para criar um usuário do Microsoft Entra em um logon do Microsoft Entra que seja um grupo.

    O exemplo a seguir cria um logon para o grupo do Microsoft Entra mygroup que existe em seu locatário do Microsoft Entra.

    USE MyMITestDB
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    

    Todos os usuários que pertencem a mygroup podem acessar o banco de dados MyMITestDB.

    Importante

    Ao criar um USER de um logon do Microsoft Entra, especifique o user_name como o mesmo login_name de LOGIN.

    Para obter mais informações, confira CREATE USER.

  5. Em uma nova janela de consulta, crie uma tabela de teste usando o seguinte comando T-SQL:

    USE MyMITestDB
    GO
    CREATE TABLE TestTable
    (
    AccountNum varchar(10),
    City varchar(255),
    Name varchar(255),
    State varchar(2)
    );
    
  6. Crie uma conexão no SSMS com o usuário que foi criado. Você observará que não é possível ver a tabela TestTable criada pelo sysadmin anteriormente. Precisamos fornecer ao usuário permissões para ler dados do banco de dados.

  7. Você pode verificar a permissão atual que o usuário tem executando o seguinte comando:

    SELECT * FROM sys.fn_my_permissions('MyMITestDB','DATABASE')
    GO
    

Adicionar usuários a funções no nível do banco de dados

Para o usuário ver os dados no banco de dados, podemos fornecer funções no nível do banco de dados ao usuário.

  1. Faça logon na sua instância gerenciada usando uma conta sysadmin usando o SQL Server Management Studio.

  2. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha Nova Consulta.

  3. Conceda ao usuário do Microsoft Entra a função de banco de dados db_datareader usando a sintaxe T-SQL a seguir.

    Use <Database Name> -- provide your database name
    ALTER ROLE db_datareader ADD MEMBER user_name
    GO
    

    O exemplo a seguir fornece ao usuário bob@aadsqlmi.net e ao grupo mygroup as permissões db_datareader no banco de dados MyMITestDB:

    USE MyMITestDB
    GO
    ALTER ROLE db_datareader ADD MEMBER [bob@aadsqlmi.net]
    GO
    ALTER ROLE db_datareader ADD MEMBER [mygroup]
    GO
    
  4. Verifique se o usuário do Microsoft Entra criado no banco de dados existe, executando o seguinte comando:

    SELECT * FROM sys.database_principals
    GO
    
  5. Criar uma nova conexão à instância gerenciada com o usuário adicionado à função db_datareader.

  6. Expanda o banco de dados Pesquisador de Objetos para ver a tabela.

    Screenshot from Object Explorer in S S M S showing the folder structure for Tables in MyMITestDB. The dbo.TestTable folder is highlighted.

  7. Abra uma nova janela de consulta e execute a seguinte instrução SELECT:

    SELECT *
    FROM TestTable
    

    É possível ver os dados da tabela? Você deve ver as colunas que estão sendo retornadas.

    Screenshot of the Results tab in the S S M S Object Explorer showing the table column headers AccountNum, City, Name, and State.

Usurpar a identidade de logons do Microsoft Entra

A Instância Gerenciada de SQL oferece suporte à usurpação de identidade de logons do Microsoft Entra.

Testar a representação

  1. Faça logon na sua instância gerenciada usando uma conta sysadmin usando o SQL Server Management Studio.

  2. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha Nova Consulta.

  3. Na janela de consulta, use o comando a seguir para criar um novo procedimento armazenado:

    USE MyMITestDB
    GO  
    CREATE PROCEDURE dbo.usp_Demo  
    WITH EXECUTE AS 'bob@aadsqlmi.net'  
    AS  
    SELECT user_name();  
    GO
    
  4. Use o comando a seguir para ver o que o usuário você está representando ao executar o procedimento armazenado é bob@aadsqlmi.net.

    Exec dbo.usp_Demo
    
  5. Teste a representação usando a instrução EXECUTE AS LOGIN:

    EXECUTE AS LOGIN = 'bob@aadsqlmi.net'
    GO
    SELECT SUSER_SNAME()
    REVERT
    GO
    

Observação

Somente logons no nível do SQL Server que fazem parte da função sysadmin podem executar as seguintes operações direcionadas a entidades de segurança do Microsoft Entra:

  • EXECUTE AS USER
  • EXECUTE AS LOGIN

Usar consultas entre bancos de dados

Há suporte para consultas entre bancos de dados para contas do Microsoft Entra com logons do Microsoft Entra. Para testar uma consulta entre bancos de dados com um grupo do Microsoft Entra group, é necessário criar outro banco de dados e tabela. Você pode ignorar a criação de outro banco de dados e tabela caso eles já existam.

  1. Faça logon na sua instância gerenciada usando uma conta sysadmin usando o SQL Server Management Studio.

  2. No Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha Nova Consulta.

  3. Na janela de consulta, use o seguinte comando para criar um banco de dados denominado MyMITestDB2 e uma tabela denominada TestTable2:

    CREATE DATABASE MyMITestDB2;
    GO
    USE MyMITestDB2
    GO
    CREATE TABLE TestTable2
    (
    EmpId varchar(10),
    FirstName varchar(255),
    LastName varchar(255),
    Status varchar(10)
    );
    
  4. Em uma nova janela de consulta, execute o seguinte comando para criar o usuário mygroup no novo banco de dados MyMITestDB2 e conceder permissões SELECT naquele banco de dados a mygroup:

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Entre na instância gerenciada usando o SQL Server Management Studio como um membro do grupo do Microsoft Entra mygroup. Abra uma nova janela de consulta e execute a instrução SELECT entre bancos de dados:

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Você deve ver os resultados da tabela de TestTable2.

Cenários adicionais com suporte

  • Há suporte para gerenciamento do SQL Agent e de execuções de cargo para logons do Microsoft Entra.
  • Operações de backup e restauração banco de dados podem ser executadas por logons do Microsoft Entra.
  • Auditoria de todas as instruções relacionadas a logons do Microsoft Entra e eventos de autenticação.
  • Conexão de administrador dedicada para logons do Microsoft Entra que são membros da função de servidor sysadmin.
  • Logons do Microsoft Entra têm suporte para uso do Utilitário sqlcmd e da ferramenta SQL Server Management Studio.
  • Há suporte para gatilhos de logon em eventos de logon provenientes de logons do Microsoft Entra.
  • Email do Service Broker e do BD podem ser configurados usando logons do Microsoft Entra.

Próximas etapas

Habilitar recursos de segurança

Confira o artigo Recursos de segurança da Instância Gerenciada de SQL para obter uma lista abrangente de maneiras de proteger seu banco de dados. Os seguintes recursos de segurança são discutidos:

Funcionalidades da Instância Gerenciada de SQL

Para obter uma visão geral completa das funcionalidades de Instância Gerenciada de SQL, confira: