1. Sitecore Content Hub

Understanding user access and permissions

In Content Hub, a user's access to entities (the data in the platform) and to user interface areas is composed of several layers that a superuser can configure and combine to granularly control what each user can see and do.

Here's a list of all the layers that control user access and permissions:

  • Modules control access to the out-of-the-box Content Hub menu bar items and the pages inside them.
  • User groups let you add users to a shared group so those users share the same security settings, module access, and permissions.
  • User roles control what a user can do within a shared content collection or asset collection.
  • Project roles control what a user can do within a specific project, including its stages, tasks, and jobs.
  • Security inheritance determines whether an entity automatically inherits security metadata from related entities through a relation, which is required for relation-based conditions to work.
  • Conditional logic lets you scope the permissions in a rule to a specific subset of entities rather than to all entities in a definition.
Hierarchy of permissions

When managing user access and permissions, consider security best practices.

Testing a user's access

Users in the Superusers user group have full access rights in Content Hub and can control access for other users.

As you change access and permissions for a user, you can test how the changes affect the user's access across Content Hub. You can test access in two ways: by impersonating the user or by using the security diagnostics tool.

Tip

After making any permission, policy, or schema change, clear the cache if the change doesn't appear to take effect immediately. Stale cache is a common cause of intermittent 404 errors or missing access after configuration changes.

Impersonation

Impersonation is useful for checking how the user interface appears to a specific user and what entities they can access.

You can impersonate a user by clicking Manage > Users > Users > View details > Impersonate, and then confirming that you want to impersonate them. To exit impersonation mode, you can do any of the following:

  • Remove cookies for the site and refresh the webpage
  • Log out and then log in again as superuser.
Tip

To efficiently work with impersonation, log in to Content Hub as a superuser in a second browser (or an incognito window). Set up impersonation for a user there, and continue modifying the user's access as a superuser in the other window. This lets you instantly test the user's access as you make changes.

Security diagnostics

As an alternative to impersonation, the security diagnostics tool is useful for checking the exact permissions a user has for a specific entity (asset or content item), including which user group grants each permission and through which inheritance chain.

Modules

Modules are the core functional pillars that make up Content Hub. Every module handles a specific part of the content lifecycle. From an access perspective, modules control access to the out-of-the-box Content Hub top menu bar items and the pages inside them. You can license modules and assign them to users and user groups based on your organization's requirements.

As a superuser, you can check which modules are available in your license in Manage > Stats > License.

Here's an overview of all the Content Hub modules and the menu items and pages that each module enables access to:

ModuleMenu bar item and subpages
ContentCampaigns, Content
MediaCampaigns, Assets, Collections, Create, Review, DRM
PrintPublisher
PreviewPreview features (if enabled in your license)
ProductProducts
ProjectProject
SalesforceNo menu bar items
Sitecore Connect for Creative CloudNo menu bar items
Note

Campaigns requires both the Content and Media modules for full functionality. If only one is licensed, only part of the Campaigns features are available: the Content module covers the content side, and the Media module covers asset-related functionality.

Salesforce and Sitecore Connect for Creative Cloud are connector licenses. Enabling them does not add new items to the menu bar. Instead, they provide access to connector-specific pages that display Content Hub content inside iframes.

Accessing areas of the user interface

Modules alone do not guarantee access to an area of the user interface. For a user to access a page, all the following must be true:

  • The required module must be available in your license.
  • The required module must be assigned to the user's account.
  • The user must be a member of a user group whose policy grants Read permission on that specific Portal.Page entry.
  • The page must be visible.

If any of these conditions is not met, the user does not see the menu bar item or the pages inside it. For example, if you add a user to a group with read permissions on assets and collections, but the user does not have the Media module assigned, they cannot access the Assets and Collections pages.

The conditions listed above are sufficient to make the page visible and navigable. For users to see data on the page, such as assets in a search result, they also need Read permission on the entity definitions that the page displays.

Modules and user groups

Note the following behavior when assigning modules through user groups:

  • Modules assigned to a user group are automatically assigned to new users added to the group, but not to users who were already in the group before the module was assigned. You must assign the module to existing members individually or by using mass edit.
  • Removing a user from a user group does not remove the modules that were assigned to them when they joined the group.
  • Removing a module that was previously assigned through a group does not remove the user from that group.

