Operar o SQL Server habilitado pelo Azure Arc com privilégios mínimos

Aplica-se:SQL Server

O princípio de segurança da informação de privilégios mínimos afirma que as contas e os aplicativos apenas têm acesso aos dados e às operações de que necessitam. Com o SQL Server habilitado pelo Azure Arc, você pode executar o serviço de extensão de agente com menos privilégios. Este artigo explica como executar o serviço de extensão do agente com privilégios mínimos.

Configurar contas de serviço e permissões do Windows para a Extensão do Azure para SQL Server descreve as permissões de privilégio mínimo para o serviço de extensão do agente.

Mínimo privilégio ativado por padrão

O privilégio mínimo é ativado por padrão nas seguintes versões do Azure Extension for SQL Server:

  • Versão 1.1.3453.436
  • Versão 1.1.3518.465 e versões posteriores

O privilégio mínimo não é ativado por padrão em versões anteriores a 1.1.3453.436 ou nas versões 1.1.3464.439, 1.1.3494.451 e 1.1.3500.453. Para essas versões, siga os passos deste artigo para ativar manualmente o privilégio mínimo.

Observação

Para servidores existentes que usam 1.1.2859.223 ou versões posteriores, quando a atualização automática está ativada, a configuração de menor privilégio é eventualmente aplicada como parte das atualizações automáticas. Para evitar a aplicação automática da configuração de menor privilégio, bloqueie as atualizações da extensão após 1.1.2859.223.

Quando o privilégio mínimo está ativado, a Extensão do Azure para SQL Server cria e gerencia NT SERVICE\SqlServerExtension automaticamente como uma conta local de serviço Windows e login do SQL Server:

  • A extensão concede à conta apenas as permissões do Windows necessárias para ler, armazenar configurações e gravar logs.
  • A extensão concede ao login as permissões mínimas do SQL Server exigidas pelos recursos habilitados.
  • A extensão revoga permissões quando elas não são mais necessárias, como quando você desativa um recurso.
  • A extensão remove a conta quando você desinstala a Extensão do Azure para SQL Server ou desativa o privilégio mínimo.

Pré-requisitos

Esta seção identifica os requisitos do sistema e as ferramentas que você precisa para ativar ou desativar o privilégio mínimo.

Requisitos do sistema

Configurar o privilégio mínimo exige:

  • Windows Server 2016 ou versões posteriores.
  • SQL Server 2014 (12.x) ou versões posteriores.
  • A conta de serviço SQL Server deve ser membro da função de servidor fixa sysadmin.
  • Todos os bancos de dados devem ser online e atualizáveis.

O privilégio mínimo atualmente não é suportado no Linux.

Ferramentas

Para concluir as etapas neste artigo, você precisa das seguintes ferramentas:

Ativar ou desativar o privilégio mínimo

  1. Entre com a CLI do Azure.

    az login
    
  2. Verifique a versão da extensão arcdata.

    az extension list -o table
    

    Se os resultados incluírem uma versão com suporte do arcdata, avance para a etapa seguinte.

    Se necessário, instale ou atualize a extensão da arcdata CLI do Azure.

    Para instalar a extensão:

    az extension add --name arcdata
    

    Para atualizar a extensão:

    az extension update --name arcdata
    
  3. Habilite privilégios mínimos com a CLI do Azure.

    Para habilitar privilégios mínimos, defina o sinalizador de recurso LeastPrivilege como true. Para desativar, defina a feature flag para false. Para completar essa tarefa, execute o seguinte comando com seus valores para o <resource-group> e o <machine-name>.

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group <resource-group> --machine-name <machine-name>
    

    Por exemplo, o comando a seguir habilita privilégios mínimos para um servidor nomeado myserver em um grupo de recursos chamado myrg:

    az sql server-arc extension feature-flag set --name LeastPrivilege --enable true --resource-group myrg --machine-name myserver
    

Verificar a configuração de privilégios mínimos

