Redução Lógica de Dados

De Qknow
Ir para: navegação, pesquisa

This post is available in English. Click on flag at side.

EnglishFlag.jpg


Introdução

A redução lógica de dados refere-se a capacidade do QlikView de apresentar um conjunto de dados de acordo com o usuário autenticado. O termo redução de dados significa que somente parte das informações estarão disponíveis, por isso, reduzidos ao usuário. O processo de redução é iniciado pela autenticação do usuário, que pode ser definida em nível de script incluindo manualmente cada conta ou obtendo os dados a partir de um serviço de diretórios (LDAP ou Active Directory).

Quando um usuário acessar o painel que contém redução de dados, uma janela de autenticação solicitará as credencias (usuário e senha) para permitir abrir o arquivo .QVW. seja pelo Access Point ou pelo próprio QlikView Desktop. As credenciais de uma redução são solicitadas no momento do acesso ao painel. As configurações constantes neste artigo levam em consideração usuários definidos em nível de script do QlikView. Para simular os procedimentos descritos, pode-se utilizar o fragmento de dados a seguir.

LOAD * INLINE [
Pais, Cidade, Empresa,
Argentina, Buenos Aires, Los Espandrilos Fantasticos
Austria, Graz, Ski Store
Belgium, Bruxelles, De la Vita
Brazil, Campinas, Paintho da Gama
Brazil, Rio de Janeiro, Da Bikini Expertu
Brazil, São Paulo, Roba di Piel
Brazil, São Paulo, Tendha do Flamengo
Canada, Tsawassen, Big Foot Shoes
France, Nantes, Le Sais de Rión
France, Paris, Chateau de Ville
Germany, Stuttgart, Autokleider
Ireland, Cork, Boleros
Mexico, México D.F., Don Balón
Mexico, México D.F., Los Sombreros Gigantes
Portugal, Lisboa, El Traige do Benfica
Portugal, Lisboa, La Roba do Santho
Spain, Barcelona, El Chandal del Barca
Spain, Madrid, Las Corbatas
Spain, Sevilla, Los Trajes de Matador
Sweden, Stockholm, Stephanies ];

Script Oculto

A parte do script que determina a redução de dados é inserida em uma guia de script oculto acessado pelo proprietário e administrador do painel através do editor de scripts (CTRL + E). Para inserir a guia que hospedará o fragmento de instruções referentes a redução, no menu Arquivo basta escolher o comando Criar Script Oculto. Por se tratar de comandos que não se quer compartilhar a codificação, o script oculto é um recurso ideal para incluir as informações da seção de acesso. No momento em que o script oculto é criado uma senha para posterior acesso a guia oculta deve ser definida.

 Nota: Certifique-se de entrar com uma senha que possa ser posteriormente lembrada, pois o acesso ao script oculto depende desta senha.

Múltiplas guias ocultas ocultas podem ser criadas para hospedar os scripts de um painel em QlikView. Para inserir uma nova guia oculta quando uma primeira já existe, basta manter ativa a guia oculta como atual e no menu Aba selecionar Incluir Aba. Desta maneira, múltiplas guias ocultas podem ser organizadas para diferentes propósitos. Estas guias atuam no editor de scripts de uma maneira especial, pois não apresentam nenhuma informação de execução na janela de recarga.

Hiden Script 1.PNG

Se um projeto possui mais de uma guia oculta, então as guias desnecessárias podem ser excluídas a partir do menu Aba. Porém, quando restar apenas uma guia oculta, então esta deve ser excluída pelo menu Arquivo através da opção Excluir Script Oculto. Para fins de execução dos scripts de redução de dados, recomenda-se o uso de uma guia de scripts ocultos. Qualquer código presente nestas guias são executados primeiro em relação as demais. Adicionalmente, guias ocultas não podem ser rebaixadas para execução após guias normais, embora possam ser priorizadas entre várias guias ocultas, se existirem.

Section Access (Seção de Acesso)

Existem diferentes configurações de um arquivo QlikView quanto ao acesso e a redução de dados. Esta seção descreve o uso de tabelas em um script oculto para armazenar informações de credenciais. Para isso, certifique-se de ter criado pelo menos uma guia de script oculto.

  1. . Abra um projeto para o qual deseja criar restrições de acesso.
  2. . Acesse o editor de scripts (CTRL + E).
  3. . No menu Arquivo, escolha Criar Script Oculto, caso não haja uma guia previamente existente.
  4. . Caso seja a primeira guia oculta inserida, entre com a senha de acesso ao script oculto.
  Nota:  Caso a senha do script oculto seja perdida, não será possível editar as configurações de segurança no futuro.

