Partilhar via


Conceder acesso personalizado aos dados de dimensão (Analysis Services)

Depois de habilitar o acesso de leitura a um cubo, você pode definir permissões adicionais que explicitamente permitem ou negam o acesso aos membros da dimensão (incluindo as medidas contidas na Dimensão de Medidas que abrangem todas as medidas usadas em um cubo). Por exemplo, considerando várias categorias de revendedores, talvez você queira definir permissões para excluir dados para um tipo de negócios específico. A ilustração a seguir mostra o efeito antes e depois de negar o acesso ao tipo de negócio de Armazém na dimensão Revendedor.

Tabelas Dinâmicas com e sem um membro de dimensão

Por padrão, se você puder ler dados de um cubo do Analysis Services, terá automaticamente permissões de leitura em todas as medidas e membros da dimensão associados a esse cubo. Embora esse comportamento possa ser suficiente para muitos cenários, às vezes os requisitos de segurança exigem uma estratégia de autorização mais segmentada, com diferentes níveis de acesso para usuários diferentes, na mesma dimensão.

Você pode restringir o acesso permitindo (AllowedSet) ou negando (DeniedSet) o acesso a determinados membros. Você faz isso selecionando ou desmarcando membros da dimensão para incluir ou excluir da função.

A segurança de dimensão básica é a mais fácil; basta selecionar quais atributos de dimensão e hierarquias de atributo incluir ou excluir na função. A segurança avançada é mais complexa e requer experiência em scripts MDX. Ambas as abordagens são descritas abaixo.

Pré-requisitos

Nem todas as medidas ou membros da dimensão podem ser utilizados em cenários de acesso personalizado. Uma conexão falhará se uma função restringir o acesso a uma medida ou membro padrão ou restringir o acesso a medidas que fazem parte das expressões de medida.

Verifique se há obstruções à segurança de dimensão: medidas padrão, membros padrão e medidas usadas em expressões de medida

  1. No SQL Server Management Studio, clique com o botão direito do mouse em um cubo e selecione Cubo de Script como | ALTER to | New Query Editor Window.

  2. Pesquise por DefaultMeasure. Você deve encontrar um para o cubo e um para cada perspectiva. Ao definir a segurança da dimensão, evite restringir o acesso a medidas padrão.

  3. Em seguida, pesquise por MeasureExpression. Uma expressão de medida é uma medida, com base em um cálculo, em que o cálculo geralmente inclui outras medidas. Verifique se a medida que você deseja restringir não é usada em uma expressão. Como alternativa, proceda e restrinja o acesso, certificando-se de também excluir todas as referências a essa medida em todo o cubo.

  4. Por fim, pesquise por DefaultMember. Anote todos os atributos que servem como um membro padrão de um atributo. Evite colocar restrições nesses atributos ao configurar a segurança de dimensão.

Segurança de dimensão básica

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

    A função já deve ter acesso de leitura ao cubo. Consulte Conceder permissões para cubos ou modelos (Analysis Services) se precisar de ajuda com esta etapa.

  2. No Dimension Data | Basic, selecione a dimensão para a qual você está definindo permissões.

  3. Escolha a hierarquia de atributos. Nem todos os atributos estarão disponíveis. Somente os atributos que têm AttributeHierarchyEnabled aparecem na lista Hierarquia de Atributos .

  4. Escolha quais membros permitir ou negar acesso. Permitir o acesso, por meio da opção Selecionar todos os membros , é o padrão. Sugerimos que você mantenha esse padrão e desmarque membros individuais que não devem estar visíveis para o usuário do Windows e contas de grupo no painel Associações por meio dessa função. A vantagem é que novos membros adicionados em futuras operações de processamento estão automaticamente disponíveis para pessoas que se conectam por meio dessa função.

    Como alternativa, você pode desmarcar todos os membros para revogar o acesso em geral e, em seguida, escolher quais membros permitir. Em operações futuras de processamento, novos membros não ficam visíveis até que você edite manualmente a segurança de dados de dimensão para permitir o acesso a eles.

  5. Opcionalmente, clique em Avançado para habilitar Visual Totals essa hierarquia de atributos. Essa opção recalcula agregações com base nos membros disponíveis por meio da função.

    Observação

    Ao aplicar permissões que cortam membros da dimensão, os totais agregados não são recalculados automaticamente. Suponha que o All membro de uma hierarquia de atributos retorne uma contagem de 200 antes que as permissões sejam aplicadas. Depois de aplicar permissões que negam acesso a alguns membros, All ainda retorna 200, embora os valores de membro visíveis para o usuário sejam muito menores. Para evitar confundir os consumidores do seu cubo, você pode configurar o membro All como a agregação apenas dos membros associados aos membros da função, em vez de todos os membros da hierarquia de atributos. Para invocar esse comportamento, você pode habilitar Visual Totals na guia Avançado ao configurar a segurança de dimensão. Uma vez habilitada, a agregação é calculada em tempo de consulta em vez de recuperada de agregações pré-calculadas. Isso pode ter um efeito perceptível no desempenho da consulta, portanto, use-o somente quando necessário.

