Concedendo acesso personalizado a dados da dimensão

Depois que uma função de banco de dados do MicrosoftSQL Server 2005 Analysis Services (SSAS) tiver permissão de leitura/gravação para as dimensões em um cubo, você pode definir segurança em cada membro de atributo de dimensão (também chamada de segurança de dimensão). Por padrão, uma função de banco de dados tem acesso a todos os membros de todos os atributos de dimensão em um cubo ao qual eles têm acesso de leitura. Você pode definir um conjunto específico de membros de atributo para cada atributo de dimensão para o qual membros de funções têm direitos de acesso específicos (AllowedSet) ou para o qual especificamente lhes negam direitos de acesso (DeniedSet). Também é possível definir o membro padrão para cada hierarquia de atributo. Por padrão, Todos os membros é o membro padrão. Se você negar permissões de leitura a certos membros de atributo, convém ter o valor Todos os membros agregado aos membros cujos membros de função tenham acesso, em vez de o agregado de todos os membros da hierarquia de atributo. Para especificar esse comportamento, você habilita o VisualTotals. Quando você habilita o VisualTotals, o agregado é calculado na hora da consulta, em vez de recuperado de agregações pré-calculadas.

ObservaçãoObservação

O tipo de acesso que membros de uma função de dimensão têm é baseado no acesso de dimensão concedido, leitura ou leitura/gravação.

Compreendendo a propriedade IsAllowed

A propriedade IsAllowed determina se a função de banco de dados pode acessar membros de atributo. Por padrão, uma função de banco de dados que tem acesso a uma dimensão não pode acessar hierarquias de atributo.

Compreendendo a propriedade AllowedSet

A propriedade AllowedSet usa uma linguagem MDX (Multidimensional Expressions) para determinar quais membros de atributo podem ser exibidos pela função de banco de dados (o conjunto permitido). O conjunto permitido pode incluir nenhum (padrão), todos ou alguns membros de atributo. Se você permitir acesso a um atributo e não definir nenhum membro do conjunto permitido, será concedido acesso a todos os membros. Se você permitir acesso a um atributo e definir um conjunto específico de membros de atributos, apenas os membros especificamente permitidos ficarão visíveis. Definir especificamente um conjunto permitido pode limitar a visibilidade de membros de atributo adicionados depois que o conjunto permitido for definido.

Limitar o conjunto permitido para um atributo afeta a visibilidade de outros atributos. Por exemplo, suponha que o conjunto permitido para o atributo Customer inclua apenas alguns membros de atributo, mas o conjunto permitido para o atributo City inclua todos os membros de atributo. Nesse caso, os únicos membros do atributo City que ficarão visíveis são as cidades que têm os clientes no conjunto permitido do atributo Customer. Se houver uma cidade que não tenha nenhum cliente, os membros de atributo dessa cidade não ficarão visíveis. Em outras palavras, um membro de atributo só poderá ficar visível se aquele membro de atributo existir com pelo menos um membro do conjunto permitido.

ObservaçãoObservação

Se você definir um conjunto vazio de membros de atributo, nenhum membro do atributo ficará visível à função de banco de dados. A ausência de um conjunto permitido não é interpretada como um conjunto vazio.

Compreendendo a propriedade DeniedSet

A propriedade DeniedSet usa uma linguagem MDX para determinar os membros de atributo aos quais uma função de banco de dados tem acesso explicitamente negado (o conjunto negado). O conjunto negado pode incluir nenhum, todos (padrão) ou alguns membros de atributo. Por padrão, nenhum conjunto negado está definido.

Quando o conjunto negado contiver apenas um conjunto específico de membros de atributo, a função de banco de dados tem o acesso negado apenas a esses membros específicos. Definir especificamente um conjunto negado pode afetar a acessibilidade de membros de atributo adicionados depois que o conjunto negado estiver definido.

