Gestion de la sécurité des données grâce à Accès de section
Accès de section est utilisé pour contrôler la sécurité d'une application. Il fait fondamentalement partie du script de chargement de données auquel vous ajoutez une table de sécurité pour définir qui à accès à quoi. Qlik Sense utilise ces informations pour réduire les données à l'étendue appropriée lorsque l'utilisateur ouvre l'application, à savoir, certaines des données de l'application sont masquées à l'utilisateur en fonction de son identité. Accès de section est étroitement intégré aux données de l'application et s'appuie dessus pour contrôler l'accès. Cette forme de réduction dynamique des données peut cibler des lignes et/ou des colonnes de table. Pour plus d'informations, consultez Fiabilité et sécurité chez Qlik.
Sections du script de chargement
Le contrôle d'accès aux données est géré au moyen d'une ou de plusieurs tables de sécurité chargées de la même façon que les données le sont normalement. Cela permet de stocker ces tables dans une base de données standard ou dans une feuille de calcul. Les instructions de script qui gèrent les tables de sécurité sont spécifiées dans une section d'autorisation lancée par l'instruction Section Access dans le script.
Si une section d'autorisation est définie dans le script, la partie du script qui charge les données de l'application doit être placée dans une autre section, lancée par l'instruction Section Application.
Notez qu'après avoir apporté des modifications au script de chargement, vous devez toujours actualiser les données pour que les modifications soient effectives.
Champs système Accès de section
Les niveaux d'accès sont attribués aux utilisateurs dans une ou plusieurs tables de sécurité chargées dans la partie Accès de section du script. Ces tables doivent contenir, au minimum, deux champs système : ACCESS, qui est le champ qui définit le niveau d'accès, et USERID ou USER.EMAIL. D'autres champs système facultatifs peuvent être ajoutés suivant le cas d'utilisation. Tous les champs système Accès de section sont décrits ci-dessous.
ACCESS
Définit le type d'accès de l'utilisateur correspondant.
L'accès aux applications Qlik Sense peut être restreint à certains utilisateurs. Dans la table de sécurité, les utilisateurs peuvent se voir attribuer les niveaux d'accès ADMIN ou USER. Un utilisateur disposant des privilèges ADMIN a accès à l'intégralité des données contenues dans l'application, sauf s'il est limité par la table de sécurité. Un utilisateur bénéficiant des privilèges USER peut uniquement accéder aux données telles que définies dans la table de sécurité. Si aucun niveau d'accès valide ne lui est attribué, l'utilisateur ne peut pas ouvrir l'application.
Si Accès de section est utilisé dans un scénario de chargement, INTERNAL\SA_SCHEDULER, qui est l'utilisateur du service du planificateur, doit disposer d'un accès ADMIN pour pouvoir effectuer des chargements. Par exemple :
Si vous ne souhaitez pas utiliser le compte INTERNAL\SA_SCHEDULER, voir Utilisation de l'emprunt d'identité pour charger des données pour une autre méthode.
Si Accès de section est utilisé dans un scénario de génération d'application On-demand (ODAG) dans l'application modèle, l'utilisateur INTERNAL\SA_API doit être inclus comme ADMIN dans la table Accès de section. Par exemple :
USERID
Contient une chaîne correspondant à un nom de domaine et à un nom d'utilisateur Qlik Sense. Qlik Sense récupère ensuite les informations de connexion auprès du service de proxy et les compare à la valeur de ce champ.
Un caractère générique (*) est interprété comme tous les utilisateurs, soumis à d'autres conditions spécifiées dans la table de sécurité. Par exemple, dans la table de sécurité suivante, les utilisateurs qui figurent parmi les Administrateurs de clients Qlik Sense peuvent voir l'ensemble des valeurs REDUCTION répertoriées.
NTNAME
Champ devant contenir une chaîne correspondant à un nom de groupe ou à un nom d'utilisateur de domaine Windows NT. Si un autre système d'authentification est utilisé, il doit contenir le nom d'un utilisateur authentifié. Qlik Sense récupère ensuite les informations de connexion auprès du système d'exploitation et les compare à la valeur de ce champ.
GROUP
Contient une chaîne correspondant à un groupe dans Qlik Sense. Qlik Sense résout l'utilisateur fourni par le service de proxy en le comparant à ce groupe.
SERIAL
Contient une chaîne correspondant à la plateforme. Si le champ contient la chaîne ‘QLIKSENSE’ ou un caractère générique ‘*’, l'accès peut être accordé, suivant les autres champs de la table de sécurité.
OMIT
Contient le nom du champ devant être omis pour cet utilisateur précis. Il est possible d'utiliser des caractères génériques et de laisser le champ vide.
Gestion de l'accès des utilisateurs à une application
Accès de section, sous sa forme la plus simple, peut être utilisé pour empêcher certains utilisateurs d'accéder à une application. L'accès à une application est refusé aux utilisateurs via une exclusion. En d'autres termes, si un ID utilisateur spécifique ne figure pas dans la table de sécurité, il ne pourra pas accéder à l'application. La seule exception à cette règle se produit si un caractère générique (*) est assigné au champ USERID sur l'une des lignes de la table de sécurité. Dans ce cas, un caractère générique signifie que tous les utilisateurs authentifiés peuvent accéder à l'application. Voici un exemple d'une table de sécurité avec une liste d'ID utilisateur :
Gestion de l'accès des utilisateurs à des données spécifiques d'une application
La réduction dynamique des données limite l'accès aux lignes et colonnes des tables de données des applications Qlik Sense après qu'un utilisateur a été autorisé à accéder à l'application elle-même.
Gestion de l'accès aux données au niveau des lignes
Limitez l'accès aux données au niveau des lignes en ajoutant une colonne de réduction des données à la table de sécurité dans la section Accès de section du script de chargement. il est possible de masquer des enregistrements (lignes) spécifiques à des utilisateurs en liant les données Accès de section aux données réelles. La sélection des données à afficher/exclure est contrôlée grâce à un ou plusieurs champs de réduction ayant des noms communs dans les parties Accès de section et Section Application du script. Une fois l'utilisateur connecté, Qlik Sense met en correspondance les sélections effectuées dans les champs de réduction de la section d'accès avec tous les champs de la section d'application portant exactement les mêmes noms (les noms des champs doivent être spécifiés en majuscules). Une fois les sélections effectuées, Qlik Sense masque de façon permanente de la vue de l'utilisateur l'ensemble des données exclues par ces sélections. Si un caractère générique (*) est utilisé comme valeur de champ dans la colonne de réduction des données, il est interprété comme autorisant l'utilisateur à accéder aux enregistrements associés à tous les champs de réduction sélectionnés de la table de sécurité.
Lorsque Qlik Sense compare le champ de réduction d'Accès de section aux champs du modèle de données, les comportements suivants sont à prévoir :
Si une valeur de champ du modèle de données correspond au champ de réduction d'Accès de section, l'application s'ouvrira en affichant les données correspondant à l'utilisateur spécifié. Les autres données seront masquées.
Si la valeur du champ de réduction ne correspond à aucune des valeurs du modèle de données, l'application ne s'ouvrira pas pour un UTILISATEUR normal. En revanche, elle s'ouvrira sans réduction pour un utilisateur marqué comme ADMIN.
Il n'est pas recommandé d'utiliser plusieurs champs de réduction dans Accès de section, car cela permet d'autres combinaisons d'accès que celles prévues.
Le caractère générique * de la colonne de réduction des données fait référence uniquement à l'ensemble des valeurs de la table de sécurité. Si des valeurs situées dans Section Application ne sont pas disponibles dans la colonne de réduction de la table de sécurité, elles seront réduites.
Réduction des données au niveau des lignes basée sur l'identité de l'utilisateur
Dans cet exemple, le champ REDUCTION (en majuscules) existe désormais dans Accès de section et dans Section Application (toutes les valeurs des champs sont également en majuscules). En temps normal, les deux champs seraient différents et distincts mais, grâce à Accès de section, ils sont liés et réduisent le nombre d'enregistrements visibles par l'utilisateur.
Le résultat est le suivant :
- L'utilisateur ADMIN peut voir tous les champs et uniquement les enregistrements visibles par les autres utilisateurs quand REDUCTION = 1 ou REDUCTION =2.
- L'utilisateur A peut voir tous les champs, mais uniquement les enregistrements associés à REDUCTION=1.
- L'utilisateur B peut voir tous les champs, mais uniquement les enregistrements associés à REDUCTION=2.
- L'utilisateur C peut voir tous les champs et uniquement les enregistrements visibles par les autres utilisateurs quand REDUCTION = 1 ou REDUCTION =2.
Gestion de l'accès aux données au niveau des colonnes
Limitez l'accès aux données au niveau des colonnes en ajoutant un champ système OMIT à la table de sécurité dans le script Accès de section. L'exemple suivant se base sur l'exemple précédent dans lequel la réduction des données au niveau des lignes est déjà en place.
Réduction des données au niveau des colonnes basée sur l'identité de l'utilisateur
Le champ OMIT figurant dans Accès de section définit les champs devant être masqués à l'utilisateur.
Le résultat est le suivant :
- Dans cet exemple, lorsque REDUCTION=1, 2 ou 3, l'utilisateur ADMIN peut voir tous les champs et uniquement les enregistrements visibles par les autres utilisateurs.
- L'utilisateur A peut voir tous les champs, mais uniquement les enregistrements associés à REDUCTION=1.
- L'utilisateur B peut voir tous les champs à l'exception de NUM, et uniquement les enregistrements associés à REDUCTION=2.
- L'utilisateur C peut voir tous les champs à l'exception de ALPHA, et uniquement les enregistrements associés à REDUCTION=3.
Gestion de l'accès aux groupes d'utilisateurs
Accès de section vous permet de limiter l'étendue des données visibles par les utilisateurs via l'appartenance à un groupe. Pour restreindre vos données à l'aide de groupes d'utilisateurs, ajoutez le nom de champ GROUP à la table de sécurité d'Accès de section et définissez les valeurs du champ GROUP.
Réduction des données basée sur les groupes d'utilisateurs
Le résultat est le suivant :
- Dans cet exemple, lorsque REDUCTION est 1, 2 ou 3, les utilisateurs appartenant au groupe ADMIN sont autorisés à voir tous les champs et uniquement les enregistrements visibles par les autres utilisateurs.
- Les utilisateurs appartenant au groupe A sont autorisés à consulter les données associées à REDUCTION=1 dans tous les champs.
- Les utilisateurs faisant partie du groupe B sont autorisés à consulter les données associées à REDUCTION=2 dans tous les champs, à l'exception de NUM.
- Les utilisateurs faisant partie du groupe C sont autorisés à consulter les données associées à REDUCTION=3 dans tous les champs à l'exception d'ALPHA.
- Les utilisateurs faisant partie du groupe GROUP1 sont autorisés à consulter les données associées à REDUCTION=3 dans tous les champs.
Qlik Sense compare l'utilisateur à UserID et le résout par rapport aux groupes de la table. Si l'utilisateur fait partie d'un groupe dont l'accès est autorisé ou s'il correspond, il peut accéder à l'application.
Utilisation de l'emprunt d'identité pour charger des données
Par défaut, le compte système interne, SA_SCHEDULER, est utilisé pour exécuter les tâches de chargement. Ce compte dispose de privilèges élevés et, techniquement, peut utiliser n'importe quelle source de données. Cependant, dans QMC, il existe un paramètre qui utilise l'emprunt d'identité pour exécuter des tâches de chargement avec les autorisations du propriétaire de l'application au lieu de celles du compte système interne. Si vous configurez ce paramètre, le propriétaire de l'application et non SA_SCHEDULER est utilisé pour les chargements. Cela signifie que vous n'avez pas à ajouter SA_SCHEDULER à la table Accès de section. À la place, vous y ajoutez le propriétaire de l'application. Dans une chaîne de tâches, les applications peuvent avoir des propriétaires différents avec des autorisations auprès de ressources dépendant des droits d'accès de chaque propriétaire. Voir Service cluster (uniquement en anglais) pour plus d'informations.
Gestion de l'accès utilisateur dans un environnement multi-cloud
Un environnement multi-cloud Qlik Sense implique une combinaison de mécanismes d'authentification des utilisateurs. Généralement, avec Qlik Sense Enterprise on Windows, la valeur USERID de la table de sécurité Accès de section est vérifiée par le service de proxy. Dans Qlik Cloud, un fournisseur d'identité assume ce rôle d'authentification. C'est pourquoi Accès de section, qui est configuré pour un environnement sur site tel que Qlik Sense Enterprise on Windows, ne fonctionnera pas dans un environnement cloud.
Lors de l'utilisation d'un fournisseur d'identité OIDC (IdP Qlik ou IdP personnalisé) avec Qlik Cloud, subject claim est utilisé pour identifier les utilisateurs lorsqu'ils se connectent. Avec Accès de section, la valeur du champ USERID de la table de sécurité est comparée à la valeur de subject claim. Lorsque vous configurez votre client, assurez-vous que le nom de compte SAM est mappé vers la valeur subject claim de votre fournisseur d'identité. Par exemple, si le nom de compte SAM est AD_DOMAIN\Dev, définissez subject claim sur AD_DOMAIN\Dev. Si vous souhaitez voir la valeur de subject claim de l'IdP, ajoutez /api/v1/diagnose-claims à l'URL du client dans le navigateur, par exemple, your-tenant.us.qlikcloud.com/api/v1/diagnose-claims. Dans la réponse JSON, le champ subject claim est appelé sub.
Si vous ne pouvez pas utiliser le nom de compte SAM, il existe une autre méthode pour authentifier un utilisateur. Étant donné que les adresses e-mail ont tendance à rester les mêmes dans des environnements différents, vous pouvez utiliser le champ USER.EMAIL au lieu de USERID dans la table de sécurité. Voici un exemple de ce à quoi peut ressembler la table de sécurité :
ACCESS | USERID | USER.EMAIL | Commentaire | COUNTRY |
---|---|---|---|---|
USER | ABC\Joe | * | Access-on-prem | États-Unis |
USER | * | joe.smith@example.com | Access-in-cloud | États-Unis |
USER | ABC\Ursula | * | Access-on-prem | Allemagne |
USER | * | ursula.schultz@example.com | Access-in-cloud | Allemagne |
USER | ABC\Stefan | * | Access-on-prem | Suède |
USER | * | stefan.svensson@example.com | Access-in-cloud | Suède |
Script d'autorisation :
Notez que chaque utilisateur a deux enregistrements : Un pour l'accès sur site et un pour l'accès dans le cloud. Les caractères génériques garantissent que seuls les champs d'authentification pertinents sont utilisés. Dans cet exemple, COUNTRY est utilisé comme champ de réduction des données.
Utilisation d'Accès de section et de Insight Advisor Chat
Pour que les applications qui utilisent Accès de section soient disponibles dans Insight Advisor Chat, vous devez vous assurer que les utilisateurs de services suivants disposent d'un accès admin dans le script Accès de section :
INTERNAL/sa_repository : cela met le script Accès de section à disposition avec le service de référentiel pour contrôler l'accès utilisateur.
INTERNAL/sa_scheduler : cela permet le chargement de l'application via des tâches QMC.
Si vous avez des informations sensibles dans des noms d'application, des noms de champ ou des noms d'élément principal, elles risquent d'être exposées si vous rendez les applications qui utilisent Section Access disponibles pour Insight Advisor Chat. Les suggestions d'applications pour les requêtes incluent les applications des flux auxquels les utilisateurs ont accès. Elles peuvent inclure des applications auxquelles les utilisateurs n'ont pas accès dans Section Access d'une application. En revanche, la sélection de ces applications n'aura aucun effet. Si vous cliquez sur Dimensions ou sur Mesures pour afficher les éléments disponibles depuis une application qui utilise Section Access, les utilisateurs peuvent voir des éléments auxquels ils n'ont pas accès. En revanche, s'ils cliquent sur ces éléments, ils n'obtiendront aucune donnée.
Par exemple :
Une fois que ces utilisateurs figurent dans le script Accès de section, vous pouvez mettre l'application à disposition pour Insight Advisor Chat. Une fois l'application chargée, elle sera disponible dans Insight Advisor Chat.
Utilisation de QVD avec Accès de section
Il est possible de lire des fichiers QVD sous forme de chargement normal ou optimisé. Un chargement optimisé s'applique lorsqu'aucune transformation de données n'est effectuée lors du chargement et qu'il n'existe pas de filtres dans une clause WHERE.
Les chargements optimisés ne fonctionnent pas lors de l'utilisation de QVD avec Accès de section. Pour utiliser un fichier QVD pour charger des données dans Accès de section, vous devez développer le fichier QVD. La meilleure manière de développer le fichier QVD consiste à modifier le formatage lors du chargement des données.
Dans l'exemple suivant, le fichier QVD n'est pas développé, car aucun formatage n'est appliqué aux données.
Exemple d'échec en l'absence de formatage des données (chargement optimisé)
Au lieu de cela, vous pouvez par exemple utiliser la fonction upper() pour formater les données, ce qui développera le fichier QVD.
Exemple de fonctionnement correct avec formatage des données
Vous pouvez également ajouter une instruction Where 1=1 à l'instruction LOAD.
Autre exemple de fonctionnement correct avec formatage des données
Recommandations et conseils pour utiliser Accès de section
Voici quelques faits importants et conseils utiles à savoir sur Accès de section.
- L'ensemble des valeurs et noms de champ figurant dans les instructions LOAD ou SELECT d'Accès de section doivent être écrits en majuscules. Convertissez les noms de champ contenant des minuscules dans la base de données en majuscules grâce à la fonction Upper avant de lire le champ au moyen de l'instruction LOAD ou SELECT.
Pour plus d'informations, voir Upper - fonction de script et fonction de graphique.
- Vous ne pouvez pas utiliser les noms des champs système Accès de section indiqués comme noms de champ dans votre modèle de données.
- Les applications doivent être publiées avant que les contrôles Accès de section puissent être appliqués. Le chargement de l'application n'appliquera aucun script Accès de section nouveau ou modifié.
- Un instantané affiche les données en fonction des droits d'accès de l'utilisateur qui prend l'instantané. L'instantané peut ensuite être partagé dans un récit. Toutefois, lorsque les utilisateurs reviennent à une visualisation à partir d'un récit pour consulter les données réelles dans l'application, ils sont limités par leurs propres droits d'accès.
- N'attribuez pas de couleurs aux valeurs des dimensions principales si vous utilisez Accès de section ou manipulez des données sensibles, car les valeurs peuvent être exposées par la configuration de couleur.
- Afin d'éviter d'exposer des données d'accès restreint, supprimez tous les fichiers joints dotés de paramètres d'accès de section avant de publier l'application. Les fichiers joints sont inclus lors de la publication de l'application. Si l'application publiée est copiée, les fichiers joints sont inclus dans la copie. Cependant, si des restrictions de l'accès de section ont été appliquées aux fichiers de données joints, les paramètres de l'accès de section ne sont pas conservés dans la copie des fichiers. Par conséquent, les utilisateurs de l'application copiée pourront consulter l'intégralité des données contenues dans les fichiers joints.
- Un caractère générique (*) est interprété comme toutes les valeurs (listées) du champ dans la table. S'il est utilisé dans l'un des champs système (USERID, GROUP) d'une table chargée dans la section d'accès du script, il est interprété comme toutes les valeurs possibles (également non listées) du champ.
- Les champs de sécurité peuvent être placés dans des tables différentes.
- Lors du chargement de données à partir d'un fichier QVD, l'utilisation de la fonction Upper réduit la vitesse de chargement.
- Si vous avez bloqué votre propre accès à une application en définissant Accès de section, vous pouvez ouvrir l'application sans données et modifier Accès de section dans le script de chargement de données. Cela nécessite un accès vous permettant d'éditer et d'actualiser le script de chargement de données.
Pour plus d'informations, voir Ouverture d'une application sans données.
- Avec un chargement binaire, les restrictions d'accès sont héritées par la nouvelle application Qlik Sense.