Join our Newsletter — 33% off our NHI Course
Home› Guides› Okta Workflows security: lock down connections, roles and…
Guide SaaS & OAuth Integrations

Okta Workflows security: lock down connections, roles and flow endpoints

PDF for newsletter subscribers · free to read online

← All guides
By NHI Mgmt Group, edited by Lalit Choda Updated 28 October 2026 14 min read
On this page

Okta Workflows can create, change and deactivate users, groups and app access across your identity estate, yet its connections, roles and API endpoints are rarely reviewed with the care given to Okta admin roles. A Workflows connection to Okta acts with the OAuth scopes and identity of whoever authorised it, third-party connections hold tokens to HR, ticketing and SaaS systems, and an API endpoint flow can be exposed to anyone who knows its URL. This guide explains the Workflows trust model, the roles and resource permissions that govern it, how to secure the Okta connection and third-party connections, how to protect invokable flows, and what to monitor in the System Log. It is for Okta administrators, identity engineers and detection teams. Okta tenant hardening in general is covered in the Okta Security Hardening Guide.

Key takeaways

  • Workflows actions run as the authorising user. Okta Support states that Workflows API actions appear in the System Log under the user who authorised the Okta connection; use a dedicated service account so the identity is clear and does not break when a person leaves.
  • The Okta connection's power is its scopes. Initial authorisation needs super admin credentials, and the default scope set covers every Okta card. Customise scopes down to what your flows use.
  • Workflows Administrator is powerful despite having no Admin Console rights. It can create and authorise connections, edit every flow and read sensitive data in execution history; only a super admin can grant it.
  • Never leave an API endpoint flow public. Endpoint flows can be secured with OAuth 2.0 (client credentials with a private key JWT), a client token, or nothing; "None" means anyone with the invoke URL can run the flow.
  • Execution history is a data store. It holds card inputs and outputs, which can include tokens and personal data; restrict who can view it and prefer Execution Log Streaming, which excludes card values, for monitoring.

The Workflows trust model

Every flow runs with the credentials stored in its connections. Understanding which identity sits behind each connection is the core of Workflows security.

ComponentHolds or grantsMain risk
Okta connection (current org)OAuth token from the built-in Okta Workflows OAuth app, with the granted Okta API scopes, issued to the authorising userOver-broad scopes; actions attributed to a personal admin account
Okta connection (another org)OIDC web app in the target org with the Refresh Token grant; authorising users need continuous super admin privilegesA long-lived refresh token with super admin backing in a second tenant
Third-party connectionsOAuth tokens or API keys for HR, ITSM, chat, cloud and SaaS appsStanding access to many systems from one console; stale connections
API endpoint flowsAn invoke URL, optionally protected by OAuth 2.0 or a client tokenPublic flows that change identities on request
Delegated flowsFlows that Okta admins run from the Admin Console; only super admins can assign themLower-privilege admins running high-privilege actions through a flow
Tables and execution historyData written or read by flows; card inputs and outputsSensitive data and tokens readable by anyone with view access

Workflows connections are non-human identities in their own right: each has credentials, scopes, an owner (or not) and a lifetime. Inventory them as you would service accounts. See the How to audit Okta API tokens and service apps page for the related Okta API tokens and service apps.

Roles and resource permissions

Workflows has its own role model, managed partly in the Admin Console and partly in the Workflows Console.

RoleScopeKey permissionsWho can assign it
Super adminOrgFull control of Okta and Workflows; assigns the Workflows app and the Workflows Administrator roleSuper admin
Workflows AdministratorOrgAll folders, flows, tables, connections and execution history; can view and modify sensitive data generated by flows; builds connectors; no Admin Console permissionsSuper admin only
Connection ManagerOrgCreate and modify any connection; activate and deactivate flowsSuper admin or Workflows Administrator
Workflows AuditorOrgRead-only across most of WorkflowsSuper admin or Workflows Administrator
Folder ManagerFolderManage folder resources, assign folder roles, create folder connections (not OAuth 2.0 connections)Super admin, Workflows Administrator, Folder Manager
Folder EditorFolderModify, activate and deactivate flows; cannot assign rolesAs above
Folder RunnerFolderRun active flows and view execution historyAs above
Folder ReaderFolderRead-only; cannot run flows or view execution historyAs above
  • Least privilege by folder: put flows for each team or purpose (joiner-mover-leaver, help desk, security response) in separate top-level folders and grant folder roles, not org roles. Only super admins and Workflows Administrators can create top-level folders.
  • Treat Connection Manager as privileged: it can change any connection and switch flows on or off, which is enough to redirect a flow's credentials or disable a security flow.
  • Folder Runner sees history: runners can view execution history, which may contain sensitive values. Use Folder Reader for people who only need to see flow logic.
  • Govern the roles: with Okta Identity Governance, Governance for Workflows manages access requests and certification campaigns for the Workflows Auditor and Connection Manager roles, and the Workflows Administrator role through governance for admin roles.
  • Manage membership in Okta: users and groups come from Universal Directory, so assign Workflows roles to Okta groups and control group membership as you would admin groups.

