Each node in Metrici is attached to a user known as the owner.
Scripts run against the node run under the authority of this owner.
The owner is set automatically to the user who originally creates the node. Ownership is changed to the current user:
- When the node type is changed.
- When changes are applied as part of version management.
- When new data is imported.
The owner can also be changed using the Change owner command in the menu panel. You can only change the owner to users that you can maintain, or to yourself. This generally means that account holder users can change ownership to users in the account, but normal users can only change ownership to themselves.
You can remove ownership from a node, which means that node scripts will run with no authority, and will therefore be limited in what they can do.
The owner applies to all versions of a node.
Scripts run under the authority of the node owner can do anything that the node owner can do. For security reasons, only the owner should be able to set which scripts run with their authority.
Most of the time this is done implicitly. The owner selects the node type for the node, and the node type dictates what scripts should run.
However, some node types have member types that directly or indirectly modify the scripts that can be run. For example:
- Instance Derivation Script is set on the node and runs under the authority of the owner.
- View Selection specifies a view and thus indirectly specifies column scripts which will run under the authority of the node owner.
- Inherit From allows anything from any other node to be copied in, which could influence scripts run under the authority of the owner.
To prevent abuse, member types such as these are marked as owner only, which means that only the owner can update them.
There are three ways to mark a member type as owner only:
- A member type can be made owner only in all cases by setting Owner Only (system.OWNER_ONLY_INDICATOR) to true on the member type.
- The tag Owner Only (system.OWNER_ONLY_TAG) can be set on a member type to have the same effect as setting the Owner Only Indicator.
- A member type can be made owner only for just one node type by adding it to the Owner Only List (system.OWNER_ONLY_LIST) on the node type.
As well as controlling who can specify scripts, owner only restrictions can be used to prevent users with update authority from updating some members of a node.
If required, other users with admin authority on the nodes can take ownership and then update members for these member types, but by doing so the scripts will then run under their authority.