User groups

A user group is a collection of users who share the same security settings, module access, and permissions. Instead of setting rules for each person, you add users to a group and manage their access all at once.

Every user in the group automatically gets the permissions assigned to that group. A single user can belong to more than one user group to combine different access rights. You can also configure module access at the user group level.

For more information, review the standard user groups, including the Everyone group. Also review Sitecore's recommendation on the number of user groups and policies you create.

User group policy

A key element of a user group is the user group policy. Every user group has a policy. Every policy consists of rules, member security, and privileges, which combine to determine the user's access rights.

Logic evaluation

If a user belongs to multiple user groups, all the policies from those groups apply to the user. In this scenario, you decide whether to apply any or all logic between the policies:

  • Any - only one of the user groups needs to give the user permission to do the requested action.
  • All - all of the user groups need to give the user permission to do the requested action.

You can also group policies into sets and decide whether to apply any or all logic per set.

For example scenarios, see User group and policy combinations.

Rules and conditions

When you configure a user group policy, you start by creating a rule within the policy. A single user group policy can contain multiple rules. By default, a rule applies to all entities within the scope of the rule. To granularly control which entities the rule applies to, you can add conditions to the rule. A single rule can contain multiple conditions.

Logic evaluation

Note the difference in the logic that applies to rules, conditions, and condition items:

  • Rules within a policy are evaluated independently, using or logic. If a user meets the criteria of any rule in the policy, they are granted the permissions defined in that specific rule. Each additional rule broadens a user's access.

    Example: a policy contains two separate rules. Rule 1 grants Read permission on Portal.Page with a condition scoped to the Assets page. Rule 2 grants Read permission on M.Asset with a condition of FinalLifeCycleStatus: Approved. Together, the user can open the Assets page and see all approved assets. Neither rule alone delivers the experience: rule 1 makes the page navigable, and rule 2 makes asset data visible on it.

  • Conditions within a rule are evaluated using and logic. Each additional condition narrows the entities the rule applies to. All conditions must be met simultaneously for the rule to apply to a given entity.

    Example: a rule for SC.BrandKit has two conditions: M.Brand: Fruitful and Status: Approved. The user can only access a brand kit if it belongs to Fruitful and its status is Approved.

  • Items within the same condition are evaluated using or logic. Selecting multiple items widens the match within that condition: the entity only needs to match one of the selected items.

    Example: a single condition in the SC.BrandKit rule contains two items: M.Brand: Fruitful and M.Brand: Alaris. The user can access brand kits belonging to either Fruitful or Alaris.

Tip

To grant access when either of two different fields matches a value, for example, when M.Brand: Fruitful or Owner Department = Creative, create two separate rules, one for each condition. Adding both as conditions in a single rule would require both to be true simultaneously, which is not possible for two different fields on the same entity.

Additive permission model

Content Hub uses an allow-only permission model. Every rule in a user group policy is a grant, and there is no rule type that blocks or removes access.

Because there is no deny mechanism, you cannot restrict access by adding a rule to a user group. Adding a rule can only grant additional access. Therefore, to prevent a user from accessing something, ensure that none of the groups they belong to grant that access.

To restrict a user's access, you must do one of the following:

  • Remove the user from the group that grants the unwanted permission.
  • Remove the permission from that group's policy. This affects all members of the group.

The additive permission model applies directly to what users see in the user interface. If a user has Read permission on a page and satisfies the other conditions for accessing the page, that page and its navigation icon, if any, are visible to them. If you want to hide a page from a user, ensure that none of the groups the user belongs to grant Read permission on that page. For an example scenario, see the Preventing access to the Manage area.

User roles

User roles control what a user can do within a specific shared content collection or asset collection. Unlike user group policies, which apply system-wide, user roles are scoped to individual collections and are set per collection.

There are four user roles:

  • Reader - can view collection content.
  • Developer - can view collection content and manage API tokens for the collection.
  • Contributor - can view and update the collection's own metadata, and add or remove items from the collection. This role does not grant permissions to edit, publish, archive, or delete the assets within the collection. Those permissions must be granted separately through user group policies.
  • Manager - has full control, including deleting the collection and managing the roles of other users.

