Visibilité dans les organisations
La visibilité est une forme de contrôle d'accès. Si une entité est visible des membres d'une unité d'organisation, ces membres ont accès en lecture à l'entité. Le modèle de sécurité granulaire sous-jacent détermine quelle interaction spécifique les utilisateurs membres de cette unité d'organisation peuvent avoir avec un actif spécifique. Si la visibilité n'est pas octroyée à un utilisateur du système, l'actif en question n'existe pas dans le domaine de cet utilisateur. L'utilisateur ne peut pas voir l'actif, ne peut pas le répertorier ni effectuer une requête sur l'espace de nom de cet actif.
Dans ThingWorx, il est possible de définir les règles de visibilité afin de rendre des objets spécifiques visibles à une seule organisation, ou d'accorder à plusieurs organisations la visibilité d'un même actif. Une organisation est constituée d'unités d'organisation.
Visibilité par défaut
Par défaut, un utilisateur non-administrateur ne se voit accorder de visibilité que sur les entités qu'il a créées.
Octroi de visibilité
Pour accorder des permissions de visibilité sur des entités à des utilisateurs non-administrateurs, créez une organisation ou une unité d'organisation qui contiendra l'utilisateur ou plusieurs utilisateurs. Une fois l'organisation créée, vous devez accorder des permissions de visibilité à l'organisation ou à l'unité d'organisation.
L'octroi de permissions peut s'effectuer aux niveaux suivants :
Le niveau collection qui applique les paramètres de visibilité à tous les membres de la collection.
Le niveau entité individuelle (à savoir distributeur automatique VM101).
Le niveau instance (uniquement disponible pour les modèles d'objet). Les paramètres de visibilité d'instance restent intacts pour n'importe quel objet dérivé de ce modèle d'objet.
Vous pouvez ajouter de la visibilité via l'interface utilisateur ou à l'aide des services API REST (à l'exception de la collection ThingPackages, comme indiqué dans la section ci-dessous).
Lorsque de la visibilité sur un actif est accordée à des niveaux inférieurs de la hiérarchie organisationnelle, les niveaux plus élevés en bénéficient automatiquement. Par exemple, si un opérateur de ligne se voit octroyer de la visibilité sur sa ligne, un superviseur pour toutes les lignes de la hiérarchie organisationnelle bénéficie automatiquement de la visibilité des actifs octroyée à l'opérateur subordonné.
Il existe une exception à ce modèle de déploiement : l'octroi à l'ensemble d'une organisation de la visibilité sur un actif. Lorsqu'une organisation entière est ajoutée, celle-ci ainsi que toutes ses sous-unités bénéficient de la visibilité sur cette entité.
Octroi de visibilité sur une unité d'organisation
Dans l'exemple ci-dessous, une nouvelle organisation est créée avec les utilisateurs et les unités d'organisation associés. La visibilité est alors appliquée à l'unité d'organisation.
1. Créez une organisation. Dans cet exemple, elle est nommée Example Org. Cliquez sur Enregistrer.
2. Cliquez sur la vue Organisation. Le nom du niveau racine par défaut est Unité 1. Ajoutez des utilisateurs à cette unité, car vous ne pouvez pas les ajouter en dehors d'une unité d'organisation.
3. Renommez Unité 1. Dans cet exemple, elle est nommée RootLevelDefault.
4. Créez une unité d'organisation enfant de RootLevelDefault en cliquant sur l'icône du signe plus. Dans cet exemple, elle est nommée SubLevel. Cliquez sur Enregistrer.
5. Cliquez sur Permissions et attribuez la visibilité en sélectionnant RootLevelDefault.
* 
Si vous accordez des droits de visibilité au nom de l'organisation (Example Org dans cet exemple), toute l'organisation bénéficiera de ces permissions (principe similaire à celui des autorisations au niveau d'une collection). L'image ci-dessous présente les deux options. La première ligne montre une organisation complète qui bénéficie d'une permission de visibilité. La deuxième ligne montre que seule l'unité d'organisation dispose des permissions de visibilité.
Octroi de visibilité sur la collection ThingPackages
Vous ne pouvez accorder de visibilité à la collection ThingPackages que via l'API REST. Il n'existe aucune option d'interface utilisateur.
Utilisez le service AddCollectionVisibilityPermissions de la ressource CollectionFunctions. Les paramètres d'entrée identifient l'élément principal pour lequel vous souhaitez accorder de la visibilité.
Par exemple, pour accorder des droits de visibilité à l'organisation Everyone, vous devez utiliser les paramètres d'entrée suivants : principal = Everyone, principalType = Organization et collectionName = ThingPackages.
Par défaut, seuls les utilisateurs de type administrateur peuvent créer des services de requête SQL et de commande SQL pour un objet qui implémente un modèle d'objet de base de données. Des permissions supplémentaires doivent être octroyées sur la collection ThingPackages pour donner cette possibilité aux utilisateurs non-administrateurs. Pour octroyer ces permissions, procédez comme suit :
1. Dans Composer, accédez à Système > Ressources.
2. Sélectionnez la ressource CollectionFunctions.
3. Sélectionnez Services.
4. Sélectionnez le service AddCollectionRunTimePermission.
5. Exécutez le service avec les paramètres suivants :
collectionName : ThingPackages
type : ServiceInvoke
resource : * ou valeur spécifique
principal : nom d'utilisateur ou de groupe
principalType : utilisateur ou groupe
Allow : True
Configuration de la visibilité pour des actifs
Les utilisateurs et les groupes doivent être définis avant que les organisations puissent être configurées.
1. Dans l'Explorateur, ouvrez l'objet ou l'entité.
2. Cliquez sur Permissions.
3. Sous Visibilité, sélectionnez l'organisation appropriée.
4. Cliquez sur Enregistrer.
* 
Pour supprimer une unité d'organisation d'une organisation, cliquez sur l'icône de suppression en regard de l'unité.
Pour supprimer la permission de visibilité, sélectionnez l'organisation, cochez la case, puis cliquez sur Supprimer.
Les jeux d'autorisations de conception et d'exécution sont également accessibles en haut de la page de contrôle des permissions de visibilité.
Configuration d'une visibilité d'instance
La visibilité d'instance s'applique uniquement aux modèles d'objet, et la visibilité définie à ce niveau est héritée par toutes les entités qui utilisent le modèle d'objet concerné.
1. Dans l'Explorateur, ouvrez la section Modèles d'objet.
2. Localisez et sélectionnez le modèle que vous souhaitez utiliser.
3. Cliquez sur Permissions dans la barre de menus.
4. Sous Visibilité, cliquez sur Rechercher dans les organisations.
5. Cliquez sur le sélecteur magique et sélectionnez l'organisation appropriée.
6. Cliquez sur Enregistrer.