Gerenciando a segurança com seção de acesso

Você pode utilizar a seção de acesso no script de carga de dados para administrar a segurança. Nesse caso, um único arquivo pode ser utilizado para manter os dados de vários usuários ou grupos de usuários. O Qlik Sense usa as informações contidas na seção de acesso para autenticação e autorização e reduz dinamicamente os dados para que o usuário visualize apenas seus próprios dados.

Nota: Não há suporte para grupos de usuários no Kubernetes.

A segurança é criada no próprio arquivo, o que significa que um arquivo baixado também estará protegido até certo ponto. No entanto, se as demandas de seguranças forem altas, o download de arquivos e uso off-line deverão ser evitados, e os arquivos deverão ser publicados somente pelo servidor do Qlik Sense. Como todos os dados serão mantidos em um único arquivo, o tamanho desse arquivo pode ser muito grande.

Aviso:

Para evitar a exposição de dados restritos, remova todos os arquivos anexos com as configurações de section access antes de publicar o aplicativo.

Os arquivos anexos são incluídos quando o aplicativo é publicado. Se o aplicativo publicado for copiado, os arquivos anexos serão incluídos na cópia. No entanto, se restrições de acesso à seção tiverem sido aplicadas aos arquivos de dados anexos, as configurações de acesso à seção não serão mantidas quando os arquivos forem copiados, portanto os usuários do aplicativo copiado poderão ver todos os dados nos arquivos anexos.

Aviso: Um snapshot mostra os dados de acordo com os direitos de acesso do usuário que obtém o snapshot, e pode ser compartilhado em uma história. No entanto, quando os usuários retornam para uma visualização de uma história para ver os dados em tempo real no aplicativo, eles são limitados por seus próprios direitos de acesso.
Aviso:

Você não deve atribuir cores a valores de dimensão mestre se usar o section access ou trabalhar com dados sensíveis, porque os valores podem ficar expostos.

Seções no script

O controle de acesso é gerenciado por meio de uma ou várias tabelas de segurança carregadas da mesma forma que o Qlik Sense normalmente carrega os dados. Isso possibilita o armazenamento dessas tabelas em um banco de dados normal. Os comandos de script que gerenciam as tabelas de segurança são fornecidos na seção de acesso, que é iniciada no script pelo comando Section Access.

Se uma seção de acesso estiver definida no script, a parte do script que carrega os dados do aplicativo deverá ser colocada em uma seção diferente, iniciada pelo comando Section Application.

Example:  

Section Access;
LOAD * inline
[ACCESS,USERID
USER,U ];
Section Application;
LOAD... ... from... ...

Campos do sistema de section access

Os níveis de acesso são atribuídos aos usuários em uma ou várias tabelas, carregadas no section access. Essas tabelas podem conter vários campos do sistema específicos do usuário diferentes, geralmente USERID, e o campo que define o nível de acesso, ACCESS. Todos os campos do sistema de section access serão usados para autenticação ou autorização. O conjunto completo de campos do sistema de seção de acesso está descrito abaixo.

ACCESS

Define o tipo de acesso que o usuário correspondente deve ter.

O acesso a aplicativos Qlik Sense pode ser autorizado para usuários ou grupos de usuários especificados. Na tabela de segurança, é possível atribuir os níveis de acesso ADMIN ou USER aos usuários. Se nenhum nível de acesso válido for atribuído, o usuário não poderá abrir o aplicativo.

Uma pessoa com privilégios de ADMIN tem acesso a todos os dados no aplicativo. Uma pessoa com privilégios de USER só pode acessar os dados definidos na tabela de segurança.

USERID

Contém um caractere correspondente a um nome de usuário Qlik Sense. O Qlik Sense obterá informações de logon do proxy e as comparará com o valor neste campo.

GROUP

Contém um caractere correspondente a um grupo no Qlik Sense. O Qlik Sense resolverá o usuário fornecido pelo proxy contra esse grupo.

Nota: Quando você usa grupos para reduzir dados e deseja o Qlik Management Console, o usuário da conta do INTERNAL\SA_SCHEDULER ainda é necessário.

OMIT

Contém o nome do campo que deve ser omitido para esse usuário específico. Os caracteres curinga podem ser usados e o campo pode ficar vazio. Uma forma fácil de fazer isso é usar um subcampo.

Nota: Recomendamos que você não aplique OMIT em campos chave. Campos de chave que são omitidos ficam visíveis no visualizador do modelo de dados, mas o conteúdo não fica disponível, o que pode ser confuso para um usuário. Além disso, a aplicação de OMIT em campos que são usados em uma visualização pode resultar em uma visualização incompleta para usuários que não têm acesso aos campos omitidos.

O Qlik Sense comparará o usuário fornecido pelo proxy com o UserID e resolverá o usuário com base em grupos na tabela. Se o usuário pertencer a um grupo com acesso permitido, ou se o usuário corresponder, ele receberá acesso ao aplicativo.

Nota:

Se você tiver se bloqueado de um aplicativo ao configurar o acesso da seção, é possível abrir o aplicativo sem dados e editar a seção de acesso no script de carga de dados. Isso requer que você tenha acesso para editar e executar o script de carga de dados.

Para obter mais informações, consulte Abrindo um aplicativo sem dados.

Como a mesma lógica interna, que é a marca do Qlik Sense, também é usada na seção de acesso, os campos de segurança podem ser colocados em tabelas diferentes. Todos os campos listados nos comandos LOAD ou SELECT no acesso de seção devem ser escritos em MAIÚSCULAS. Converta em maiúsculas todos os nomes de campo no banco de dados que contêm letras minúsculas, usando a função Upper antes de ler o campo pelo comando LOAD ou SELECT.