Quando você definir um conjunto específico de atributos no conjunto negado, o efeito desse conjunto negado na acessibilidade de outros atributos depende de a propriedade ApplyDenied estar habilitada ou não. Por exemplo, suponha que haja um conjunto negado no atributo State e a propriedade ApplyDenied esteja habilitada. Nesse caso, a função de banco de dados não conseguirá acessar nenhum dos atributos Customer para esses estados dentro do conjunto negado.

Compreendendo a propriedade ApplyDenied

A propriedade ApplyDenied indica se membros de um conjunto negado são usados para determinar se membros de uma hierarquia de atributo são visíveis à função de banco de dados. Por padrão, a propriedade ApplyDenied é definida como True (habilitada) para cada hierarquia de atributo.

ObservaçãoObservação

Diferente do conjunto negado, cujo efeito depende da propriedade ApplyDenied, o conjunto permitido é sempre aplicado para determinar se membros de uma hierarquia de atributo são visíveis à função de banco de dados.

Quando a propriedade ApplyDenied estiver habilitada e houver um conjunto negado, a função de banco de dados não poderá acessar nenhum membro de uma hierarquia de atributo se essa hierarquia contiver quaisquer dos membros do conjunto negado. Por exemplo, a propriedade ApplyDenied está habilitada e o conjunto negado é composto de estados no atributo State. Além de não poder acessar o atributo State, a função de banco de dados não poderá acessar o atributo Customers para nenhum estado do conjunto negado.

Quando a propriedade ApplyDenied estiver desabilitada e houver um conjunto negado, a função de banco de dados não poderá acessar nenhum membro de uma hierarquia de atributo, mesmo se essa hierarquia contiver quaisquer dos membros do conjunto negado. Por exemplo, a propriedade ApplyDenied está desabilitada e o conjunto negado é composto de estados no atributo State. Embora a função de banco de dados não possa acessar o atributo State, a função de banco de dados não poderá também acessar o atributo Customers para nenhum estado do conjunto negado.

Compreendendo a propriedade VisualTotals

A propriedade VisualTotals indica se os valores da célula agregada que são exibidos são calculados de acordo com todos os valores de célula ou só de acordo com os valores da células que são visíveis à função de banco de dados.

Por padrão, a propriedade VisualTotals está desabilidade (definida como False). Essa configuração padrão maximiza o desempenho porque o Analysis Services pode calcular rapidamente o total de todos os valores da célula, em vez de ter que passar tempo selecionando quais valores de células deverão ser calculados.

Porém, se a propriedade VisualTotals estiver desabilitada, poderá criar um problema de segurança se um usuário puder usar os valores de célula agregada para deduzir valores para membros de atributo para os quais a função de banco de dados do usuário não tem acesso. Por exemplo, o Analysis Services usa os valores para três membros de atributo calcularem um valor de célula agregada. A função de banco de dados tem acesso para exibir dois desses três membros de atributo. Usando o valor de célula agregada, um membro dessa função de banco de dados poderia deduzir o valor para o terceiro membro de atributo.

Se um usuário puder deduzir valores para membros de atributo aos quais a função de banco de dados do usuário não tem acesso, a prática recomendada de segurança exige que a propriedade VisualTotals seja habilitada (definida como True) para o atributo. Quando você habilitar a propriedade VisualTotals, uma função de banco de dados pode exibir apenas totais agregados para membros de dimensão para os quais a função tem permissão. Por exemplo, habilitar a propriedade VisualTotals significa que a função de banco de dados verá um total agregado que inclui apenas esses estados (quer dizer, membros do atributo State) que são visíveis à função. O total agregado não incluirá os valores para todos os estados.

Compreendendo a propriedade DefaultMember

A propriedade DefaultMember determina o conjunto de dados que é retornado a um cliente quando um atributo não é incluído explicitamente em uma consulta. Quando o atributo não é incluído explicitamente, o Analysis Services usa um dos seguintes membros padrão para o atributo:

  • Se a função de banco de dados definir um membro padrão para o atributo, o Analysis Services usará esse membro padrão.

  • Se a função de banco de dados não definir um membro padrão para o atributo, o Analysis Services usará o membro padrão que está definido para o próprio atributo. O membro padrão para um atributo, a menos que você especifique algo diferente, é o membro All (a menos que o atributo esteja definido como não agregável).