Securing the Okta connection

  1. Use a dedicated service account: create a named account (for example svc-okta-workflows) used only to authorise the Okta connection. Okta Support recommends this so Workflows activity is easy to identify and does not fail when a personal account is suspended or deactivated.
  2. Protect that account like an admin: phishing-resistant authentication, no email or SaaS use, sign-in restricted to admin network zones, and its sessions monitored. The Okta support system breach shows what happens when a service account credential ends up in a personal browser profile.
  3. Customise scopes: on the connection's Permissions tab choose "Customize scopes (advanced)" and grant only the okta.* scopes your flows need, and grant the same scopes in the Okta Workflows OAuth app. Scopes not granted in the app are silently left out of the connection; cards that need them fail with an Insufficient Scope error, which is a safe failure.
  4. Separate connections by purpose: a read-only connection for reporting flows and a write connection for lifecycle flows, each in its own folder, limit what a single flow can do.
  5. Cross-org connections: for a connection to another Okta org, the OIDC web app holds a refresh token and its authorising users need continuous super admin rights. Limit app assignment to the service account, and review whether the cross-org flow is still needed.
  6. Reauthorisation: Workflows Administrators and Connection Managers can reauthorise the Okta connection. Log and review each reauthorisation, because it can switch the identity behind every flow.

Third-party connections and secrets

  • Inventory every connection: list connector, nickname, authorising account, scopes or permissions, folders using it and last use. Remove connections no active flow uses.
  • Authorise with service identities: connections to HR, ITSM, Slack, Google Workspace, Microsoft 365 or cloud platforms should use dedicated integration accounts or app registrations with least privilege, not an administrator's personal OAuth grant. See the Machine-to-Machine OAuth (Client Credentials) Guide.
  • No secrets in flows or tables: do not store API keys, passwords or tokens as constants in cards or rows in Workflows tables. Use the connection's credential store or call a secrets manager. Tables and history are readable by roles that do not manage connections.
  • HTTP and custom API cards: raw HTTP calls often carry an authorisation header typed into the card. Review them in every flow export, and rotate any credential found.
  • Rotation: after rotating an integration account's credential, reauthorise the connection and confirm flows recover.

Protecting API endpoint and delegated flows

Security optionHow the caller proves itselfUse it when
Secure with OAuth 2.0OAuth client credentials grant with a private key JWT; the Okta authorisation server must approve the access token (custom authorisation servers are not supported)Default for any flow that changes users, groups or access; callers are app integrations granted the scope
Secure with client tokenA unique client token generated for the flow, passed as the clientToken query parameter or, more securely, the x-api-client-token headerWebhook senders that cannot do OAuth; send the token in the header only
None (public service)Nothing: anyone with the invoke URL can call the flowOnly for flows that take no action and return no sensitive data; avoid
  • Prefer OAuth for anything privileged: it ties each call to a registered client that you can revoke.
  • Client tokens are bearer secrets: query parameters end up in proxy and web server logs, so use the header. Store it in the caller's secrets manager.
  • Validate input: an endpoint flow should check every field it receives (user ID formats, allowed group names) and refuse unexpected values, because callers can send anything.
  • Delegated flows: only super admins can assign delegated flows to Okta admins, and runs are logged as workflows.user.delegatedflow.run. Design them to perform one narrow action (for example "reset this user's MFA after a verified ticket") with checks inside the flow, so delegation does not become a route around admin role limits. Help desk social engineering was the reported route to Okta admin access in the MGM Resorts breach.

Monitoring Workflows in the System Log

Event or signalMeaningAction
workflows.user.role.user.add / .removeWorkflows role added to or removed from a userAlert on any addition outside a change ticket
workflows.user.role.group.add / .removeWorkflows role added to or removed from a groupAlert; review group membership
workflows.user.delegatedflow.runAn admin ran a delegated flowCorrelate with tickets; alert on unusual volume
workflows.user.execution_log_stream_connection.deactivateExecution log streaming turned off for the orgHigh priority: possible defence impairment
workflows.user.flow.execution_log_stream.deactivateStreaming turned off for a single flowInvestigate which flow and why
application.user_membership.add for the Okta Workflows appSomeone was given access to WorkflowsReview against the role request
Actions by the Workflows service account (user agent Azuqua)Okta changes made by flowsBaseline per flow; alert on new event types or volumes, such as admin role grants
  • Execution Log Streaming: sends metadata about each flow execution (time, flow type, end state) to a logging service, without card-level input and output values.
  • Attribution checks: filter Okta events whose actor is the Workflows service account and whose client.userAgent.rawUserAgent is Azuqua; actions from that account with a different user agent suggest someone signed in as the service account directly.

For detection rules on the wider Okta event stream see the Okta System Log Detection Guide.

