Share a model-driven app using Power Apps
Effective November 2020:
- Common Data Service has been renamed to Microsoft Dataverse. Learn more
- Some terminology in Microsoft Dataverse has been updated. For example, entity is now table and field is now column. Learn more
This article will be updated soon to reflect the latest terminology.
PowerApps apps use role-based security for sharing. The fundamental concept in role-based security is that a security role contains privileges that define a set of actions that can be performed within the app. All app users must be assigned to one or more predefined or custom roles. Or, roles can also be assigned to teams. When a user or team is assigned to one of these roles, the person or team members are granted the set of privileges associated with that role.
Ensure you have a security role with equal or greater permissions than the role you're assigning to the app and to other users.
Create a security role for your app
Generally model-driven apps contain custom tables and other custom configuration. It's important to first create a security role with permission for all the components used in your app. More information: Create a custom security role
This step can be skipped if existing roles grant access to the data in your app.
Preview: Share a model-driven app
Sharing a model-driven app involves two primary steps. First, associate a one or more security role(s) with the app then assign the security role(s) to users.
- Visit https://make.powerapps.com
- Select a model-driven app and click Share.
- Select the app then choose a security role from the list.
- Search for a user
- Select the user then select a role from the list.
- Click Share.
Share the link to your app
Unlike sharing canvas apps, sharing model-driven apps does not currently send an email with a link to the app.
To get the direct link to an app:
- Edit the app and click the Properties tab
- Copy the Unified Interface URL.
- Paste the app URL in a location so that your users can access it, such as by posting it on a SharePoint site or send via email.
Create or configure a security role
The PowerApps environment includes predefined security roles that reflect common user tasks with access levels defined to match the security best-practice goal of providing access to the minimum amount of business data required to use the app. For example, if your app is based on a custom table, the table privileges must be explicitly specified before users may work in it. To do this, you can choose to do one of the following.
- Expand an existing predefined security role, so that it includes privileges on rows based on the custom table.
- Create a custom security role for the purpose of managing privileges for users of the app.
For more information about access and scope privileges, see Security roles.
Create a custom security role
On the PowerApps site select Apps, next to the app you want to share select …, and then select Share.
Select the app then expand the list of security roles.
On the All Roles page, select New.
From the security role designer, you select the actions, such as read, write, or delete, and the scope for performing that action. Scope determines how deep or high within the environments hierarchy the user can perform a particular action. In the Role Name box enter Pet Grooming Technicians.
Select the Custom Tables tab, and then locate the custom table that you want. For this example, the custom table named Pet is used.
On the Pet row, select each of the following privileges four times until organization scope global has been selected: Read, Write, Append
Because the pet grooming app also has a relationship with the account table, select the Core Rows tab, and on the Account row select Read four times until organization scope global has been selected.
Select the Customization tab, and then in the privileges list select the Read privilege next to Model-driven App so that organization scope is selected.
Select Save and Close.
On the security role designer, in the Role Name box enter Pet Grooming Schedulers.
Select the Custom Tables tab, and then locate the Pet table.
On the Pet row, select each of the following privileges four times until organization scope global has been selected: Create, Read, Write, Delete, Append, Append To, Assign, Share
Because the pet grooming app also has a relationship with the account table and schedulers must be able to create and modify account rows, select the Core Rows tab, and on the Account row select each of the following privileges four times until organization scope global has been selected. Create, Read, Write, Delete, Append, Append To, Assign, Share
Select Save and Close.
Assign security roles to users
Security roles control a user’s access to data through a set of access levels and permissions. The combination of access levels and permissions that are included in a specific security role sets limits on the user’s view of data and on the user’s interactions with that data.
Assign a security role to Pet Grooming Technicians
From the Share this app dialog, under Assign users to the security role select Security Users.
In the list that is displayed, select the users who are pet groomers, and then on the command bar select Manage Roles.
Click Manage security roles.
On the All Roles page, select Microsoft Dataverse user then click Actions then Copy Role.
You may also create a new blank role instead of copying an existing role.
In the Role Name box provide a descriptive role such as My custom app access. Click Ok.
From the security role designer, you select the actions, such as read, write, or delete, and the access levels. Access levels determine how deep or high within the environments hierarchy the user can perform a particular action.
Select the Custom Tables tab, and then locate the custom table used in your app.
On the row for your custom table, set access levels for each permission.
Repeat for other tables used in your app.
Select the Customization tab, and ensure Read privilege is set for Model-driven App so that organization access level is selected.
Users granted Read, Create, and Write to the Model-driven App privilege have access to all apps in the environment, even when they're not part of any role that has access to the app.
Select Save and Close.
About predefined security roles
These predefined roles are available with a PowerApps environment.
|Environment Maker||None||Can create new resources associated with an environment including apps, connections, custom APIs, gateways, and flows using Power Automate. However, does not have any privileges to access data within an environment. More information: Environments overview|
|System Administrator||Create, Read, Write, Delete, Customizations, Security Roles||Has full permission to customize or administer the environment, including creating, modifying, and assigning security roles. Can view all data in the environment. More information: Privileges required for customization|
|System Customizer||Create (self), Read (self), Write (self), Delete (self), Customizations||Has full permission to customize the environment. However, can only view rows for environment tables that they create. More information: Privileges required for customization|
|Basic User||Read, Create (self), write (self), delete (self)||Can run an app within the environment and perform common tasks for the rows that they own.|
|Delegate||Act on behalf of another user||Allows code to run as another user or impersonate. Typically used with another security role to allow access to rows. More information: Impersonate another user|
*Privilege is global scope unless specified otherwise.
Use Azure Active Directory groups to manage access
Administrators can use their organization’s Azure Active Directory (Azure AD) groups to manage access rights for licensed Dataverse users. Both types of Azure AD groups—Office and Security—can be used to secure user-access rights to an app. More information: About group teams