none
Dynamic Security SSAS RRS feed

  • Pergunta

  • Olá Pessoal,

    Tudo bem?

    Estou criando uma role no Cubo (SSAS), porém estou tentando fazer a ideia de uma role dinâmica, ou seja, dar acesso as informações baseados no Login NT do usuário.

    Desta forma criei 1 tabela (Dimensão): Security Users e outras duas tabelas pontes (Fatos): Bridge Security Users Funcionario Supervisor e Bridge Security Users Servidor.

    Security Users: Composto de um ID_SEQ_USER (Identity) e LOGINNT (cadastrado por um outro processo relacionado ao AD);

    Bridge Security Users Funcionario Supervisor: Composto de um ID_SEQ_USER (FK da tabela Security Users) e ID_SEQ_FUNCIONARIO_SUPERVISOR (cadastrado por um outro processo);

    Bridge Security Users Servidor: Composto de um ID_SEQ_USER (FK da tabela Security Users) e ID_SEQ_SERVIDOR (cadastrado por um outro processo).

    Ou seja, existem usuários quem tem acessos de supervisor que só podem ver informações abaixo deles, e outros que tem acesso de servidor, ou seja, podem ver acesso total.

    Sendo assim criei um role na dimensão FUNCIONARIO SUPERVISOR especificamente em um campo chamado RE, com o seguinte MDX na opção ("Allowed member set:"):

    NonEmpty([FUNCIONARIO SUPERVISOR].[Código RE].[Código RE].Members,(StrToMember ("[Security Users].[Login NT].[" + UserName() + "]"),[Measures].[Bridge Security Users Funcionario Supervisor Count]))

    E deixei checkada a opção: Enable Visual Totals

    Funciona perfeito!!!! Entretanto quando eu crio a segunda role, com o seguinte MDX na opção ("Allowed member set:"):

    NonEmpty([SERVIDOR].[Nome Servidor].[Nome Servidor].Members,(StrToMember ("[Security Users Servidor].[Login NT].[" + UserName() + "]"),[Measures].[Bridge Security Users Servidor Count]))

    E deixando checkada a opção: Enable Visual Totals

    Todo mundo fica com acesso total, que não deveria, parece que uma role sobrepõe a outra!!!! E se eu excluo a 1ª role e deixo a 2ª de servidor funciona perfeito para servidor!!!!

    Entretanto preciso criar essas duas regras, mas estou com dificuldades, alguém poderia me ajudar????

    Muito Obrigado, desde já!!!!


    Jefferson Bonamim - Estudante | Email: supersbonamim@hotmail.com | Caso esta sugestão for útil, por favor, classifique-a como 'Útil'. Se caso ela lhe ajudar a resolver o problema, por favor, clique em 'Marcar como Resposta'.

    sexta-feira, 22 de novembro de 2013 02:32

Respostas

  • Fala Jefferson,

    Você esta fazendo correto, mas o SSAS está trabalhando corretamente também.

    Se o seu membership está como Everyone nas duas Roles, faz todo sentido que o usuário passe pelas duas roles quando logado.

    Eles veem tudo porque o que vale é o Allowed das duas, portanto sobrepõem as dimensões já que em algum caso está aberta.

    O que fazer? Se o usuário ou passa por uma Role ou passa por outra, você pode deixar as Roles como estão, porém precisará definir o Membership correto. Ao invés de Everyone, vai precisar colocar o alias do cara na Role que ele deve ver.

    Você pode fazer isso programaticamente se preferir, do contrário, pode fazer um Select na tabela de Users com a coluna Login, copiar o Resultado e colar no Membership.... Assim você passa a primeira etapa e pensa na inserção dinâmica depois....

    Abraços,

    Alex Berenguer


    Alex Berenguer

    sexta-feira, 22 de novembro de 2013 13:17