Rolling out Workflows controls

  1. Inventory: export every folder and flow, list connections with their authorising accounts and scopes, list API endpoint flows with their security option, and list role holders.
  2. Fix the worst first: change any public endpoint flow that acts on identities to OAuth 2.0 or client token, and remove unused connections.
  3. Introduce the service account: reauthorise the Okta connection with the dedicated account in a test org or sandbox first, run each flow, then switch production during a change window.
  4. Trim scopes: move the Okta connection to custom scopes, test every flow, and watch for Insufficient Scope errors.
  5. Restructure roles: move people from org roles to folder roles; keep Workflows Administrator to two or three named people.
  6. Turn on monitoring: forward System Log events above to the SIEM and enable Execution Log Streaming where available.
  7. Roll back: keep flow exports and the previous connection details; if a flow breaks after a scope or identity change, reauthorise with the previous settings, fix the gap, and repeat.

Decision guidance

A small organisation with a handful of flows can run with one dedicated service account, one Workflows Administrator plus the super admins, and a quarterly manual review of connections and endpoints. A large organisation with dozens of flow builders should separate folders by team, assign folder roles through Okta groups governed by access certification, require change tickets for activating flows that write to Okta, and stream execution logs to the SIEM.

Detection and measurement

  • Public endpoints: number of API endpoint flows with security set to None; target zero for any flow that writes.
  • Connection ownership: share of connections authorised by a dedicated service identity rather than a person.
  • Scope minimisation: whether the Okta connection uses custom scopes, and the count of write scopes granted.
  • Privileged role holders: number of Workflows Administrators and Connection Managers, reviewed each quarter.
  • Stale connections: connections with no flow use in 90 days.
  • Unticketed changes: role changes and flow activations without a matching change record.

Common failure patterns

  • Connection authorised by a person: flows stop when that admin leaves, and every action in the System Log looks like the admin did it.
  • Default scopes forever: the Okta connection keeps every scope, so any flow editor can build a card that grants admin roles.
  • Public endpoint flows: a flow built for a quick integration test is left on None and can create or modify users for anyone who finds the URL.
  • Client token in the query string: the token lands in proxy, browser and SIEM logs and becomes a shared secret nobody can rotate safely.
  • Secrets in tables and history: API keys stored in a Workflows table, or tokens visible in execution history, readable by every Folder Runner.
  • Workflows Administrator treated as low risk: because it has no Admin Console rights, it is handed out widely, although its holders control every connection and flow.

Framework mapping

FrameworkReferenceRelevance
NIST SP 800-53 Rev. 5AC-2 Account Management; AC-6 Least Privilege; IA-5 Authenticator Management; AU-6 Audit Record Review, Analysis, and Reporting; CM-3 Configuration Change ControlService accounts, scopes and roles, connection credentials, monitoring, flow change control
NIST CSF 2.0PR.AA Identity Management, Authentication and Access Control; DE.CM Continuous MonitoringAccess control and monitoring of automation
MITRE ATT&CKT1098 Account Manipulation; T1078.004 Cloud Accounts; T1685 Disable or Modify ToolsFlows abused to change accounts, stolen automation identities, turning off log streaming
ISO/IEC 27001:2022 Annex AA.5.15 Access control; A.8.2 Privileged access rights; A.8.32 Change managementRole design, privileged roles, change control for flows
OWASP Non-Human Identities Top 10NHI2 Secret LeakageTokens and keys in flows, tables and endpoint URLs

Practitioner checklist

  • Authorise the Okta connection with a dedicated, strongly protected service account.
  • Switch the Okta connection to custom scopes and grant only what flows use.
  • Limit Workflows Administrator to a few named people and treat Connection Manager as privileged.
  • Use folder roles through Okta groups, and Folder Reader rather than Runner where history access is not needed.
  • Set every API endpoint flow that acts on identities to OAuth 2.0 or client token, with the token sent in the x-api-client-token header.
  • Remove unused connections and keep an inventory with owner, scopes and last use.
  • Keep secrets out of cards, tables and flow constants.
  • Forward Workflows role, delegated flow and log streaming events to the SIEM and alert on streaming being turned off.
  • Export flows regularly so you can review changes and roll back.

Standards and references

Related NHI Mgmt Group resources: Okta Security Hardening Guide · Okta System Log Detection Guide · How to audit Okta API tokens and service apps · Service Account Security Guide

PDF for subscribers

Take this guide with you

Every section, table and checklist in one PDF, with links to the sources and related guides. Subscribe to our weekly NHI & AI Identity Journal and we’ll email you a download link.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Researched and written by the NHI Mgmt Group editorial team using AI tools, under the editorial direction of Lalit Choda. Facts are drawn from the sources listed on this page and checked by our automated quality process. Last updated 28 October 2026. Spotted an error? Use our contact page.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM and Agentic AI security. nhimg.org

PDF Downloads for Newsletter Subscribers

Get the guide

Enter your details and we’ll email you a download link.

The full guide is free to read online. The PDF is a thank you for subscribing.

Fill in all fields marked * and tick the PDF box to continue.