Compartilhar via


Tutorial: Proteger com logons Microsoft Entra – Instância Gerenciada de SQL do Azure

Applies to:Instância Gerenciada de SQL do Azure

Neste artigo, aprenda a usar entidades de segurança do servidor (logons) apoiadas por Microsoft Entra ID (formerly Azure Active Directory) para proteger um Instância Gerenciada de SQL do Azure.

Neste tutorial, você aprenderá a:

  • Crie um logon Microsoft Entra para uma instância gerenciada de SQL.
  • Conceda permissões para logons em uma instância gerenciada de SQL.
  • Crie usuários do Microsoft Entra a partir de logons.
  • Atribua permissões aos usuários e gerencie a segurança do banco de dados.
  • Use a representação com os usuários.
  • Use consultas entre bancos de dados com usuários.
  • Saiba mais sobre os recursos de segurança, como proteção contra ameaças, auditoria, máscara de dados e criptografia.

Observação

Microsoft Entra ID era conhecido anteriormente 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 de SQL podem ser acessadas por meio de um endereço IP privado. Assim como um ambiente SQL Server isolado, aplicativos ou usuários precisam de acesso à rede Instância Gerenciada de SQL (VNet) antes que uma conexão possa ser estabelecida. Para obter mais informações, consulte Conectar seu aplicativo para Instância Gerenciada de SQL.

Também é possível configurar um endpoint de serviço em uma instância de SQL gerenciada, permitindo conexões públicas da mesma maneira que para o Banco de Dados SQL do Azure. Para obter mais informações, consulte Configure public endpoint in Instância Gerenciada de SQL do Azure.

Criar um logon Microsoft Entra usando o SSMS

O administrador do SQL pode criar o primeiro login do Microsoft Entra, ou o administrador do Microsoft Entra criado durante o provisionamento. Para obter mais informações, consulte Provisionar um administrador de Microsoft Entra para Instância Gerenciada de SQL.

Consulte os seguintes artigos para obter exemplos de conexão com Instância Gerenciada de SQL:

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

  2. Em Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha New Query.

  3. Na janela de consulta, use a seguinte sintaxe para criar um logon para uma conta de Microsoft Entra local:

    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 recém-adicionado executando o seguinte comando T-SQL:

    SELECT *
    FROM sys.server_principals;
    GO
    

    Captura de tela da guia Resultados no SSMS Pesquisador de Objetos mostrando o nome, principal_id, sid, tipo e type_desc do login recém-adicionado.

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 das funções de servidor apropriadas para criar outros logons Microsoft Entra.

Logons de autenticação SQL

Se o login for um principal de servidor baseado em autenticação SQL, ele deverá receber a função sysadmin para criar logins para contas do Microsoft Entra.

entradas de autenticação do Microsoft Entra

  • Se o login for uma credencial de servidor do Microsoft Entra, ele deve ser atribuído à função de servidor sysadmin ou securityadmin para criar logins para outros usuários, grupos e aplicativos do Microsoft Entra.
  • No mínimo, a permissão ALTER ANY LOGIN deve ser concedida para criar outros logins Microsoft Entra.
  • Por padrão, as permissões padrão concedidas aos logons de 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 diversos logons do Microsoft Entra em uma instância gerenciada de SQL.

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

  1. Faça login na instância gerenciada do SQL novamente ou use a conexão existente com o administrador do Microsoft Entra ou o principal do SQL que seja sysadmin.

  2. Em Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha New Query.

  3. Conceda à conta de login do Microsoft Entra a função de servidor sysadmin usando a seguinte sintaxe T-SQL:

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

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

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

Criar logons de Microsoft Entra adicionais usando o SSMS

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

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

    1. Insira o nome do host Instância Gerenciada de SQL em Server name.
    2. Para Authentication, selecione Microsoft Entra 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. Em Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha New Query.

  3. Na janela de consulta, use a seguinte sintaxe 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 Microsoft Entra bob@aadsqlmi.net, cujo domínio aadsqlmi.net é federado com o domínio Microsoft Entra aadsqlmi.onmicrosoft.com.

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

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

    1. Em Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha New Query.

    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 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 ao Instância Gerenciada de SQL. Consulte Criar um grupo básico e adicionar membros usando Microsoft Entra ID. Crie um grupo de mygroup e adicione membros a esse grupo.

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

    Este exemplo pressupõe que exista um grupo chamado mygroup em Microsoft Entra ID. Execute o comando a seguir:

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

  8. Em Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha New Query para a nova conexão.

  9. Verifique as permissões do 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 a entidades principais do Microsoft Entra como usuários e logons se estende a usuários convidados internos e externos do ID externa do Microsoft Entra. Os usuários convidados, individualmente e como parte de um grupo, podem ser usados da mesma forma que qualquer outro usuário Microsoft Entra no SQL do Azure. Se você quiser que os usuários convidados possam criar outras Microsoft Entra logons de servidor ou usuários de banco de dados, eles deverão ter permissões para ler outras identidades no diretório Microsoft Entra. Essa permissão é configurada no nível do diretório. Para obter mais informações, consulte permissões de acesso para convidados no Microsoft Entra ID.

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

