Erro de sistema de serviço de parada líquida 5 acesso negado

1

Do SQL server 2012 eu tento fazer isso:

DECLARE @COMMAND nvarchar(4000)
SET @COMMAND = 'net stop <servicename>'
exec master.dbo.xp_cmdshell @COMMAND

Eu recebo o erro 5 do sistema e o acesso é negado como resposta

A conta de serviço (marcada com whoami ) é adicionada aos administradores, então, o que mais pode estar errado?

    
por Sjef 11.08.2017 / 13:27

2 respostas

0

Execute o SQL Server 2012 como administrador e o problema desaparecerá.

    
por 11.08.2017 / 14:30
0

Permitir que o usuário que não é sysadmin execute xp_cmdshell do SSMS

Ajudei a solucionar um problema em que precisávamos conceder acesso de desenvolvedor de aplicativo para executar xp_cmdshell de uma sessão do SSMS em vez de " Executar como " do trabalho do SQL Agent em um servidor de desenvolvimento não crítico sem torná-lo um sysadmin na instância do SQL Server.

O que fizemos

Observação: a conta de usuário do domínio pode ser substituída pela conta do grupo de trabalho, pela conta da máquina local etc.

Importante: você precisa entender o risco de permitir que os usuários em seu ambiente executem comandos no nível do sistema operacional e só deve conceder esse nível de permissões a xp_cmdshell àqueles que são confiáveis o suficiente este nível de segurança com o proxy .

  1. Criei uma nova conta de usuário de domínio com uma senha strong e anotei o nome de usuário e a senha. Garantiu que a conta estava ativada e a senha foi configurada para nunca expirar.

  2. Criamos um novo Login do SQL Server amarrado à nova conta de usuário de domínio que criamos.

  3. Criado um novo credencial de proxy vinculada à conta de usuário do domínio.

    EXEC sp_xp_cmdshell_proxy_account '<Domain>\<NewUser>', '<password>' -- you have to type actual password
    
  4. Concedido que Login do SQL Server explícito EXECUTE acesso ao proc armazenado estendido do sistema a partir do Master DB denominado sys.xp_cmdshell .

    --see who all has execute access to xp_cmdshell   
    Use master                      
    EXEC sp_helprotect 'xp_cmdshell'
    
    
    -- To allow advanced options to be changed.
    EXEC sp_configure 'show advanced options', 1
    RECONFIGURE
    GO
    
    -- Enable the xp_cmdshell procedure
    EXEC sp_configure 'xp_cmdshell', 1
    RECONFIGURE
    GO
    
    -- Grant execute permissions to account
    GRANT EXECUTE ON xp_cmdshell TO [<Domain>\<NewUser>]
    
  5. Conceda à pessoa que use o EXECUTE AS personificar a permissão para o novo login do SQL Server .

    GRANT IMPERSONATE ON LOGIN::[<Domain>\<NewUser>] TO [<Domain>\<UserGrantingExecuteAsUser>]
    
  6. Agora, execute o comando com o EXECUTE AS LOGIN e passe o comando net stop para o procedimento xp_cmdshell armazenado. A entidade de segurança, conforme listada na etapa 5 acima, no <Domain>\<UserGrantingExecuteAsUser> , deve ser a da pessoa que está executando o SSMS como contexto de segurança para essa tarefa.

    EXECUTE AS LOGIN = '<Domain>\<NewUser>'
    DECLARE @COMMAND nvarchar(4000)
    SET @COMMAND = 'net stop <servicename>'
    EXEC xp_cmdshell @COMMAND
    REVERT
    

Mais recursos

por 21.08.2017 / 20:07