ServiceNow Flow Designer: Security and Access Design
Role Model for Flow Designer Access
Flow Designer is a low-code tool for building automations and workflows. Restrict who can create and modify flows: this typically includes Platform Administrators, Flow Administrators, and designated automation architects. Developers should not have blanket access to create flows; flows are business logic, not code. Separate creation and approval: a developer creates a flow; a platform architect reviews and approves it before it runs in production. This separation ensures that flows are tested and documented before they automate critical business processes.
Flow reusability extends their value and reduces maintenance burden. Design flows to be composable: use subflows for common logic so it can be reused across multiple parent flows. Avoid hard-coding values in flows; use flow input variables so flows can be used in different contexts and adapted to different business scenarios. Reusable flows reduce maintenance burden: when logic changes, fix it in one place instead of many.
Least Privilege in Flow Execution
A flow runs as either the system user or the user who started it, so choose that deliberately for each flow and grant only the roles its steps need. If a flow is created by someone with extensive platform access, the flow can perform actions that individual users should not be able to perform. Design flows to run with minimum necessary privilege. Use a dedicated service account for flow execution, granting it only the access the flow needs. For example, a flow that approves requests only needs access to request records; it does not need access to user records or system configuration data. Service account privileges should be reviewed quarterly to ensure they still match actual flow needs.
Segregation of Duties in Workflow Approvals
If a flow implements an approval workflow (for example, requests are automatically routed for approval), ensure the same person cannot create the request and approve it. For example, in a procurement process, the person requesting a purchase should not be the same as the approver. ServiceNow implements segregation of duties through roles: the requester role does not have approval rights. Flows must respect these separation constraints when assigning approval tasks.
Data Access and Privacy in Flows
Flows often read data from tables to perform actions. Ensure flows access only the data they need. For example, a flow that sends notifications should not read all user records and expose passwords or personal contact information. Use field-level security to restrict access to sensitive fields within tables. When a flow reads a record, only fields the flow is permitted to access should be available. Regularly audit flow logic to ensure it is not inadvertently accessing or exposing sensitive data.
Audit Logging and Flow Execution Tracking
All flow executions should be logged: what flow ran, when, with what input, and what actions did it take. Audit logs allow you to answer questions after an incident: did this flow execute unexpectedly? What did it do? Logs also support debugging when flows fail. Configure ServiceNow to retain flow execution logs for a period based on your regulatory requirements. Archive old logs for long-term retention if needed for compliance investigations.
Change Control and Flow Deployment
Flows are business logic and should be treated like application code, not configuration. Changes to flows should follow change control: document the change, test it in a non-production environment, and have a deployment plan. A flow change that goes wrong can disrupt many processes simultaneously. Many organizations use update sets or other deployment mechanisms to move flows from development to production in a controlled manner. Require approval for production flow changes from someone other than the developer.
Flow Debugging and Troubleshooting
When flows fail or produce unexpected results, debugging is necessary. ServiceNow Flow Designer includes debug mode: run the flow with detailed logging showing each step and variable values. Use debug logs to trace failures: at which step did the flow fail, and what data caused it? Log unexpected outcomes as well; sometimes flows run without errors but produce incorrect results. Effective debugging requires understanding the flow logic and the data flowing through it. Document common flow issues and their solutions to accelerate troubleshooting when similar issues arise.
Access Review and Flow Ownership
Conduct quarterly reviews of who has Flow Designer access and what flows each person created or modified. When employees leave, remove their Flow Designer access immediately and reassign ownership of their flows to active team members. Update flow documentation to reflect the new owner. Archive flows that are no longer used to reduce clutter and avoid accidental execution of obsolete automation logic.
Decide which identity each flow acts as before anything else is secured
The security question that matters most for a flow is not who may open the designer. It is which identity the flow acts as when it runs. A flow that runs as the person who triggered it can only do what that person could do, which is safe but breaks down for background work. A flow that runs as a broad service identity can do almost anything, which is convenient and dangerous. Many security problems in flow estates can trace back to a run-as decision made for convenience and never revisited. The design should choose one identity per flow or per flow group, record why, and grant that identity only the access its steps need.
| Run-as pattern | Suits | Main risk | Control to add |
|---|---|---|---|
| The triggering user | Actions a person is entitled to take themselves, such as submitting a form | Fails for background steps the user cannot perform | Run the flow under the narrowest account the process permits and observe what fails |
| A dedicated service identity per process | Background work that spans several tables for one process | One identity accumulates access over time | Scope its roles to the tables in the design record and review them each cycle |
| A shared administrator identity | Almost nothing in production | Any flow can change anything, and actions cannot be attributed | Retire it for flows; keep it for platform maintenance only |
Keep external credentials out of the flow itself
A flow that calls an outside system needs a credential, and the credential is a common thing to be pasted into a step by mistake. Hold each secret in the platform’s credential store, reference it through a connection or alias, and let the flow use the alias rather than the value. That arrangement lets an administrator rotate or revoke a credential without editing every flow that uses it. It also keeps the secret out of the flow’s exported definition, which matters when the definition is copied between environments or shown to a reviewer.
- Search every flow for literal strings that look like keys, tokens or passwords, and move each one into a credential record.
- Confirm that each external call uses a named alias, and that the alias has a single owner recorded.
- Use a separate credential for each environment so that a development secret cannot reach production.
- Record the rotation date for each credential and the flows that depend on it, so a rotation does not break work unexpectedly.
- Check that outbound calls send only the fields the receiving system needs, and nothing that would expose more personal data than the process requires.
Classify what a flow reads, writes and logs
Flows are a quiet way for data to leave a restricted table. A flow that reads a sensitive field to build a notification can place that field in an email, a chat message or an external payload. Classify each table and field the flow touches, and then check the outputs: notification text, outbound request bodies, work notes and execution details. Where a flow must use sensitive data, mask it in the output or pass a reference that the recipient can open under their own access.
Separate the people who request, approve and fulfil
Where a flow automates an approval, the design should prevent the same person from requesting a change and approving it, unless the process explicitly allows it. Check the flow’s trigger and approver rules together. A common gap is an approval step that accepts the requester as an approver because the approver list was built from a field the requester can edit. Test the rule with the requester’s own account, not with a tester who happens to be a different person.
Evidence the controls, not only the design
Auditors and security reviewers usually want to see what happened, not what was intended. Confirm that execution history records the flow, the time, the identity used and the outcome, and that someone reviews it on a schedule. Keep the design record, the credential inventory and the last access review together, so a question about any flow can be answered from one place. If a flow cannot be explained from its records, that is itself a finding.
Should flow administrators also be able to run production flows?
They should be able to see the outcomes and pause flows in an incident. Running a production flow by hand should be limited to the owner or a named operator, and recorded.
Is it enough to restrict who can edit flows?
No. Restricting editing protects the design, but the run-as identity and the credentials decide what the flow can do once it runs. Both need review.
What is the right way to let a flow read a restricted table?
Document the reason in the design record, grant the narrowest access that works, and limit where the data appears in outputs. A documented exception with an owner is far safer than a broad grant that nobody remembers.
What should a security review of a flow check first?
The run-as identity, the credentials, and the outputs that leave the platform. Those three can answer much of the risk before anyone looks at the logic.
For how sensitive fields are labeled, the data classification workflows article is the place to start, and the audit trail evidence article is the companion read on what audit records should prove. The connection and credential alias explainer and the access control list explainer cover the platform mechanics behind both.
Frequently asked questions
Who should be allowed to create flows in production?
Only designated Flow Administrators and automation architects should create flows in production. Others should create flows in development or sandbox environments. Require a formal approval process before moving any flow to production, including testing in a staging environment.
What service account privileges does a flow need?
A flow should run with the minimum privileges necessary to perform its function. If a flow approves requests, it needs access to request records and any related tables (for example, approval records). It does not need administrative access. Document each flow's required privileges and remove unnecessary ones.
How do we prevent flows from exposing sensitive data?
Use field-level security to restrict access to sensitive fields. In flow logic, avoid copying sensitive data to temporary variables or external systems unless necessary. Audit flow definitions regularly to ensure they do not read or expose data beyond their intended scope.
Related guides
Related Oblytech services
Where this topic turns into delivery work, these are the Oblytech services that cover it.
Planning, running or fixing a ServiceNow programme? Tell us where you are and we will suggest a sensible next step.
Contact us