Para verificar se o SQL Server habilitado pelo Azure Arc está configurado para execução com privilégios mínimos:

  1. Em Serviços, localize o Microsoft SQL Server Extension Service. Verifique se o serviço está em execução na conta de serviço NT SERVICE\SqlServerExtension.

  2. Abra o Agendador de Tarefas no servidor. Verifique se uma tarefa orientada a eventos chamada SqlServerExtensionPermissionProvider existe sob Microsoft\SqlServerExtension.

  3. Abra o SQL Server Management Studio e verifique o logon denominado NT SERVICE\SqlServerExtension. Verifique se a conta está com essas permissões base:

    • CONNECT SQL
    • VIEW DATABASE STATE
    • VIEW SERVER STATE
  4. Valide as permissões com as seguintes consultas:

    Para verificar as permissões no nível do servidor, execute a seguinte consulta:

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    SELECT *
    FROM fn_my_permissions(NULL, 'SERVER');
    
    REVERT;
    

    Para verificar as permissões no nível do banco de dados, substitua <database-name> pelo nome de um de seus bancos de dados e execute a seguinte consulta:

    EXECUTE AS LOGIN = 'NT SERVICE\SqlServerExtension';
    
    USE [<database-name>];
    SELECT * FROM fn_my_permissions(NULL, 'database');
    
    REVERT;
    

Opcional: Gerenciar a conta de serviço do motor de banco de dados do SQL Server

Use a configuração padrão da conta de serviço para a maioria dos ambientes. Use o procedimento a seguir somente se precisar remover a conta de serviço do mecanismo de banco de dados do SQL Server da função de servidor fixa sysadmin entre operações de extensão.

Para usar o modo de privilégios mínimos, a conta de serviço do Mecanismo de Banco de Dados do SQL Server deve ser membro da função de servidor fixa sysadmin em cada instância do SQL Server. Essa associação permite que o sistema conceda ou revogue permissões automaticamente. Por padrão, a conta de serviço do Mecanismo de Banco de Dados do SQL Server pertence à função de servidor fixa sysadmin.

A extensão do Azure para SQL Server executa um processo temporário chamado Deployer.exe como NT AUTHORITY\SYSTEM quando:

  • Você habilita ou desativa recursos
  • Você adiciona ou remove instâncias do SQL Server
  • Você instala ou atualiza a extensão

Deployer.exe representa a conta de serviço SQL Server quando se conecta ao SQL Server. Uma vez conectado, ele adiciona ou remove permissões nas funções de servidor e banco de dados, dependendo de quais recursos estão habilitados ou desabilitados. Esse processo garante que a Extensão Azure para SQL Server use os privilégios mínimos necessários.

Se você quiser gerenciar esse processo com mais controle, de modo que a conta de serviço do SQL Server não seja membro da função de servidor fixa sysadmin em todos os momentos, siga estas etapas:

  1. Antes de instalar ou atualizar a extensão, ativar ou desativar um recurso, ou adicionar ou remover uma instância do SQL Server, adicione temporariamente a conta do serviço do SQL Server Database Engine à função de servidor fixo de sysadmin.
  2. Permitir a execução de Deployer.exe pelo menos uma vez para que as permissões sejam definidas.
  3. Remova a conta de serviço SQL Server da função de servidor fixa sysadmin.

Repita esse procedimento sempre que instalar ou atualizar a extensão, ativar ou desativar um recurso, ou adicionar ou remover uma instância do SQL Server. Esse procedimento permite Deployer.exe conceder o menor número de privilégios necessários.

Como você precisa repetir esse procedimento a cada atualização de extensão, considere desativar as atualizações automáticas. Você pode então usar um script que executa esses passos e atualiza a extensão.

Importante

A Extensão Azure para SQL Server Deployer.exe precisa de NT AUTHORITY\SYSTEM para conseguir se conectar ao SQL Server, com a permissão CONNECT SQL, nos modos standard e least privilege. Esse requisito existe porque Deployer.exe sempre é executado sob a conta LocalSystem, independentemente de qual conta de serviço a extensão usa após o provisionamento.

Se NT AUTHORITY\SYSTEM não puder se conectar ao SQL Server, Deployer.exe não poderá criar o logon NT SERVICE\SqlServerExtension ou conceder as permissões necessárias. Antes de habilitar o modo de privilégio mínimo, verifique se NT AUTHORITY\SYSTEM tem um logon SQL Server ativo com permissão CONNECT SQL. Para verificar, veja Pré-requisitos.

Se a conta de serviço do Mecanismo de Banco de Dados do SQL Server não tiver a função de servidor fixa sysadmin, as permissões just-in-time não poderão ser concedidas.

Para detalhes sobre quando essas permissões são usadas, veja Configurar contas de serviço Windows e permissões para a Extensão do Azure para SQL Server.