For information about the permissions granted by each of these roles, see User roles and permissions.

Project roles

Project roles control what a user can do within a specific project, including its stages, tasks, and jobs. Like user roles for collections, project roles are scoped to individual projects rather than being system-wide.

There are three project roles:

  • Manager - can create projects, edit project information, and manage the assets and fragments associated with a project. Managers can create all task types.
  • Contributor - can add assets and fragments to projects. Contributors can create To do and Create content task types.
  • Reader - can only read assets and fragments within a project. Readers cannot create any type of task.

A superuser or a project manager can assign project roles and add users and user groups to a role for any project.

For more information, see Project roles.

Security inheritance

Security inheritance determines whether an entity can inherit security metadata from a related entity through a relation. A relation is a schema member that links one data entity to another.

As a superuser, you can manage schemas in Manage > Schema.

Inheritance is controlled by the Inherits security flag, which is a setting on individual relation members in the schema.

This is a low-level schema concept, but it has a direct and significant impact on how user group policy conditions behave.

For more information, see Schema changes and inheritance.

How inheritance works

When Inherits security is enabled on a relation, an entity inherits the security context of the entities it is related to through that relation. Content Hub uses this inherited context when evaluating whether a user has access to an entity.

For example, consider a Product entity that is related to a ProductStatus entity through the PCMProductStatusToProduct relation. If Inherits security is enabled on that relation, the product inherits the security metadata of its status. A user group rule that grants permissions on products in the Created status can then correctly evaluate whether a specific product qualifies.

If Inherits security is not enabled on the relation, Content Hub cannot traverse it to evaluate the condition. The rule is configured correctly, but it never matches any entity — and no permissions are granted.

Collections and assets

Collection permissions and asset permissions are always evaluated independently. Granting a user access to a collection does not automatically grant access to the assets inside it.

That is because the CollectionToAsset relation has Inherits security disabled by default. This means:

  • A user who can read an M.Collection entity cannot automatically see the assets within it.
  • To grant access to assets in a specific collection, you must separately grant the user Read permission on the M.Asset definition. You can scope this to the relevant collection by using a shared taxonomy category that links both the collection and its assets.
  • The User Access control on a collection's detail page grants access to the collection entity itself only. It does not grant access to the assets inside the collection. To give those users access to the assets, you must also configure the appropriate M.Asset permissions in their user group policy.
Warning

Enabling Inherits security on the CollectionToAsset relation is a schema change that deviates from the out-of-the-box configuration and may introduce unexpected behavior. If a user has read access to an asset, enabling this flag means they may also gain visibility of all other collections that asset belongs to, even if they do not have explicit permission to access those collections. Evaluate the impact carefully before enabling this flag in production.

Multi-level inheritance

Inheritance is transitive. If entity A inherits security from entity B through one relation, and entity B inherits security from entity C through another relation, then entity A may also inherit security from entity C.

In schemas with multiple relations that have Inherits security enabled, this can result in users accessing entities they were not explicitly granted access to. For example, a user with access to a specific brand may unexpectedly gain access to features, series, or special offers linked to that brand through a chain of inherited relations.

Use the security diagnostics tool to trace the permission chains for any entity and verify which user group and which inheritance path is granting access. If access is broader than intended, disable Inherits security on intermediate relations that are not required for your permission conditions.

Tip

Enabling Inherits security on more than two levels of nested relations also has a performance impact, as Content Hub must traverse those chains each time an entity is created or updated. Limit deep inheritance chains where possible.

Enabling Inherits security on a relation

To enable Inherits security on a relation:

  1. Go to Manage > Schema and open the entity definition that contains the relation.
  2. Find the relation member you want to configure.
  3. Open the relation's Advanced tab.
  4. Enable Inherits security.
  5. Click Save.

After enabling the flag, clear the cache to ensure the change takes effect immediately.

Conditional logic

Conditions let you scope the permissions in a user group rule to a specific subset of entities, rather than to all entities in a definition. For example, instead of granting Update on all assets, you can use a condition to grant Update only on assets where the brand is set to Fruitful and the lifecycle status is Approved.

The way conditions are evaluated depends on what you are conditioning on.

