Partilhar via


Conceda acesso personalizado aos dados de células (Analysis Services)

A segurança da célula é usada para permitir ou negar o acesso a dados de medida dentro de um cubo. A ilustração a seguir mostra uma combinação de medidas permitidas e negadas em uma Tabela Dinâmica, quando conectado como um usuário cujas permissões de acesso só permitem o acesso a determinadas medidas. Neste exemplo, o Valor de Vendas do Revendedor e o Custo Total do Produto do Revendedor são as únicas medidas disponíveis por meio dessa função. Todas as outras medidas são negadas implicitamente (as etapas usadas para obter esse resultado são fornecidas abaixo na próxima seção, Permitir acesso a medidas específicas).

Tabela dinâmica mostrando células permitidas e negadas

As permissões de célula se aplicam aos dados dentro da célula e não aos metadados. Observe como a célula ainda está visível nos resultados de uma consulta, exibindo um valor em #N/A vez do valor real da célula. O valor #N/A aparece na célula, a menos que o aplicativo cliente traduza o valor ou outro valor seja especificado configurando a propriedade Valor de Célula Protegida na cadeia de conexão.

Para ocultar totalmente a célula, você precisa limitar as dimensões de membros, os atributos de dimensão e os membros do atributo de dimensão que podem ser exibidos. Para obter mais informações, consulte Conceder acesso personalizado aos dados de dimensão (Analysis Services).

Como administrador, você pode especificar se os membros da função têm permissões de leitura, leitura contingente ou leitura/gravação em células dentro de um cubo. Colocar permissões em uma célula é o nível mais baixo de segurança permitido, portanto, antes de começar a aplicar permissões nesse nível, é importante ter alguns fatos em mente:

  • A segurança em nível de célula não pode expandir direitos restritos em um nível mais alto. Um exemplo: se uma função nega o acesso aos dados de dimensão, a segurança no nível da célula não pode substituir o conjunto negado. Outro exemplo: considere uma função com Read permissão em um cubo e permissão de leitura/gravação em uma célula ─ a permissão de dados da célula não será Leitura/Gravação; será Read.

  • As permissões personalizadas geralmente precisam ser coordenadas entre membros da dimensão e células dentro da mesma função. Por exemplo, suponha que você queira negar acesso a várias medidas relacionadas a descontos para combinações diferentes de revendedores. Considerando Revendedores como dados de dimensão e Valor de Desconto como medida, você precisaria combinar as permissões de função tanto na medida (usando as instruções neste tópico) quanto nos membros da dimensão. Confira Conceder acesso personalizado aos dados de dimensão (Analysis Services) para obter detalhes sobre como definir permissões de dimensão.

A segurança em nível de célula é especificada por meio de expressões MDX. Como uma célula é uma tupla (ou seja, um ponto de interseção entre potencialmente várias dimensões e medidas), é necessário usar o MDX para identificar células específicas.

Permitir acesso a medidas específicas

Você pode usar a segurança da célula para escolher explicitamente quais medidas estão disponíveis. Depois de identificar especificamente quais membros são permitidos, todas as outras medidas ficam indisponíveis. Esse talvez seja o cenário mais simples a ser implementado por meio do script MDX, como ilustram as etapas a seguir.

  1. No SQL Server Management Studio, conecte-se à instância do Analysis Services, selecione um banco de dados, abra a pasta Funções e clique em uma função de banco de dados (ou crie uma nova função de banco de dados). A associação já deve ser especificada e a função deve ter Read acesso ao cubo. Consulte Conceder permissões para cubos ou modelos (Analysis Services) se precisar de ajuda com esta etapa.

  2. Em Dados de Célula, verifique a seleção de cubo para ter certeza de que você escolheu a certa e, em seguida, selecione Habilitar permissões de leitura.

    Se você selecionar apenas essa caixa de seleção e não fornecer uma expressão MDX, o efeito será o mesmo que negar acesso a todas as células no cubo. Isso ocorre porque o conjunto permitido padrão é um conjunto vazio sempre que o Analysis Services resolve um subconjunto de células de cubo.

  3. Insira a expressão MDX a seguir.

    (Measures.CurrentMember IS [Measures].[Reseller Sales Amount]) OR (Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])  
    

    Essa expressão identifica explicitamente quais medidas são visíveis aos usuários. Nenhuma outra medida estará disponível para os usuários que se conectarem por meio dessa função. Observe que CurrentMember (MDX) define o contexto e é seguido pela medida permitida. O efeito dessa expressão é que, se o membro atual incluir o Valor de Vendas do Revendedor ou o Custo Total do Produto do Revendedor, mostrará o valor. Caso contrário, negue o acesso. A expressão tem várias partes, com cada parte entre parênteses. O OR operador é usado para especificar várias medidas.