Com a guia do script oculto ativa, no menu Inserir escolha Seção de Acesso e, em seguida, Inline. Esta ação irá apresentar a janela de escolha do método de autenticação, seja integrado ao sistema operacional ou a partir de uma tabela estabelecida por meio de uma instrução LOAD INLINE com usuários e senhas digitados manualmente.

Hiden Script 2.PNG

Nesta seção será utilizada a carga INLINE a partir da entrada manual de usuários e senhas dentro do script oculto. Para isso, no Assistente de Tabelas de Restrição de Acesso basta clicar no botão Tabela de Acesso Básico do Usuário. Ao realizar esta operação automaticamente os campos USERID e PASSWORD são selecionados, tal como na imagem a seguir. Isto significa que uma tabela será inserida manualmente dentro do script oculto, contendo a relação dos usuários que podem ter acesso ao painel, respectivas senhas e níveis de acesso (administrador do painel ou usuário comum). A próxima seção mostrará como utilizar o sistema de segurança por meio de usuários do sistema operacional.

Hiden Script 3.PNG

  Nota: Neste exemplo não importa qual usuário está autenticado no sistema operacional.

A entrada manual de usuários e senhas de acesso permite configurar um número virtualmente ilimitado de usuários, apenas preenchendo as informações da tabela. O primeiro campo, denominado ACCESS deve conter o texto ADMIN para usuários com privilégios administrativos ao painel, ou USER para usuários comuns. Já os campos USERID e PASSWORD são as credenciais de acesso com o nome do usuário e senha, respectivamente. A imagem a seguir apresenta um fragmento de uma tabela preenchida para o painel atual. Assim que o botão Ok da janela é acionado, um fragmento de código é inserido na posição em que estiver o cursor dentro do script oculto. Duas seções são apresentadas, uma contendo a relação de usuários, denominada SECTION ACCESS, enquanto a segunda, inserida como SECTION APPLICATION, que demonstra onde as instruções de carga de dados da aplicação são iniciadas. Nesta condição não há redução de dados, apenas um processo de autenticação que garante que somente os usuários presentes na seção de acesso possam abrir e utilizar o painel. O que torna a redução possível é a ligação entre a seção de acesso e a seção de aplicação por meio de um campo comum.

Hiden Script 4.PNG

Section Access;
LOAD * INLINE [
    ACCESS, USERID, PASSWORD
    ADMIN, Franco, senha
    USER, Geilson, senha1
    USER, Nilton, senha2
    USER, Bruno, senha3
];
Section Application;

Utilizando o fragmento de código acima que foi inserido pelo assistente, acrescente uma nova coluna na seção de acesso que ligue os dados de autenticação/autorização aos de aplicação. É importante notar que este requisito só é necessário por não existir no modelo de dados um campo que contenha alguma ligação nativa com a seção de acesso. Por exemplo, se houver nos dados carregados um campo USERID, uma ligação automática ocorreria entre as duas seções, dispensando o ajuste que segue abaixo.

O campo LIGACAO a ser inserido deve conter uma lista de valores que serão ligados ao modelo de dados. Neste caso, foram utilizados valores numéricos que representam tal ligação. No entanto, qualquer valor é válido desde que as seções de acesso e aplicação possam ser interligadas. Este requisito se faz necessário para fins de redução de dados de acordo com o usuário autenticado.

A partir da instrução Section Application no script oculto são iniciadas as operações que dizem respeito a carga dos dados. Logo, nesta seção será possível acrescentar uma instrução LOAD que contenha o campo LIGACAO e um outro campo existente no modelo de dados. No exemplo a seguir o campo LIGACAO é carregado em uma nova tabela de aplicação via instrução LOAD INLINE acrescido do campo Pais que pertence ao modelo carregado em memória. Assim, as duas seções serão conectadas pelo campo LIGACAO.

Section Access;
LOAD * INLINE [
    ACCESS, USERID, PASSWORD, LIGACAO
    ADMIN, Franco, senha, *
    USER, Geilson, senha1, 1
    USER, Nilton, senha2, 2
    USER, Bruno, senha3, 3
];

Section Application;

LOAD * INLINE [
	 LIGACAO, Pais
	 1, Spain
	 1, Mexico
	 2, France
	 3, Brazil
	 3, Austria ];