A autorização para bancos de dados individuais funciona da mesma maneira em Instância Gerenciada de SQL que com bancos de dados em SQL Server. Você pode criar um usuário a partir de um logon existente em um banco de dados ao qual são concedidas permissões ou ao qual é atribuído a uma função de banco de dados.

Agora que criamos um banco de dados chamado MyMITestDB e um logon que só tem 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 de SQL e ver todos os bancos de dados, mas não pode interagir com os bancos de dados. Se você entrar com a conta Microsoft Entra que tem as permissões padrão e tentar expandir o banco de dados recém-criado, verá o seguinte erro:

Screenshot de uma mensagem de erro do Pesquisador de Objetos do SSMS que diz

Para obter mais informações sobre como conceder permissões de banco de dados, consulte Getting Started with Mecanismo de Banco de Dados Permissions.

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

Observação

Há algumas limitações quando um usuário entra como parte de um grupo de Microsoft Entra. Por exemplo, uma chamada para SUSER_SID retorna NULL, já que o usuário Microsoft Entra determinado 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 instância gerenciada do SQL com uma conta sysadmin no SQL Server Management Studio.

  2. Em Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha New Query.

  3. Na janela de consulta, use a seguinte sintaxe para criar um usuário de um logon 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 Microsoft Entra a partir de um logon do Microsoft Entra associado a um grupo.

    O exemplo a seguir cria um logon para o grupo Microsoft Entra mygroup que existe em seu locatário 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 a partir de um logon 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 pode ver a tabela TestTable que foi 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 em sua instância gerenciada de SQL com uma conta sysadmin usando SQL Server Management Studio.

  2. Em Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha New Query.

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

    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 permissões de 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 Microsoft Entra que foi criado no banco de dados existe executando o seguinte comando:

    SELECT * FROM sys.database_principals
    GO
    
  5. Crie uma nova conexão com a instância gerenciada de SQL com o usuário que foi adicionado à função db_datareader .

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

    Captura de tela do Pesquisador de Objetos no SSMS mostrando a estrutura de pastas para Tabelas no MyMITestDB. A pasta dbo.TestTable está realçada.

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

    SELECT *
    FROM TestTable
    

    É possível ver os dados da tabela? Você deverá ver as colunas sendo retornadas conforme demonstrado na seguinte captura de tela:

    Captura de tela da aba Resultados no Pesquisador de Objetos do SSMS mostrando os cabeçalhos das colunas NumConta, Cidade, Nome e Estado.

Impersonar logons do Microsoft Entra

Instância Gerenciada de SQL dá suporte à representação de logons de usuários do Microsoft Entra.

Teste de personificação

  1. Faça logon em sua instância gerenciada de SQL com uma conta sysadmin usando SQL Server Management Studio.

  2. Em Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha New Query.

  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 qual usuário você está representando ao executar o procedimento armazenado é bob@aadsqlmi.net.

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

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

Observação

Somente logins no nível do servidor SQL que fazem parte da função sysadmin podem executar as seguintes operações direcionadas às principais 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 Microsoft Entra com logons Microsoft Entra. Para testar uma consulta entre bancos de dados com um grupo Microsoft Entra, precisamos criar outro banco de dados e uma tabela. Você pode ignorar a criação de outro banco de dados e tabela caso eles já existam.

  1. Faça logon em sua instância gerenciada de SQL com uma conta sysadmin usando SQL Server Management Studio.

  2. Em Pesquisador de Objetos, clique com o botão direito do mouse no servidor e escolha New Query.

  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 mygroup do usuário no novo banco de dados MyMITestDB2 e conceda SELECT permissões nesse banco de dados ao mygroup:

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

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Você deve ver os resultados da tabela de TestTable2.

Cenários adicionais com suporte

  • Há suporte para o gerenciamento do SQL Agent e execuções de tarefas para logins Microsoft Entra.
  • Microsoft Entra logons podem executar operações de backup e restauração de banco de dados.
  • Auditing de todas as declarações relacionadas a logins e eventos de autenticação do Microsoft Entra.
  • Conexão de administrador dedicada para logons Microsoft Entra que são membros da função de servidor sysadmin.
  • Microsoft Entra logons são compatíveis com o uso da ferramenta sqlcmd utility e SQL Server Management Studio.
  • Há suporte para gatilhos de logon para eventos de logon provenientes de logons Microsoft Entra.
  • Os emails do Service Broker e do BD podem ser configurados usando logons Microsoft Entra.