Para obter mais informações, consulte Upper – função de script e gráfico.

Um curinga, *, é interpretado como todos os valores (listados) desse campo, ou seja, um valor listado em qualquer lugar nesta tabela. Se for utilizado em um dos campos do sistema (USERID, GROUP) em uma tabela carregada na seção de acesso do script, ele será interpretado como todos os valores possíveis desse campo (inclusive os não listados).

Nota: Ao carregar dados de um arquivo QVD, o uso da função upper diminuirá a velocidade de carregamento.
Nota: Se você tiver habilitado a seção de acesso, não poderá usar os nomes de campo do sistema da seção de acesso listados neste como nomes de campo em seu modelo de dados.

Example:

Neste exemplo, apenas usuários do grupo financeiro podem abrir o documento.

Acesso ao documento
Acessar Grupo
USER Financeiro

Redução dinâmica de dados

O Qlik Sense oferece suporte para a redução dinâmica de dados, na qual parte dos dados em um aplicativo pode ser oculta do usuário, com base no login de section access:

  • Campos (colunas) podem ser ocultos com o uso do campo do sistema OMIT.
  • Os registros (linhas) podem ser ocultos, vinculando os dados de section access com os dados reais: A seleção de valores a serem exibidos ou excluídos é controlada pela existência de um ou mais campos com nomes comuns no section access e no aplicativo de seção. Depois do login do usuário, o Qlik Sense tentará corresponder as seleções nos campos de seção de acesso com quaisquer campos de seção de aplicativo, exatamente com os mesmos nomes de campo (os nomes de campos devem ser escritos em MAIÚSCULAS). Feitas as seleções, o Qlik Sense ocultará permanentemente do usuário todos os dados que foram excluídos por essas seleções.
Nota: Todos os nomes de campos usados na transferência descrita anteriormente e todos os valores desses campos devem estar em letras maiúsculas, pois todos os nomes e valores de campo são, por padrão, convertidos em maiúsculas na seção de acesso.
Nota: Se você quiser habilitar o recarregamento do script em uma tarefa Qlik Management Console, o usuário da conta do INTERNAL\SA_SCHEDULER com acesso ADMIN será necessário.

Example: Redução de dados com base no ID do usuário

section access;
LOAD * inline [
ACCESS, USERID,REDUCTION, OMIT
USER, AD_DOMAIN\ADMIN,*,
USER, AD_DOMAIN\A,1,
USER, AD_DOMAIN\B, 2,NUM
USER, AD_DOMAIN\C, 3, ALPHA
ADMIN, INTERNAL\SA_SCHEDULER,*,
];
section application;
T1:
LOAD *,
NUM AS REDUCTION;
LOAD
Chr( RecNo()+ord('A')-1) AS ALPHA,
RecNo() AS NUM
AUTOGENERATE 3;

Agora, o campo REDUCTION (em maiúsculas) existe no section access e no aplicativo de seção (todos os valores de campo também estão em maiúsculas). Normalmente, os dois campos seriam totalmente diferentes e separados, mas, ao usar o section access, esses campos serão vinculados, e o número de registros exibidos para o usuário será reduzido.

O campo OMIT no section access define os campos que devem ser ocultos do usuário.

O resultado será:

  • O usuário ADMIN pode visualizar todos os campos e apenas os registros que outros usuários podem visualizar neste exemplo quando REDUCTION for 1, 2 ou 3.
  • O usuário A pode visualizar todos os campos, mas apenas os registros associados a REDUCTION=1.
  • O usuário B pode visualizar todos os campos, exceto NUM, e apenas os registros associados a REDUCTION=2.
  • O usuário C pode visualizar todos os campos, exceto ALPHA, e apenas os registros associados a REDUCTION=3.

Example: Redução de dados com base em grupos de usuários

section access;

LOAD * inline [

ACCESS, USERID, GROUP, REDUCTION, OMIT

USER, *, ADMIN, *,

USER, *, A, 1,

USER, *, B, 2, NUM

USER, *, C, 3, ALPHA

USER, *, GROUP1, 3,

ADMIN, INTERNAL\SA_SCHEDULER, *, *,

];

section application;

T1:

LOAD *,

NUM AS REDUCTION;

LOAD

Chr( RecNo()+ord('A')-1) AS ALPHA,

RecNo() AS NUM

AUTOGENERATE 3;

O resultado será:

  • Os usuários pertencentes ao grupo ADMIN podem ver todos os dados e todos os campos.
  • Os usuários pertencentes ao grupo A podem ver os dados associados a REDUCTION=1 em todos os campos.
  • Os usuários pertencentes ao grupo B podem ver os dados associados a REDUCTION=2, mas não no campo NUM
  • Os usuários pertencentes ao grupo C podem ver os dados associados a REDUCTION=3, mas não no campo ALPHA
  • Os usuários pertencentes ao grupo GROUP1 podem ver os dados associados a REDUCTION=3 em todos os campos
  • O usuário INTERNAL\SA_SCHEDULER não pertence a nenhum grupo, mas está autorizado a ver todos os dados em todos os campos.

    Nota:

    O caractere curinga * nessa linha refere-se apenas a todos os valores na tabela de section access. Se houver valores no aplicativo de seção que não estão disponíveis no campo REDUCTION no section access, eles serão reduzidos.

Restrições de acesso herdadas

Nota: Esta funcionalidade não está disponível no Kubernetes.

Uma carga binária fará com que as restrições de acesso sejam herdadas pelo novo aplicativo Qlik Sense.