Para concluir as operações de script basta recarregar o painel a partir deste ponto. Da forma como foi configurado, assim que o painel for aberto uma janela solicitará a autenticação do usuário que deverá fornecer a credencial seguido da senha. Quando a autenticação ocorrer de maneira bem sucedida, a seção de acesso conterá o nome do usuário fornecido e poderá mapear a atual linha da tabela de seção para o campo ligação. Este valor, por sua vez, é interligado ao modelo pelo campo LIGACAO que resulta na seleção automática dos dados daquele usuário. Por exemplo, se a autenticação é realizada pelo usuário Nilton, o valor de LIGACAO será igual a 2. Com o modelo associativo em funcionamento, apenas o Pais France será apresentado ao usuário, ligado a todos os outros dados que existem no modelo.

  Nota:  A operação de redução depende de configurações adicionais apresentadas na próxima seção.

Configuração do Painel para Redução

Ajustes adicionais são necessários caso o processo desejado para segurança seja a redução de dados de acordo com a autenticação do usuário. Para isso, no menu Configuração deve-se escolher Propriedades do Documento. Na guia Abrindo a opção Redução Inicial de Dados Baseada na Seção de Acesso deve ser assinalada, seguido da opção Exclusão Total.

DOCUMENT Properties 1.png


DOCUMENT Properties 2.png



A redução inicial indica que após a autenticação do usuário os dados serão filtrados especificamente para o login informado. Já o parâmetro Exclusão Total remove qualquer cadeia de valores ligados ao modelo que possa pertencer a outro usuário. Porém, nestas condições ainda há uma potencial falha de segurança na medida em que os dados podem ser lidos a partir de outro painel utilizando-se da instrução BINARY. Para evitar que os dados possam ser lidos (carregados) a partir de outro painel (.QVW) criado, a opção Carga Binária Proibida deve ser assinalada.

A carga binária indica que os dados de um determinado painel são lidos integralmente a partir de um novo QVW que contenha a instrução. O exemplo a seguir apresenta a sintaxe elementar do comando BINARY. Possivelmente esta não é uma abertura que se deseja deixar para um painel que contenha requisitos de segurança via redução de dados.

 Binary c:\qv\cliente.qvw;

Um uso prático do comando BINARY pode ser encontrado no artigo referente a configuração de listas para o modo AND. Confira aqui!

Testando a Redução de Dados

Após ter criado o script oculto, incluído as seções de acesso e aplicação com um campo ligando as duas partes, é possível testar o funcionamento da redução recarregando o painel e salvando o arquivo .QVW. Para que as configurações tenham efeito, é preciso fechar o aplicativo QlikView Desktop, uma vez que a seção do usuário é por padrão mantida após o programa ter sido iniciado.

Para visualizar adequadamente a redução do painel criado neste exemplo, é importante adicionar algumas listas a interface da guia principal para que se possa confirmar o efeito da redução. A imagem a seguir apresenta um exemplo das listas dispostas na tela para realização dos testes.

SECTION ACCESS 1.PNG

User Login 1.PNG

Ao reiniciar o QlikView e abrir o arquivo .QVW uma janela de autenticação solicitará um usuário e uma senha, tal como na imagem ao lado. Se ambas as informações (usuário e senha) forem fornecidas adequadamente, o processo de redução irá autenticar o usuário e apresentar somente os dados ligados entre a seção se acesso e de aplicação. Por exemplo, utilizando o login Nilton com a senha senha2 os registros apresentados serão somente aqueles em que há vínculo com o país France, resultando na imagem abaixo.

SECTION ACCESS 2.PNG

  Nota:  Para testar a seção de acesso com outro usuário, lembre-se de fechar o QlikView Desktop.

Section Access (Usuário do Sistema Operacional)

Embora criar uma tabela na seção de acesso possa ser uma solução para muitos casos, em algumas corporações será necessário possibilitar restringir o acesso aos dados para o usuário do sistema operacional previamente autenticado. A instrução LOAD pode carregar a lista de usuários de um domínio (o que não será tratado nesta seção) ou usuários de tabelas de bancos de dados. Adicionalmente, a lista de logins pode ser previamente definida via instrução LOAD INLINE. Assumindo que este artigo foi totalmente lido, as instruções a seguir serão inseridas no script oculto do arquivo criado neste exemplo. Para maiores informações sobre o script oculto, consulte o item Section Access (Seção de Acesso) anteriormente neste artigo.

