Partilhar via


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

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

PivotTables com e sem um membro de dimensão

Por padrão, se você puder ler dados de um cubo Analysis Services, terá, automaticamente, permissões de leitura em todos os membros de medida e dimensão associados àquele 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 ao escolher quais membros permitir (AllowedSet) ou negar (DeniedSet) acesso. Você pode fazer isso marcando ou desmarcando os membros da dimensão para incluir ou excluí-los 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 atributos para incluir ou excluir da função. A segurança avançada é mais complexa e exige conhecimentos em scripts MDX. Ambas as abordagens são descritas abaixo.

Pré-requisitos

Nem todos os membros de medidas ou dimensão podem ser usados ​​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 da dimensão: medidas padrão, membros padrão e medidas usadas nas expressões de medida

  1. No SQL Server Management Studio, clique com o botão direito do mouse no cubo e selecione Script de Cubo como | ALTER Para | Nova Janela do Editor de Consultas.

  2. Procure 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 muitas vezes inclui outras medidas. Verifique se a medida que você quer restringir não é usada em uma expressão. Você também pode seguir adiante e restringir o acesso. Apenas certifique-se de excluir também qualquer referência a essa medida em todo o cubo.

  4. Finalmente, 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 da 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 de cubo ou modelo (Analysis Services) se precisar de ajuda com essa etapa.

  2. Em Dados de Dimensão | Básico, selecione a dimensão para a qual está definindo permissões.

  3. Escolha a hierarquia de atributo. Nem todos os atributos estarão disponíveis. Somente os atributos com AttributeHierarchyEnabled aparecem na lista Hierarquia de Atributo.

  4. Escolha a quais membros permitir ou negar acesso. Permitir o acesso por meio da opção Selecionar Todos os Membros é o padrão. Sugerimos que mantenha esse padrão e apague cada membro que não deve estar visível para as contas de usuário e grupo do Windows no painel Associações por meio desta função. A vantagem disso é que os novos membros adicionados nas operações de processamento futuras ficam automaticamente disponíveis para as pessoas que se conectarem com essa função.

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

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

    ObservaçãoObservação

    Quando você aplica permissões que cortam membros da dimensão, os totais agregados não são recalculados automaticamente. Suponha que o membro Todos de uma hierarquia de atributo retorna uma contagem de 200 antes da aplicação das permissões. Depois de aplicar as permissões que negam o acesso a alguns membros, Todos 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 para que o membro Todos seja agregado apenas dos membros que são membros da função, em vez de o agregado de todos os membros da hierarquia de atributo. Para invocar esse comportamento, você pode habilitar Visual Totals na guia Avançado quando configurar a segurança da dimensão. Ao habilitar a agregação, ela é calculada no momento da consulta, em vez de recuperada de agregações pré-calculadas. Isso pode ter um efeito significativo sobre o desempenho da consulta, por isso use somente quando necessário.

Ocultando medidas

Em Concedendo acesso personalizado aos dados da célula (Analysis Services), explicamos que ocultar completamente todos os aspectos visuais de uma medida e não apenas os seus dados de célula exige permissões de membros da dimensão. Esta seção explica como negar acesso aos metadados do objeto de uma medida.

  1. Em Dados de Dimensão | Básico, role a lista Dimensão para baixo até encontrar as dimensões do cubo e escolha Dimensão de Medidas.

  2. Na lista de medidas, desmarque a caixa de seleção das medidas que não devem aparecer para os usuários que se conectarem por esta função.

ObservaçãoObservação

Verifique os pré-requisitos para aprender a identificar as medidas que podem violar a segurança da função.

Segurança de dimensão avançada

Se você tiver conhecimentos de MDX, uma outra abordagem é escrever expressões MDX que estabeleçam os critérios para quais membros o acesso é permitido ou 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. Para obter detalhes, consulte Caixa de diálogo Construtor MDX (Analysis Services - Dados Multidimensionais). A guia Avançado contém as seguintes opções:

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

  • Conjunto de membros permitido
    O AllowedSet pode resolver para não membros (padrão), todos os membros ou alguns membros. 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, somente os membros explicitamente permitidos ficarão visíveis.

    A criação de um AllowedSet tem um efeito de ondulação quando o atributo participa de uma hierarquia de vários níveis. Por exemplo, suponha que uma função permite acesso ao estado de Washington (presuma um cenário em que a função é a concessão de permissões para a divisão de vendas da empresa no estado de Washington). Para as pessoas que se conectam com essa função, as consultas que incluem antepassados ​​(Estados Unidos) ou descendentes (Seattle e Redmond) veem apenas os membros de uma cadeia, incluindo o estado de Washington. Como outros estados não são explicitamente permitidos, o efeito é o mesmo que se fossem negados.

    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.

  • Conjunto de membros negado
    A propriedade DeniedSet pode resolver para nenhum membro, todos os membros (padrão) ou alguns membros de atributo. Quando o conjunto negado contém somente um conjunto específico de membros de atributo, a função do banco de dados tem acesso negado somente para esses membros específicos, assim como os 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. Se Washington for colocado no DeniedSet, as pessoas que se conectarem com essa função veem todos os outros estados, exceto Washington e os atributos de seus descendentes.

    Lembre-se da seção anterior, em que o conjunto negado é uma coleção fixa. Se em processamentos posteriores você introduzir novos membros, que também devem ter acesso negado, edite essa função para adicionar os membros à lista.

  • Membro padrão
    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, suponha que 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 Definir um membro padrão.

  • Habilitar Totais Visuais
    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.

    Configurar a propriedade VisualTotals para True pode eliminar esse risco. 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.

  • Verificar
    Clique para testar a sintaxe MDX definida nesta página.

Consulte também

Tarefas

Conceder permissões para as estruturas e os modelos de mineração de dados (Analysis Services)

Conceder permissões para um objeto de fonte de dados (Analysis Services)

Conceitos

Conceder permissões de cubo ou modelo (Analysis Services)

Concedendo acesso personalizado aos dados da célula (Analysis Services)