Negar acesso a medidas específicas

A expressão MDX a seguir, também especificada em Create Role | Cell Data | Allow reading of cube content, tem o efeito oposto, tornando certas medidas indisponíveis. Neste exemplo, Valor do Desconto e Percentual de Desconto são tornados indisponíveis usando os operadores NOT e AND. Todas as outras medidas ficarão visíveis para os usuários que se conectam por meio dessa função.

(NOT Measures.CurrentMember IS [Measures].[Discount Amount]) AND (NOT Measures.CurrentMember IS [Measures].[Discount Percentage])  

No Excel, a segurança de células é evidente na ilustração a seguir:

Colunas do Excel mostrando células como não disponíveis

Definir permissões de leitura em medidas calculadas

As permissões em uma medida calculada podem ser definidas independentemente de suas partes constituintes. Vá para a próxima seção no Read-Contingent se quiser coordenar permissões entre uma medida calculada e suas medidas dependentes.

Para entender como as permissões de leitura funcionam para uma medida calculada, considere o Lucro Bruto do Revendedor no AdventureWorks. Ela é derivada das medidas de Quantidade de Vendas do Revendedor e Custo Total do Produto do Revendedor. Enquanto uma função tiver permissão de leitura em células de Lucro Bruto do Revendedor, essa medida poderá ser visualizada mesmo se as permissões forem expressamente negadas nas outras medidas. Como demonstração, copie a seguinte expressão MDX em Criar Função | Dados de Célula | Permitir a leitura do conteúdo do cubo.

(NOT Measures.CurrentMember IS [Measures].[Reseller Sales Amount])  
AND (NOT Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])  

No Excel, conecte-se ao cubo usando a função atual e escolha todas as três medidas para ver os efeitos da segurança da célula. Observe que as medidas no conjunto negado não estão disponíveis, mas a medida calculada é visível para o usuário.

Tabela do Excel com células disponíveis e indisponíveis

Configurar permissões Read-Contingent para medidas calculadas

A segurança da célula oferece uma alternativa, Read-Contingent, para definir permissões nas células relacionadas que participam de um cálculo. Considere novamente o exemplo de Lucro Bruto do Revendedor . Quando você insere a mesma expressão MDX fornecida na seção anterior, desta vez na segunda área de texto da caixa de diálogo Criar Função | Dados da Célula (na área de texto abaixo de Permitir a leitura do conteúdo da célula com base na segurança da célula), o resultado se torna aparente quando exibido no Excel. Como o Lucro Bruto do Revendedor depende do Valor de Vendas do Revendedor e do Custo Total do Produto Revendedor, o lucro bruto agora está inacessível porque suas partes constituintes estão inacessíveis.

Observação

O que acontece se você definir as permissões de leitura e Read-Contingent em uma célula dentro da mesma função? A função fornecerá permissões de leitura na célula e não o Contingente de Leitura.

Lembre-se das seções anteriores de que selecionar apenas a caixa de seleção Habilitar permissões contingentes de leitura, sem fornecer nenhuma expressão MDX, nega acesso a todas as células no cubo. Isso ocorre porque o conjunto permitido padrão é um conjunto vazio sempre que o Analysis Services resolve um subconjunto de células de cubo.

Definir permissões de leitura/gravação em uma célula

As permissões de leitura/gravação em uma célula são usadas para habilitar a retrogravação, desde que os membros tenham permissões de leitura/gravação para o cubo em si. As permissões concedidas no nível da célula não podem ser maiores do que as permissões concedidas no nível do cubo. Consulte Configuração de escrita em partição para obter detalhes.

Consulte Também

MDX Builder (Analysis Services – Multidimensional Data)
O Script Básico de MDX (MDX)
Conceder permissões de processamento (Analysis Services)
Conceder permissões em uma dimensão (Analysis Services)
Conceder acesso personalizado aos dados de dimensão (Analysis Services)
Conceder permissões para cubo ou modelo (Analysis Services)