Segurança integrada e permissões elevadas

A execução de um relatório em uma conta com permissões elevadas expõe o SQL Server a ameaças de segurança se a consulta do relatório possuir instruções Transact-SQL mal-intencionadas (instruções que criam logons não autorizados, modificam ou excluem dados ou introduzem dados errôneos, por exemplo) e o relatório for executado por um usuário com permissão elevada no servidor que hospeda a fonte de dados. Por exemplo, se um invasor publicar um relatório que contém uma consulta mal-intencionada, ela será processada com credenciais do administrador se qualquer uma das condições abaixo estiver presente:

  • A fonte de dados do relatório é configurada para usar segurança integrada e o usuário que está executando o relatório efetuou logon como administrador.

  • A fonte de dados do relatório é configurada para solicitar credenciais e o usuário digita as suas credenciais de administrador para executar o relatório.

Práticas recomendadas para reduzir uma elevação de Ataque a Privilégio

Para reduzir esse tipo de ameaça, siga uma ou mais das práticas de segurança recomendadas seguintes:

  • Use contas com menos privilégios para acessar as fontes de dados externas que fornecem dados a um relatório. É possível configurar fontes de dados de relatório para usarem sempre as credenciais armazenadas de uma conta com menos privilégios.

  • Use fontes de dados compartilhadas para especificar informações de conexão de fonte de dados. Você pode usar atribuições de função na fonte de dados compartilhada para controlar o acesso à cadeia de conexão e às configurações que definem como as credenciais são obtidas em tempo de execução.

  • Use atribuições de função e processos de fluxo de trabalho para se certificar de que somente relatórios confiáveis são publicados em um servidor de relatório. Pelas atribuições de função é possível restringir a publicação de relatórios em pastas específicas e solicitar que os administradores inspecionem o arquivo RDL (e a consulta) de um relatório recém-publicado antes de movê-lo para um local definitivo. Observe que o Reporting Services não fornece um modo para forçar procedimentos operacionais padrão definidos pelo usuário para a organização. Não há nenhuma funcionalidade que force uma obrigação de inspeção antes da publicação.

  • Desabilite segurança integrada como opção de credencial da fonte de dados do relatório. Para desativar conexões de fonte de dados que usam segurança integrada, defina EnableIntegratedSecurity como falso. Para obter mais informações sobre como definir essa propriedade na página de propriedades de servidor no Management Studio, consulte Como definir propriedades do servidor de relatório (Management Studio).

O uso de segurança integrada para acessar fontes de dados externas coloca uma preocupação adicional para usuários de relatórios que talvez não saibam que seu token de segurança está sendo passado para uma fonte de dados externa (os usuários não são avisados antes de executarem um relatório de que o relatório está configurado para usar segurança integrada). Além disso, os usuários talvez não tenham as mesmas preocupações sobre abrir um relatório como se estivessem abrindo um anexo de email de uma fonte desconhecida. Porém, os riscos à segurança são os mesmos em ambos os cenários. Uma consulta mal-intencionada pode danificar ou comprometer um servidor do mesmo modo que um script mal-intencionado exposto por um hiperlink ou oculto em um anexo de email pode danificar ou comprometer uma estação de trabalho.

Observe que se desabilitar a segurança integrada, qualquer fonte de dados do relatório que estiver configurada para usar a segurança integrada (ou seja, posteriormente configurada para usar a segurança integrada após o recurso ser desabilitado) não será mais executada. O erro seguinte é retornado quando a segurança integrada não tem suporte no servidor de relatório: "Esta fonte de dados está configurada para usar a segurança integrada do Windows, mas a segurança integrada do Windows está desabilitada para o servidor".