Conditions on direct members

When a condition is based on a member that belongs directly to the entity definition (for example, a taxonomy tag on an asset), no additional configuration is needed. Content Hub evaluates the condition against the entity's own data.

When a condition is based on a related entity (for example, filtering products by their status through a relation), the Inherits security flag must be enabled on the relation connecting the two entity definitions. Without it, Content Hub cannot walk the relation to evaluate whether the condition is satisfied, and the rule silently has no effect.

This is a frequent source of misconfigured permissions. If you configure a rule with a relation-based condition and the expected access is not granted, check whether Inherits security is enabled on the relevant relation before troubleshooting elsewhere.

Constraints

  • Permissions are always additive. Conditions narrow the entities a permission applies to, but they cannot deny access. If another rule in any of the user's groups grants the same permission without conditions, that rule takes precedence and the user retains the broader access.
  • When using a taxonomy condition, include all relevant taxonomy values. Because Update is validated against both the current and future state of an entity, if a value is missing from the condition, users cannot update entities to or from that value. For example, if you include only Poster under M.AssetType, users cannot edit assets tagged as Artwork. For more information, see Configure a user group policy.
  • The special Only entities created by current user option is also a condition. When selected, the rule applies only to entities the current user created, in addition to any other conditions on the rule.

Examples

This section contains example scenarios describing how you can combine various permission layers to granularly grant user access.

Combining permission layers

Consider a user called Demo.Photographer who should only see their assigned tasks on the Tasks page. To achieve this:

  • The user is assigned the Project module.
  • The user is a member of the W.Photographers user group, which grants Read permission only on Portal.Page definitions.
  • The user is a member of the Everyone user group, which assigns the minimum permissions required by a user in Content Hub, and the M.Builtin.Project.Everyone user group, which grants Read permission on pages related to projects, tasks, and jobs.
  • The user has no project roles assigned.

Together, these layers give the user access to the Tasks page and the tasks assigned to them, without exposing any other content or features.

Preventing access to the Manage area

Consider a scenario where you want to prevent a user from accessing the Manage area. Because permissions are additive, you cannot configure a rule to hide the Manage area. Instead, review the portal page permissions in the policy for every user group the user belongs to and include only the pages the user needs access to.

To do so:

  1. Review all groups the user belongs to. Any Read permission on the Manage page granted by any of these groups gives the user access to the Manage area. Identify and, if appropriate, remove those permissions.

    The out-of-the-box Superusers group provides access to the Manage area by default. Other out-of-the-box groups, including the Everyone group, do not provide access to the Manage area by default.

  2. In the user's user group policy, create a rule for Portal.Page, add a Portal.Page condition to it, and click Select to choose items for the condition. In the Select items modal, select only the specific portal pages the user needs, for example, the Assets search page and the asset detail page. Grant Read on these pages only. Do not select the Manage page.

  3. Test the affected user's access to verify they cannot access the Manage area.

Note

You can use the same approach to restrict access to any page in Content Hub. By default, users in the Superusers group have Read permission on all portal pages. For any other user group, only grant Read on the specific pages the group needs.

Controlling access to assets

Consider a scenario where you control a user's access to the Assets page. This user already has the Media module assigned, so they can see and click the Assets item in the menu bar. This user is currently only a member of the Everyone group, so clicking Assets loads an empty page with no assets available. To let the user view assets, you need to give them Read permission on both the asset data and the Assets portal page.

To do that, you create a new user group and add the user to it. In the group's policies, you create two rules:

  • For rule 1, add Asset (M.Asset) and enable Read. This grants access to the asset data.
  • For rule 2, add Portal page (Portal.Page), set the condition to Portal.Page: Assets (and the asset detail page), and enable Read. This makes the page visible in the menu and navigable.

After saving your changes, the user can view all available assets on the Assets page. That's because neither rule has conditions: each rule applies to all entities in its scope.

You can granularly control which assets the user can view by adding a condition to a rule. For example, add a condition to rule 1 based on Asset media (M.AssetMedia), click Select, and choose docx and mp4. Confirm your choice and save your changes. The user now has access only to DOCX and MP4 assets.

