Partilhar via


SQL Server no Windows: Alterações de isolamento para Serviços de Aprendizagem Automática

Aplica-se a: SQL Server 2019 (15.x) e versões posteriores no Windows e SQL Server 2022 (16.x) - apenas para Windows

Este artigo descreve as alterações ao mecanismo de isolamento nos Serviços de Aprendizagem Automática no SQL Server no Windows, introduzidos pela primeira vez no SQL Server 2019. Estas alterações afetam o SQLRUserGroup, regras de firewall, permissões de ficheiros e autenticação implícita.

Para mais informações, veja como instalar os Serviços de Aprendizagem Automática do SQL Server no Windows.

Alterações ao mecanismo de isolamento

No Windows, o SQL Setup altera o mecanismo de isolamento para processos externos. Esta alteração substitui as contas locais de trabalhadores por AppContainers, uma tecnologia de isolamento para aplicações clientes a correr no Windows.

Não existem ações específicas para o administrador como resultado da modificação. Num servidor novo ou atualizado, todos os scripts e códigos externos executados a partir de sp_execute_external_script seguem automaticamente o novo modelo de isolamento.

Resumindo, as principais diferenças nesta versão são:

  • Contas de utilizadores locais sob o SQL Restricted User Group (SQLRUserGroup) já não são criadas nem usadas para executar processos externos. Os AppContainers substituem-nas.
  • A adesão ao SQLRUserGroup foi alterada. Em vez de várias contas de utilizador locais, a adesão consiste apenas na conta do serviço SQL Server Launchpad. Os processos R e Python são agora executados sob a identidade do serviço Launchpad, isolados através de AppContainers.

Embora o modelo de isolamento tenha mudado, o assistente de instalação e os parâmetros da linha de comandos mantêm-se iguais em comparação com versões anteriores do SQL Server. Para ajuda com a instalação, consulte Instalar SQL Server 2016-2019 Serviços de Aprendizagem Automática ou Instalar SQL Server 2022 Serviços de Aprendizagem Automática (Python e R) no Windows.

Sobre o isolamento do AppContainer

Em versões anteriores, o SQLRUserGroup continha um conjunto de contas de utilizador locais do Windows (MSSQLSERVER00-MSSQLSERVER20) usadas para isolar e executar processos externos. Quando era necessário um processo externo, o serviço SQL Server Launchpad recolhia uma conta disponível e usava-a para executar um processo.

A partir do SQL Server 2019, o SQL Setup deixou de criar contas de trabalhadores locais. Em vez disso, o isolamento é alcançado através dos AppContainers. Em tempo de execução, quando é detetado um script ou código embutido num procedimento armazenado ou consulta, o SQL Server chama o Launchpad com um pedido de um launcher específico para a extensão. O Launchpad invoca o ambiente de execução apropriado num processo sob a sua identidade e instancia um AppContainer para o conter. Esta alteração é benéfica porque a gestão local de contas e palavras-passe deixou de ser necessária. Além disso, em instalações onde contas de utilizadores locais são proibidas, a eliminação da dependência da conta de utilizador local significa que agora pode usar esta funcionalidade.

Tal como implementados pelo SQL Server, os AppContainers são um mecanismo interno. Embora não veja evidências físicas de AppContainers no Process Monitor, pode encontrá-las nas regras de firewall de saída criadas pelo Setup para impedir que os processos façam chamadas de rede.

Regras de firewall criadas pela Configuração

Por defeito, o SQL Server desativa as ligações de saída criando regras de firewall. No passado, estas regras baseavam-se em contas de utilizador locais, onde o Setup criava uma regra de saída para o SQLRUserGroup que negava o acesso à rede aos seus membros (cada conta de trabalhador era listada como um princípio local sujeito à regra).

Como parte da transição para os AppContainers, existem novas regras de firewall baseadas em SIDs do AppContainer: uma para cada um dos 20 AppContainers criados pelo SQL Server Setup. As convenções de nomenclatura para o nome da regra do firewall são Bloquear acesso à rede para o AppContainer-00 na instância do SQL Server MSSQLSERVER, onde 00 é o número do AppContainer (00-20 por defeito), e MSSQLSERVER é o nome da instância do SQL Server.

Observação

Se forem necessárias chamadas de rede, pode desativar as regras de saída no Windows Firewall.

Permissões de ficheiro

Por defeito, scripts Python e R externos só têm permissão de acesso de leitura aos seus diretórios de trabalho.

Se os seus scripts Python ou R precisarem de acesso a qualquer outro diretório, deve dar permissões de Leitura & execução e/ou Escrita à conta de utilizador do serviço NT Service\MSSQLLaunchpad e a TODOS OS PACOTES DE APLICAÇÕES neste diretório.

Siga os passos abaixo para conceder o acesso.

  1. No Explorador de Ficheiros, clique com o botão direito na pasta que quer usar como diretório de trabalho e selecione Propriedades.
  2. Seleciona Segurança e clica em Editar... para alterar permissões.
  3. Clica em Adicionar...
  4. Certifique-se que De esta localização é o nome do computador local.
  5. Introduza TODOS OS PACOTES DE APLICAÇÃO em Introduza os nomes dos objetos para selecionar e clicar em Verificar Nomes. Clique em OK.
  6. Selecione Ler e executar na coluna Permitir .
  7. Selecione Escrever na coluna Permitir , se quiser conceder permissões de escrita.
  8. Clica em OK e OK.

Permissões de ficheiros de programa

Tal como nas versões anteriores, o SQLRUserGroup continua a fornecer permissões de leitura e execução em executáveis nos diretórios SQL Server Binn, R_SERVICES e PYTHON_SERVICES . Nesta versão, o único membro do SQLRUserGroup é a conta do serviço SQL Server Launchpad. Quando o serviço Launchpad inicia um ambiente de execução em R ou Python, o processo executa-se como serviço LaunchPad.

Autenticação implícita

Tal como antes, ainda é necessária uma configuração adicional para autenticação implícita nos casos em que um script ou código tenha de se ligar novamente ao SQL Server usando autenticação de confiança para recuperar dados ou recursos. A configuração adicional envolve a criação de um login de base de dados para o SQLRUserGroup, cujo único membro é agora a única conta do serviço SQL Server Launchpad em vez de múltiplas contas de trabalhadores. Para mais informações sobre esta tarefa, veja Adicionar SQLRUserGroup como utilizador de base de dados.

É criado um link simbólico para o R_SERVICES e PYTHON_SERVICES padrão atuais como parte da Configuração do SQL Server. Se não quiser criar este link, uma alternativa é conceder permissão de leitura de 'todos os pacotes de aplicação' à hierarquia que conduz à pasta.

Consulte também