Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: SQL Server Reporting Services (2016)
Power BI Report Server
Para obter conteúdo relacionado a versões anteriores do SQL Server Reporting Services (SSRS), consulte O que é o SQL Server Reporting Services?
A funcionalidade de sandboxing da Linguagem de Definição de Relatórios (RDL) permite-lhe detetar e restringir a utilização de tipos específicos de recursos, por inquilinos individuais, num ambiente com múltiplos inquilinos que utilizam uma única fazenda web de servidores de relatórios. Um exemplo é um cenário de serviços de alojamento onde pode manter uma única farm web de servidores de relatórios usados por vários inquilinos e diferentes empresas. Como administrador de servidor de relatórios, pode ativar esta funcionalidade para ajudar a alcançar os seguintes objetivos:
Restringa o tamanho dos recursos externos. Recursos externos incluem imagens, ficheiros .xslt e dados de mapas.
No momento da publicação do relatório, limite os tipos e elementos usados no texto de expressão.
No tempo de processamento do relatório, limite o comprimento do texto e o tamanho do valor de retorno para expressões.
Observação
A integração do Reporting Services com o SharePoint não está mais disponível após o SQL Server 2016.
Quando o RDL Sandboxing está ativado, as seguintes funcionalidades são desativadas:
Código personalizado no
<Code>elemento da definição de um relatório.Modo de compatibilidade retroativa RDL para itens personalizados de relatórios dos Serviços de Relatório do SQL Server 2005 (SSRS).
Parâmetros nomeados nas expressões.
Este artigo descreve cada elemento do <RDLSandboxing> elemento no ficheiro RSReportServer.Config. Para mais informações sobre como modificar este ficheiro, consulte Modificar um Ficheiro de Configuração dos Serviços de Relatórios (RSreportserver.config). Um registo de rastreio do servidor regista a atividade relacionada com a funcionalidade RDL Sandboxing. Para mais informações sobre registos de rastreamento, consulte Registo de Rastreamento do Serviço do Servidor de Relatórios.
Exemplo de configuração
O exemplo seguinte mostra as definições e valores do <RDLSandboxing> elemento no ficheiro RSReportServer.Config.
<RDLSandboxing>
<MaxExpressionLength>5000</MaxExpressionLength>
<MaxResourceSize>5000</MaxResourceSize>
<MaxStringResultLength>3000</MaxStringResultLength>
<MaxArrayResultLength>250</MaxArrayResultLength>
<Types>
<Allow Namespace="System.Drawing" AllowNew="True">Bitmap</Allow>
<Allow Namespace="TypeConverters.Custom" AllowNew="True">*</Allow>
</Types>
<Members>
<Deny>Format</Deny>
<Deny>StrDup</Deny>
</Members>
</RDLSandboxing>
Definições de configuração
A tabela seguinte fornece informações sobre as definições de configuração. As definições são apresentadas pela ordem em que aparecem no ficheiro de configuração.
| Configuração | Description |
|---|---|
| ComprimentoMáxDaExpressão | Número máximo de caracteres permitido em expressões RDL. Padrão: 1000 |
| MaxResourceSize | Número máximo de KB permitido para um recurso externo. Padrão: 100 |
| ComprimentoMáximoResultadoString | Número máximo de caracteres permitidos num valor de retorno para uma expressão RDL. Padrão: 1000 |
| ComprimentoMáximoResultadoArray | O número máximo de itens permitidos num array retorna valor para uma expressão RDL. Padrão: 100 |
| Tipos | A lista de membros que devem ser permitidos dentro de expressões RDL. |
| Permitir | Um tipo ou conjunto de tipos para permitir expressões RDL. |
| Espaço de nomes | Um atributo para Allow que é o namespace que contém um ou mais tipos aplicáveis ao Valor. Esta propriedade não diferencia entre maiúsculas e minúsculas. |
| AllowNew | Atributo booleano para Allow que controla se novas instâncias do tipo são permitidas em expressões RDL ou num elemento RDL<Class>.Quando RDLSandboxing está ativado, novos arrays não podem ser criados em expressões RDL, independentemente da definição de AllowNew. |
| Value | Valor de Allow que é o nome do tipo a permitir em expressões RDL. O valor * indica que todos os tipos no namespace são permitidos. Esta propriedade não diferencia entre maiúsculas e minúsculas. |
| Membros | Valor para a lista de tipos que estão no <Types> elemento e para a lista de nomes de membros que não são permitidos em expressões RDL. |
| Negar | O nome de um membro que não é permitido nas expressões do RDL. Esta propriedade não diferencia entre maiúsculas e minúsculas. Quando Deny é especificado para um membro, todos os membros com este nome para todos os tipos não são permitidos. |
Trabalhar com expressões quando o sandboxing RDL está ativado
Pode modificar a funcionalidade RDL Sandboxing para ajudar a gerir os recursos usados por uma expressão das seguintes formas:
Restringa o número de caracteres usados para uma expressão.
Restringa o tamanho do resultado devolvido por uma expressão.
Permitir uma lista específica de tipos que podem ser usados numa expressão.
Restringa a lista de membros por nome para a lista de tipos permitidos que podem ser usados numa expressão.
A funcionalidade Sandboxing RDL permite-lhe criar uma lista de tipos aprovados e uma lista de membros negados. A lista de tipos aprovados é chamada lista de autorizados. A lista de membros negados chama-se lista de bloqueio.
Observação
Na definição do relatório, um computador não pode saber o tipo de cada instância de uma referência de expressão. Quando adiciona um membro à lista de bloqueio, está a negar todos os membros com esse nome em todos os tipos da lista de permissões.
Os resultados da expressão RDL são verificados em tempo de execução. As expressões RDL são verificadas na definição do relatório quando o relatório é publicado. Monitorize o registo de rastreamento do servidor de relatórios para detectar violações. Para mais informações, consulte o Registo de Rastreio do Serviço do Servidor de Relatórios.
Trabalhar com tipos
Quando adiciona um tipo à lista de permissões, está a controlar os seguintes pontos de entrada para aceder às expressões RDL:
Membros estáticos de um tipo.
O método ''New'' do Visual Basic.
O
<Classes>elemento na definição do relatório.Membros que adicionaste à lista de bloqueio para um tipo na lista de permissões.
A lista de permissões não controla os seguintes pontos de entrada:
Reporte conjuntos de dados. Campos nos conjuntos de dados dos relatórios que são retornados por consultas podem conter qualquer tipo de RDL válido.
Reporte os parâmetros. Os valores de parâmetros fornecidos pelo utilizador podem conter qualquer tipo de RDL válido.
Membros de um tipo habilitado que não estão na lista de bloqueados. Por padrão, todos os membros de todos os tipos na lista de permissões estão ativados. Quando adicionas um nome de membro à lista de bloqueio, estás a negar todos os membros com esse nome em todos os tipos que estão na lista de permissões.
Para permitir um membro de um tipo mas negar um membro com o mesmo nome para outro tipo, deve realizar as seguintes ações:
Adicione um
<Deny>elemento para o nome do membro.Cria um membro proxy com um nome diferente numa classe numa assembleia personalizada para o membro que queres ativar.
Adiciona essa nova classe à lista de permissões.
Para adicionar funções do Visual Basic .NET Framework à lista de permisos, adicione os tipos correspondentes do Microsoft.VisualBasic namespace à lista de permisos.
Para adicionar palavras-chave do tipo Visual Basic .NET Framework à lista de permissões, adicione o tipo de CLR correspondente à lista de permissões. Por exemplo, para usar a palavra-chave Integer do Visual Basic .NET Framework, adicione o seguinte fragmento XML ao <RDLSandboxing> elemento:
<Allow Namespace="System">Int32</Allow>
Para adicionar um tipo genérico ou um tipo nullable do Visual Basic .NET Framework à lista de permissões, deve realizar as seguintes ações:
Crie um tipo proxy para o tipo genérico anulável ou do Visual Basic .NET Framework.
Adicione o tipo de proxy à lista de permissões.
Adicionar um tipo de uma assembly personalizada à lista de permissões não concede implicitamente permissão de execução na assembly. Deve modificar especificamente o código do ficheiro de acesso à segurança e fornecer permissão de execução à sua montagem. Para mais informações, consulte Segurança de Acesso ao Código nos Serviços de Relatório.
Manutenção da <lista de membros de Deny>
Quando adicionar um novo tipo à lista de permissões, use a lista seguinte para determinar quando poderá ter de atualizar a lista de bloqueio de membros:
Quando atualizas um conjunto personalizado com uma versão que introduz novos tipos.
Quando adicionas membros aos tipos na lista de permissões.
Quando atualizas o .NET Framework no servidor de relatórios.
Quando atualiza o servidor de relatórios para uma versão posterior dos Serviços de Relatório.
Quando atualizas um servidor de relatórios para gerir um esquema RDL posterior, porque podem ter sido adicionados novos membros aos tipos RDL.
A trabalhar com operadores e Novos
Por defeito, operadores da linguagem Visual Basic .NET Framework, exceto New, são sempre permitidos. O AllowNew atributo no <Allow> elemento controla o New operador. Outros operadores de linguagem, como o operador de acesso de coleção por defeito ! e as macros de casting do Visual Basic .NET Framework, como o CInt, são sempre permitidos.
Adicionar operadores a uma lista de bloqueio, incluindo operadores personalizados, não é suportado. Para excluir operadores de um tipo, deve realizar as seguintes ações:
Cria um tipo de proxy que não implemente os operadores que queres excluir.
Adicione o tipo de proxy à lista de permissões.
Para criar um novo array numa expressão RDL, crie o array num método numa classe que defina e adicione essa classe à lista de permissões.
Para criar um novo array numa expressão RDL, deve realizar as seguintes ações:
Define uma nova classe e cria o array num método nessa classe.
Adiciona a classe à lista de permissões.