Ocultando medidas

No artigo Conceder acesso personalizado aos dados de célula (Analysis Services), foi explicado que ocultar totalmente todos os aspectos visuais de uma medida, e não apenas seus dados de célula, requer permissões em membros de dimensão. Esta seção explica como negar o acesso aos metadados de objeto de uma medida.

  1. No Dimension Data | Basic, role para baixo na lista Dimensão até chegar às dimensões do cubo e selecione Dimensão de Medidas.

  2. Na lista de medidas, desmarque a caixa de seleção para medidas que não devem aparecer aos usuários que se conectam por meio dessa função.

Observação

Verifique os pré-requisitos para saber como identificar medidas que podem interromper a segurança da função.

Segurança de dimensão avançada

Se você tiver experiência em MDX, outra abordagem é escrever expressões MDX que definem os critérios para os quais os membros têm permissão ou acesso negado. Clique em Criar Função | Dados de Dimensão | Avançado para fornecer o script.

Você pode usar o Construtor MDX para escrever a instrução MDX. Consulte o MDX Builder (Analysis Services – Dados Multidimensionais) para obter detalhes. A guia Avançado tem as seguintes opções:

Atributo
Selecione o atributo para o qual você deseja gerenciar a segurança do membro.

Conjunto de membros permitido
O conjunto permitido pode ser resolvido para nenhum membro (padrão), todos os membros ou alguns membros. Se você permitir o acesso a um atributo e não definir nenhum membro do conjunto permitido, o acesso a todos os membros será concedido. Se você permitir o acesso a um atributo e definir um conjunto específico de membros de atributo, somente os membros explicitamente permitidos ficarão visíveis.

A criação de um AllowedSet tem um efeito cascata quando o atributo participa de uma hierarquia de vários níveis. Por exemplo, suponha que uma função permita acesso ao estado de Washington (suponha um cenário em que a função está concedendo permissões à divisão de vendas do estado de Washington de uma empresa). Para as pessoas que se conectam através dessa função, consultas que incluem ancestrais (Estados Unidos) ou descendentes (Seattle e Redmond) só verão membros em uma cadeia, incluindo o estado de Washington. Como outros estados não são explicitamente permitidos, o efeito será o mesmo que se eles foram negados.

Observação

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

Conjunto negado de associados
A propriedade DeniedSet pode ser resolvida para nenhum membro, todos os membros (configuração padrão) ou alguns conjuntos de atributos. Quando o conjunto negado contém apenas um conjunto específico de membros de atributo, a função de banco de dados é negada acesso somente a esses membros específicos, bem como descendentes se o atributo estiver em uma hierarquia de vários níveis. Considere o exemplo da divisão de vendas do estado de Washington. Caso Washington seja colocado no DeniedSet, as pessoas que se conectarem através desse papel verão todos os outros estados, exceto Washington e seus atributos descendentes.

Conforme mencionado na seção anterior, o conjunto recusado é uma coleção fixa. Se o processamento introduzir posteriormente novos membros que também devem ter acesso negado, você precisará editar essa função para adicionar esses membros à lista.

Membro padrão
A propriedade DefaultMember determina o conjunto de dados retornado a um cliente quando um atributo não é explicitamente incluído em uma consulta. Quando o atributo não está explicitamente incluído, 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 definido para o próprio atributo. O membro padrão de um atributo, a menos que você especifique o contrário, é o All membro (a menos que o atributo seja definido como não aggregável).

Por exemplo, suponha que uma função de banco de dados especifique Male como o membro padrão do Gender atributo. A menos que uma consulta inclua explicitamente o Gender atributo e especifique um membro diferente para esse atributo, o Analysis Services retornará um conjunto de dados que incluía apenas clientes do sexo masculino. Para obter mais informações sobre como definir o membro padrão, consulte Definir um membro padrão.

Ativar Visual Total
A propriedade VisualTotals indica se os valores de célula agregados exibidos são calculados de acordo com todos os valores de célula ou apenas de acordo com os valores de célula visíveis para a função de banco de dados.

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

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

Definir a propriedade VisualTotals para True pode eliminar esse risco. Quando você habilita a propriedade VisualTotals, uma função de banco de dados só pode exibir totais agregados para membros de dimensão aos quais a função tem permissão.

Verificação
Clique para testar a sintaxe MDX definida nesta página.

Consulte Também

Conceder permissões para cubo ou modelo (Analysis Services)
Conceder acesso personalizado aos dados da célula (Analysis Services)
Conceder permissões em estruturas e modelos de mineração de dados (Analysis Services)
Conceder permissões em um objeto de fonte de dados (Analysis Services)