Operar o SQL Server habilitado pelo Azure Arc com o menor privilégio

Aplica-se a:SQL Server

O princípio de segurança da informação de menor privilégio afirma que as contas e aplicações só têm acesso aos dados e 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 o menor privilégio. Este artigo explica como executar o serviço de extensão do agente com o mínimo privilégio.

Configurar contas de serviço do Windows e permissões 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 de agente.

Privilégio mínimo ativado por predefinição

O privilégio mínimo está ativado por defeito 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 está ativado por defeito nas 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 estas versões, siga os passos deste artigo para ativar manualmente o privilégio mínimo.

Observação

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

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

  • A extensão concede à conta apenas as permissões do Windows necessárias para ler e armazenar configurações e escrever registos.
  • A extensão concede ao login as permissões mínimas do SQL Server exigidas pelas funcionalidades ativadas.
  • A extensão revoga permissões quando deixam de ser necessárias, como quando desativas uma funcionalidade.
  • A extensão remove a conta quando desinstala a Extensão do Azure para SQL Server ou desativa o privilégio mínimo.

Pré-requisitos

Esta secção identifica os requisitos do sistema e as ferramentas necessárias 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 do SQL Server deve fazer parte do papel fixo de servidor sysadmin.
  • Todas as bases de dados devem estar online e atualizáveis.

O Least Privilege não é atualmente 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 suportada do arcdata, avance para o passo seguinte.

    Se necessário, instale ou atualize a extensão 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 o privilégio mínimo com a CLI do Azure.

    Para habilitar o privilégio mínimo, defina o sinalizador de recurso LeastPrivilege como true. Para desativar, defina a feature flag para false. Para completar esta tarefa, execute o seguinte comando com os seus valores para <resource-group> e <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 o privilégio mínimo para um servidor chamado 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 ser executado com o menor privilégio:

  1. Em Serviços, localize o Microsoft SQL Server Extension Service. Verifique se o serviço é executado com a conta de serviço NT SERVICE\SqlServerExtension.

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

  3. Abra o SQL Server Management Studio e verifique o logon chamado NT SERVICE\SqlServerExtension. Verifique se a conta tem estas permissões base:

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

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

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

    Para verificar permissões ao nível da base de dados, substitua <database-name> pelo nome de uma das suas bases 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: Gerir a conta de serviço do motor de base de dados SQL Server

Use a configuração padrão da conta de serviço para a maioria dos ambientes. Utilize o procedimento seguinte apenas se precisar de remover a conta de serviço do motor da base de dados do SQL Server da função fixa de servidor sysadmin entre operações de extensão.

Para usar o modo de menor privilégio, a conta de serviço do Motor de Base de Dados do SQL Server tem de ser membro da função de servidor fixa sysadmin em cada instância do SQL Server. Esta adesão permite ao sistema conceder ou revogar permissões automaticamente. Por predefinição, a conta de serviço do motor de base de dados do SQL Server é membro da função fixa de servidor sysadmin.

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

  • Podes ativar ou desativar funcionalidades
  • Adiciona ou remove instâncias do SQL Server
  • Instala ou atualiza a extensão

Deployer.exe faz-se passar pela conta do serviço SQL Server quando se liga ao SQL Server. Uma vez ligado, adiciona ou remove permissões nos papéis de servidor e base de dados, dependendo das funcionalidades ativadas ou desativadas. Este processo garante que a Extensão Azure para SQL Server utiliza os privilégios menos necessários.

Se quiser gerir este processo com mais controlo, de modo a que a conta do serviço SQL Server não seja sempre membro do papel fixo do servidor sysadmin o tempo todo, siga estes passos:

  1. Antes de instalar ou atualizar a extensão, ativar ou desativar uma funcionalidade, ou adicionar ou remover uma instância do SQL Server, adicione temporariamente a conta do serviço do motor de base de dados do SQL Server ao papel de servidor fixo de sysadmin.
  2. Permita que Deployer.exe seja executado pelo menos uma vez para que as permissões sejam definidas.
  3. Remova a conta do serviço SQL Server da função fixa de servidor sysadmin.

Repita este procedimento sempre que instalar ou atualizar a extensão, ativar ou desativar uma funcionalidade, ou adicionar ou remover uma instância do SQL Server. Este procedimento permite Deployer.exe conceder o mínimo de privilégios necessários.

Como tem de repetir este procedimento para cada atualização de extensão, considere desativar as atualizações automáticas. Podes então usar um script que executa estes passos e melhora a extensão.

Importante

A extensão Azure para SQL Server Deployer.exe requer que NT AUTHORITY\SYSTEM esteja habilitado a conectar-se ao SQL Server, com permissão CONNECT SQL, em ambos os modos standard e least privilege. Este requisito existe porque Deployer.exe é sempre executado sob a LocalSystem conta, independentemente da conta de serviço que a extensão utilize após o provisionamento.

Se NT AUTHORITY\SYSTEM não conseguir ligar-se a SQL Server, Deployer.exe não pode criar o login NT SERVICE\SqlServerExtension nem conceder as permissões necessárias. Antes de ativares o modo de menor privilégio, verifica se o NT AUTHORITY\SYSTEM tem um SQL Server ativo de login com permissão CONNECT SQL. Para verificar, consulte Pré-requisitos.

Se a conta de serviço do motor de base de dados do SQL Server não tiver a função de servidor fixa sysadmin, não podem ser concedidas permissões imediatas.

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