Com o script oculto aberto é necessário comentar (ou excluir) eventuais códigos de script que tenham sido utilizados para outros modelos de redução descritos acima. Após eliminar eventuais instruções anteriores, a partir do menu Inserir basta selecionar Seção de Acesso e em seguida a opção IN LINE para criação da nova lista de usuários. A janela apresentada será a mesma utilizada nas seções anteriores, porém com o acionamento do botão Segurança Básica do NT. Quando acionado, as caixas de seleção são automaticamente alteradas para NTNAME e NTDOMAINSID. Note que nenhuma informação sobre senha será necessária.


Hiden Script 5.PNG


Novamente a caixa de inclusão da lista de usuários é aberta para que os logins e níveis de acesso (ADMIN ou USER) possam ser atribuídos. Note, porém, que não há informação sobre senha. Neste momento, a lista de usuários deve ser preenchida na interface sem preocupação com o campo NTDOMAINSID. O resultado será um fragmento de código semelhante ao abaixo apresentado.

Section Access;
LOAD * INLINE [
    ACCESS, NTNAME, NTDOMAINSID
    ADMIN, Franco.Galati, 
    USER, Nilton.Barcelos, 
];
  Nota:  As instruções acima podem ser inseridas manualmente, se desejado.

Para que o QlikView possa confiar que o painel será utilizado no domínio em que foi definido, o campo NTDOMAINSID deve ser preenchido com o identificador único do domínio. Este identificador é inserido pelo comando de menu Inserir seguido de SID de Domínio. Antes de usar o comando, certifique-se de que o cursor está na posição adequada. Ou seja, o cursor deve estar após a vírgula do primeiro usuário definido na seção de acesso. Como resultado, o SID do domínio é inserido e pode ser copiado para as linhas seguintes, uma vez para cada usuário, resultando em um script semelhante ao descrito abaixo.

Section Access;
LOAD * INLINE [
    ACCESS, NTNAME, NTDOMAINSID
    ADMIN, Franco.Galati, S-1-5-21-3468352827-1570571401-3998840258
    USER, Nilton.Barcelos, S-1-5-21-3468352827-1570571401-3998840258
];
  Nota:  O SID será um número diferente para cada domínio. Não é necessário
         um controlador de domínio para realização deste teste, que pode ser montado com um equipamento local.

Seguindo a mesma estrutura da seção anterior, é possível ligar os dados da seção de acesso àqueles vinculados ao modelo carregado em memória. Para isso, uma nova coluna é inserida contendo o mesmo nome entre a Section Access e a Section Application. A coluna LIGACAO cria o vínculo dos registros a partir do conteúdo de LIGACAO. Ao ser autenticado pelo sistema operacional o registro do usuário é passado ao QlikView no momento da abertura do painel. Ao ser checado na seção de acesso o login do usuário no Windows é interligado pelo campo LIGACAO contendo os valores de registros que podem ser lidos pelo usuário.

Section Access;
LOAD * INLINE [
    ACCESS, NTNAME, NTDOMAINSID, LIGACAO
    ADMIN, Franco.Galati, S-1-5-21-3468352827-1570571401-3998840258, 1
    USER, Nilton.Barcelos, S-1-5-21-3468352827-1570571401-3998840258, 2
];

Section Application;
LOAD * INLINE [
 	 LIGACAO, Pais
 	 1, Spain
 	 1, Mexico
 	 2, France
 	 2, Brazil
 	 1, Austria ];

É possível notar que o valor 1 do campo LIGACAO na seção de acesso corresponde ao login Franco.Galati, enquanto o valor 2 responde pelo usuário Nilton.Barcelos. Assim, ao ser autenticado, o campo é preenchido com os números 1 ou 2 e repassados a seção de aplicação que, por sua vez, informa quais são os registros de países que poderão ser lidos por cada usuário. Assumindo que o equipamento esteja autenticado no Windows pelo login Franco.Galati, o resultado da abertura do painel será a exibição de todas as colunas e linhas correspondentes apenas ao valor 1. Ou seja, Spain e Mexico.

SECTION ACCESS 3.PNG

Durante a abertura do painel nenhum usuário ou senha será solicitado. Caso o usuário autenticado não faça parte da tabela de autorizações do painel, uma mensagem de acesso negado será informada e o arquivo imediatamente fechado.


Download


Assuntos Relacionados


Outros Assuntos


Envelope01.jpg
Procurando Algo? Fale Conosco!

Voltar | Página Principal