Compartilhar via


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

Após habilitar o acesso de leitura a um cubo, você pode definir permissões adicionais que permitem ou negam explicitamente o acesso a membros de dimensão (incluindo as medidas contidas na dimensão de medidas que contém todas as medidas usadas em um cubo). Por exemplo, considerando várias categorias de revendedores, você pode querer definir as permissões para excluir dados de um tipo de negócio específico. A ilustração a seguir mostra o antes e o depois da negação de acesso ao tipo de negócio Depósito na dimensão do 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 níveis variáveis de acesso para usuários diferentes, na mesma dimensão.

Você pode restringir o acesso ao escolher a quais membros permitirá (AllowedSet) ou negará (DeniedSet) acesso. Você pode fazer isso marcando ou desmarcando os membros de dimensão a serem incluídos ou excluídos da função.

A segurança básica de dimensão é a mais fácil, uma vez que basta selecionar quais atributos de dimensão e hierarquias de atributo devem ser incluídas ou excluídas da função. A segurança avançada é mais complexa e exige conhecimentos em scripts MDX. Veja abaixo a descrição das duas abordagens.

Pré-requisitos

Nem todos os membros de medidas ou dimensão podem ser usados ​​em cenários de acesso personalizados. A conexão irá falhar se uma função restringir o acesso a uma medida ou membro padrão ou restringir o acesso a medidas que fazem parte de expressões de medida.

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

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

  2. Pesquise por DefaultMeasure. Encontre um para o cubo e um para cada perspectiva. Ao definir a segurança de dimensão, evite restringir o acesso a medidas padrão.

  3. Em seguida, procure a MeasureExpression. A expressão de medida é baseada em um cálculo que inclui frequentemente outras medidas. Verifique se a medida que deseja restringir não foi usada em uma expressão. Como alternativa, restrinja o acesso, apenas certifique-se de também excluir qualquer referência a essa medida no cubo.

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

Segurança básica de dimensão

  1. Em SQL Server Management Studio, conecte-se à instância do Analysis Services, expanda Funções para o banco de dados apropriado em 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 para o cubo. Consulte Conceder permissões de cubo ou modelo (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 atributo. Nem todos os atributos estarão disponíveis. Apenas os atributos que têm AttributeHierarchyEnabled aparecem na lista Hierarquia de Atributo .

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

    Como alternativa, você pode Cancelar seleção de todos os membros para revogar o acesso geral e, em seguida, escolher os membros que receberão a permissão. Nas futuras operações de processamento, os novos membros não serão visíveis até que você edite manualmente a segurança dos dados de dimensão para permitir o acesso a eles.

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

    Observação

    Ao aplicar permissões que cortam membros de dimensão, os totais agregados não são recalculados automaticamente. Suponha que o All membro de uma hierarquia de atributo 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 cubo, você pode configurar o All membro como a agregação apenas dos membros aos quais os membros da função, em vez da agregação 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 da dimensão. Uma vez habilitada, a agregação é calculada na hora da consulta, em vez de recuperada de agregações pré-calculadas. Isso pode ter um efeito significativo no desempenho da consulta, portanto, use-a somente quando necessário.

Ocultar medidas

Em Conceder acesso personalizado a 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 do 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 das medidas que não devem aparecer para usuários que se conectam por meio dessa função.

Observação

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

Segurança de dimensão avançada

Se você tiver conhecimentos em MDX, outra abordagem possível é escrever expressões MDX que definem os critérios para quais membros será permitido ou negado o acesso. Clique em CriarDados | deDimensãode Função | Avançados para fornecer o script.

Você pode usar o Construtor MDX para escrever a instrução MDX. Consulte MDX Builder (Analysis Services – Dados Multidimensionais) para obter detalhes. 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 determinar nenhum membro (padrão), todos 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 atributo, apenas os membros explicitamente permitidos ficarão visíveis.

Criar um AllowedSet gera um efeito dominó quando o atributo participa de uma hierarquia de vários níveis. Por exemplo, suponha que uma função permita o acesso ao estado de Washington (imagine um cenário em que a função está concedendo permissões para a divisão de vendas do estado de Washington de uma empresa). Para as pessoas que se conectam por meio dessa função, as consultas que incluem ancestrais (Estados Unidos) ou descendentes (Seattle e Redmond) só verão os membros em uma cadeia incluindo o estado de Washington. Como os outros estados não são explicitamente permitidos, o efeito será o mesmo que se eles fossem 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 de membros negado
A propriedade DeniedSet pode determinar nenhum membro, todos os membros (padrão) ou alguns membros de atributo. 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, bem como a 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 em DeniedSet, as pessoas que se conectam por meio desse papel verão todos os outros estados, exceto Washington e seus atributos descendentes.

Lembre-se da seção anterior que o conjunto negado é uma coleção fixa. Se o processamento introduzir posteriormente novos membros, aos quais também deve ser negado o acesso, será preciso 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 for 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 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 Gender atributo e especifique um membro diferente para esse atributo, o Analysis Services retornaria 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.

Habilitar Totais Visuais
A propriedade VisualTotals indica se os valores da célula agregada exibidos são calculados de acordo com todos os valores de célula ou só de acordo com os valores da células visíveis à 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.

Porém, ter a propriedade VisualTotals 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 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 de célula agregada, um membro dessa função de banco de dados poderia deduzir o valor para o terceiro membro de atributo.

Definir a propriedade VisualTotals como True pode eliminar esse risco. Ao habilitar a propriedade VisualTotals, uma função de banco de dados pode exibir apenas totais agregados de membros de dimensão para os 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 de cubo ou modelo (Analysis Services)
Conceder acesso personalizado a dados de 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)