Configuration Security

Who may edit the form and how to protect the configuration: roles, storage lock, and password.

Settings are stored in the securityConfig property (see that section for all keys and a JSON example). This page explains what each option actually protects. Guidance for permission administrators is on the Permissions page.

What protects what

LayerProtects againstIs it a security boundary?
Editor roleshowing the Form settings button to unauthorized usersno, only controls UI visibility
Storage locksite members overwriting the configurationyes, SharePoint permissions
Password editor lockaccidental opening and editingno
Script policyexecuting custom codeyes, at the tenant level

Who can open the designer

The Form settings button—and thus the designer—is shown only to authorized users. Who qualifies is determined by the Who should see the "Form settings" button option in the designer under Security (allowedEditorRole). A site owner is anyone with Manage Web permission (manageWeb) on the list.

Designer optionValueWho may edit
Site owners only (Manage Web) owner onlymanageWebsite owners. Default for new forms.
Site owners and members of a selected SharePoint groupgroupsite owners and members of the group specified in allowedEditorGroup (exact group name, case-insensitive). This group is called the designers group.

The legacy value manageLists (list managers) and a missing role now behave like manageWeb: only site owners can edit the configuration. A member with Edit permission who previously edited the form will no longer get the designer.

Actions restricted to site owners (locking storage, setting the designers group, writing the script policy) are marked with the owner only badge in the documentation.

Security panel in the designer: role selector, designers group name, Configuration storage section with "Lock now" button, read toggles, Custom scripts section, and editor lock

Locked configuration storage

The form configuration is stored in SiteAssets/FormCustomizer/<list id>/config.json. The editor role alone would not protect it from direct modification via SharePoint, because anyone with write access to the site (such as a member with Edit permission) could overwrite the file in the library. That is why the storage lock exists.

Locking sets permissions on the root FormCustomizer folder so that:

The form reads its configuration exclusively from this file. Older storage in the list's property bag and the legacy flat shared file are ignored once locked and are used only for one-time migration in an owner's designer.

How to lock storage

  1. Open the designer as a site owner and click Security in the top bar.
  2. Under Configuration storage, check the status: Locked (only site owners and the designers group have write access), Unlocked (anyone with Manage Lists can overwrite the configuration), or status could not be determined.
  3. Click Lock now. Storage is locked even without other configuration changes.

Storage is also locked automatically the first time an owner saves the form. This list's configuration folder does not need to exist yet: the owner must save the form at least once first.

First lock and configuration origin

Before the configuration was locked, any site member could have modified it. Therefore, before the first lock, the owner sees a confirmation dialog summarizing what locking will "seal":

Review the summary, especially any scripts (they run for every user). Then choose:

As long as storage is unlocked, opening the designer displays an origin warning: "Configuration storage is not locked – site members may have modified the configuration. Review and save it (this will lock it)."

First lock confirmation: summary of configuration source, scripts, action buttons, rules, and role, with Confirm and Cancel buttons (open a form without previously locked storage and save as owner)

Reading the configuration

Forms are also opened by people who are not members of any site group. To load the configuration, they need read access to the locked storage. Two toggles in Configuration storage control this:

TogglePropertyDefault
Read configuration for entire organization (Everyone except external users)configReadAllUserson
Read configuration for external users (guests)configReadGuestson

A missing value means on. If you turn a toggle off, only site group members and users with direct access to the storage can read the configuration. Others will see the form without custom configuration. Changes take effect in permissions when an owner saves the form. The configuration contains only the form definition, never item data.

{
  "securityConfig": {
    "allowedEditorRole": "group",
    "allowedEditorGroup": "Form Designers",
    "configReadAllUsers": true,
    "configReadGuests": false
  }
}

Password editor lock

You can password-protect the designer in the Editor lock section of the Security panel. Once set, opening the designer prompts for the password (Unlock editor button) and shows the password hint if you provided one. Unlocking applies to the current session.

The editor lock is not a security boundary. It does not restrict access to data or the configuration file; it only prevents accidental opening and editing. Anyone who can read the configuration file can see the hash; anyone who can write to it can remove it. Real protection is provided by the storage lock.

Forgotten password: a site owner can open FormCustomizer/<list id>/config.json in the Site Assets library and remove passwordHash, passwordSalt, and passwordHint from securityConfig. The password cannot be recovered.

Editor lock: password prompt before opening the designer with password hint

Script policy

Custom scripts are disabled by default on the tenant. A tenant administrator enables them by setting allow in the tenant Storage Entity FormCraft365_ScriptsPolicy (the legacy key SpfxFormCustomizer_ScriptPolicy with value enabled is only read if the new key is absent; deny in the new key always disables scripts), once for all sites. A missing or unknown value means disabled. In the designer, this is the Allow custom scripts for entire tenant toggle under Custom scripts in the Security panel. Only an App Catalog administrator can write it; for others, the designer shows a PowerShell command for an administrator. The change takes effect after reloading the form, within 15 minutes at the latest.

Details, policy values, and CSP: Script Policy.

Related pages