Por exemplo, uma função de banco de dados especifica Male como o membro padrão para o atributo Gender. A menos que uma consulta inclua explicitamente o atributo Gender e especifique um membro diferente para esse atributo, o Analysis Services retornará um conjunto de dados que incluirá apenas clientes masculinos. Para obter mais informações sobre como definir o membro padrão, consulte Definindo um membro padrão.

Definindo permissões de acesso de um membro em uma dimensão

Antes de definir permissões de acesso de um membro em uma dimensão, pode ser necessário revisar alguns exemplos de como definições de acesso diferentes afetam o conjunto de resultados que é retornado ao consultar membros. Os seguintes tópicos fornecem essas definições de exemplo:

Depois de entender como as várias permissões de acesso funcionam, você está pronto para conceder essas permissões. Para conceder permissões de acesso a um membro em uma dimensão, um usuário deve ser um membro da função de servidor do Analysis Services ou um membro de uma função de banco de dados do Analysis Services que tem permissão Controle total (Administrador).

Quando usar o Business Intelligence Development Studio para conceder permissões de acesso a um membro em uma dimensão, você tem que usar as opções padrão na guia Básico da guia Acesso aos Dados da Dimensão ou usar as opções mais personalizadas na guia Avançadas.

Observação importanteImportante

Se um usuário ou grupo do Microsoft Windows pertencer a várias funções de banco de dados, as permissões efetivas para o usuário ou grupo serão adicionadas a todas as funções de banco de dados (uma união de permissões). Se uma função de banco de dados negar ao usuário acesso a um membro de atributo, mas uma função de banco de dados diferente conceder ao usuário acesso a esse membro de atributo, o usuário terá acesso ao membro de atributo.

Para usar a guia Básico para conceder a uma função de banco de dados acesso a um membro em uma dimensão

  1. No SQL Server Management Studio, conecte-se à instância do Analysis Services, expanda Funções para o banco de dados adequado no Pesquisador de Objetos e clique em uma função de banco de dados (ou crie uma nova função de banco de dados).

  2. Clique em Acesso a Dados Personalizados da Dimensão, no painel Selecionar uma Página, selecione a dimensão na lista Dimensão e selecione Permitir Atributo na guia Avançado.

    A seleção dessa opção define a propriedade IsAllowed como True.

  3. Na lista Atributo, selecione o atributo para o qual você quer especificar os membros que deverão ser exibidos pela função de banco de dados.

  4. Para negar especificamente acesso a certos membros de atributo, digite a linguagem MDX para esses membros de atributo na caixa Conjunto de Membros Negados. Todos os outros membros de atributo serão visíveis.

    • Para conceder especificamente acesso a certos membros de atributo, digite a linguagem MDX para esses membros de atributo na caixa Conjunto de Membros Permitidos. Nenhum outro membro de atributo será visível.

Para usar a guia Avançado para conceder a uma função de banco de dados acesso a um membro em uma dimensão

  1. No SQL Server Management Studio, conecte-se à instância do Analysis Services, expanda Funções para o banco de dados adequado no Pesquisador de Objetos e clique em uma função de banco de dados (ou crie uma nova função de banco de dados).

  2. Clique em Acesso a Dados Personalizados da Dimensão, no painel Selecionar uma Página, selecione a dimensão na lista Dimensão e selecione Permitir Atributo na guia Avançado.

    A seleção dessa opção define a propriedade IsAllowed como True.

  3. Na lista Atributo, selecione o atributo para o qual você quer especificar os membros que deverão ser exibidos pela função de banco de dados.

  4. Para negar especificamente acesso a certos membros de atributo, digite a linguagem MDX para esses membros de atributo na caixa Conjunto de Membros Negados. Todos os outros membros de atributo serão visíveis.

    Para conceder especificamente acesso a certos membros de atributo, digite a linguagem MDX para esses membros de atributo na caixa Conjunto de Membros Permitidos. Nenhum outro membro de atributo será visível.