If you add a second condition to rule 1, for example, Geography: Canada, both conditions must be true for an asset to be accessible. The user can now only access DOCX or MP4 assets where the geography tag is set to Canada.

Consider a scenario where you want users in the ABC.Product.Creator group to only be able to update products in the Created status.

You create a rule for Product (M.PCM.Product), add a condition for M.PCM.ProductStatus: Created, and enable Update and Delete. You test the result, but editing controls do not appear for the user, even on products that are in the Created status.

The cause is that the PCMProductStatusToProduct relation does not have Inherits security enabled. Content Hub cannot traverse the relation to check the status condition, so the rule never applies.

To fix this:

  1. Go to Manage > Schema > Product (M.PCM.Product) > Edit .
  2. On the Commercial tab, find the PCMProductStatusToProduct relation member and click More actions > Edit .
  3. In the Edit member modal, on the Advanced tab, enable Inherits security, and click Save.
  4. Clear the cache.

After this change, the condition evaluates correctly and users in ABC.Product.Creator can update and delete only products in the Created status.

Granting access to assets within a collection

Consider a scenario where you want users in the collectionTest user group to see the assets inside a specific collection.

You grant Read on the M.Collection definition for the collection, add the user to the group, and the user can see the collection on the Collections page. However, when they open the collection, it appears empty.

The cause is that collection permissions and asset permissions are evaluated independently. The CollectionToAsset relation has Inherits security disabled by default, so read access to the collection does not cascade to the assets inside it.

To resolve this, you must separately grant the collectionTest group Read permission on M.Asset. To scope access to only the assets in that specific collection, rather than all assets, use a shared taxonomy category:

  1. Go to Manage > Taxonomy > New taxonomy, and create a taxonomy, for example Category.
  2. On the Taxonomy Management page, click Add to add an item, such as Category A, to the taxonomy.
  3. Create relation members to link M.Collection to Category and M.Asset to Category, with Inherits security enabled on both.
  4. Assign the collection and its assets to Category A.
  5. In the collectionTest group policy, add a rule for M.Asset with the condition Category: Category A and enable Read.

Users in collectionTest can now see the assets in that collection, scoped to only those tagged with Category A.

Consider a scenario where you want to connect a reporting platform to Content Hub using a REST API. The platform needs to read all assets and their associated public links to generate a report, but must not be able to create, modify, or delete anything.

Create a new user group, such as API.ReadOnly, and open its policies. Add two rules:

  • For rule 1, select Asset (M.Asset) and enable Read. Do not add any conditions.
  • For rule 2, select Public link (M.PublicLink) and enable Read. Do not add any conditions.

Because neither rule has conditions, each applies to every entity in its definition. This means that all assets and all public links in the system are readable by members of this group.

You do not need a third rule for the AssetToPublicLink relation because in Content Hub, permissions are defined on entity definitions, not on relations. When a user has Read permission on both M.Asset and M.PublicLink, the AssetToPublicLink relation between them is automatically traversable via the API.

Note

Read permission grants access to all properties of an entity by default. Member security can restrict specific properties, but unless it has been explicitly configured in your environment, no additional setup is needed for full property read access.

Tip

The rules above grant access to all assets and public links in the system. In practice, it is a good idea to scope integration access to only the data the integration needs. For example, an integration that processes only approved assets can add a FinalLifeCycleStatus: Approved condition to the M.Asset rule. Similarly, you can scope access to assets linked to specific brands or taxonomy categories. Limiting the scope reduces the risk of the integration account accessing data outside its intended use case.

Because this group is for API access only and does not require browser UI navigation, you do not need a Portal.Page rule. Portal page permissions only control what a user sees in the Content Hub interface. If the integration account also needs UI access, add a rule for Portal page (Portal.Page) following the approach described in the Controlling access to assets example.

Finally, create a dedicated service account user for the integration and add it to the API.ReadOnly group. That account now has read access to all assets and public links across the system, with no write capabilities of any kind.

Troubleshooting

If a user's access does not match what's expected, do one of the following:

  • Use impersonation to verify what the user sees in the interface.
  • Use the security diagnostics tool to trace exactly which user groups and inheritance chains are granting (or not granting) access to a specific entity.
If you have suggestions for improving this article, let us know!