Does SOC 2 require multi-factor authentication for every user?
The 2017 Trust Services Criteria do not use the words multi-factor authentication. The relevant requirement is CC6.6, which asks the organization to implement logical access security measures that protect against threats from sources outside its system boundaries. One of its points of focus is requiring additional authentication or credentials. In practice, auditors expect MFA wherever the threat from outside the boundary is greatest: remote access, administrative access, and access to production systems or customer data. The criteria set no required factor count and no list of which users must enroll. Points of focus are characteristics that help you design and evaluate a control, not separate requirements, and not every one has to be addressed. The exact scope comes from your own risk assessment and your system description, so a workforce with no production access may be scoped differently from one with it.
Your organization owns this control. It decides which accounts and access paths need a second factor, documents that decision, and operates it. An implementation partner can configure the identity provider, enforce the second factor on the chosen paths, and prepare the evidence, such as enrollment reports, policy exports and sample login records. Keycloak and authentik can both enforce a second factor during login, using TOTP apps, WebAuthn or FIDO2 passkeys, and recovery codes, so the technical choice is rarely the hard part. The harder decisions are which factors you accept for which roles, how recovery works when a device is lost, and how exceptions are approved and reviewed. Confirm these choices with your CPA firm before the observation period begins, because they shape what the auditor will sample.
Only the independent CPA firm tests the control and issues the SOC 2 report. Ask the firm early which MFA evidence it expects for each in-scope access path, and whether your documented scope matches its reading of CC6.6. For frameworks that set a specific factor rule, such as the FTC Safeguards Rule, check those requirements separately, since SOC 2 alone does not supply them. Plan for phishing-resistant options where your environment allows, and record any approved exception in writing with a compensating control and a review date.
Where auditors expect MFA to apply
Remote access is the situation most directly tied to CC6.6, which concerns threats from sources outside the system boundary. Auditors usually start here because a login from outside the corporate network is the path an attacker is most likely to use. They will ask how users reach the system from home, from travel and from unmanaged devices, and whether every route requires a second factor before a session is established. Expect them to test a sample of remote logins and to compare the configured policy against what the identity provider actually enforces.
- VPN, zero-trust gateway and web application logins: Auditors ask for the configuration showing MFA is required for every remote entry point, not only the main one.
- Session establishment: They ask whether MFA is enforced at each new session, and how long a session can persist without a new factor.
- Enrollment and recovery: They ask how factors are registered and how recovery codes or help desk resets are verified.
- Sampled log evidence: They pick logins from the review period and check that a second factor was recorded.
- Exceptions for remote users: They ask for the documented compensating control if any remote path is exempt.
Before the audit, confirm that every remote path your users can reach is listed in the control matrix and that the enforcement setting matches the written policy.
Administrative and privileged accounts can change configurations, read data and disable controls, so auditors treat them as a higher risk than standard user accounts. They will look for MFA on every privileged role, including cloud consoles, directory administration, database administration and infrastructure management tools. A common finding is an administrator account that was created for a single task and never brought under the same enforcement as the rest of the team. Auditors also check that shared or break-glass accounts are either removed or controlled by a documented procedure.
- Privileged role inventory: Auditors ask for a list of roles that grant administrative rights and confirmation that each one requires MFA.
- Break-glass accounts: They ask how emergency accounts are protected, who holds the credentials and how their use is logged and reviewed.
- Separation of admin and daily accounts: They ask whether administrators use separate accounts for privileged work.
- Access reviews: They check that privileged access is reviewed on a schedule and that MFA status appears in the review.
- Phishing-resistant options: They ask whether administrators can use FIDO/WebAuthn, since CISA has urged moving to phishing-resistant methods for high-privilege users.
Confirm the list of privileged roles with your platform team before fieldwork, since the list is the first thing an auditor will sample from.
Production systems and stores of customer data are where an authentication failure has the largest consequence, so auditors often test MFA here separately from general corporate access. They will ask which systems hold customer data, who can reach them directly and whether the paths to those systems require a second factor. The question is not only whether MFA exists but whether the production path is the one people actually use. Auditors commonly find bypass routes, such as a direct database connection or a service account used interactively, and ask how those are controlled.
- Data store access paths: Auditors ask for every route into production databases, storage buckets and admin consoles, and whether each route is covered.
- Interactive use of service accounts: They ask whether any service account is used by people, and if so, how that use is restricted.
- Per-session enforcement: They ask whether production sessions require a fresh factor, and how session recording supports the evidence.
- Change and access logs: They ask for logs linking each production session to a named, authenticated user.
- Scope alignment: They check that the production systems listed in the system description match those covered by MFA enforcement.
Confirm that the production boundary in your system description matches the systems your identity provider protects, because mismatches are a frequent source of questions.
Service accounts, API clients, automated pipelines and machine-to-machine calls generally cannot answer an MFA prompt, so MFA does not fit most of this traffic. Auditors do not expect a human second factor on every API call. They do expect the organization to show how these credentials are protected, scoped and rotated, and why MFA is not applicable to each category. This is where documented exceptions most often appear, and where auditors look hardest at the compensating control. The control usually relies on strong credential protection, short-lived tokens, network restrictions and logging of each use.
- Exception register: Auditors ask for a list of non-interactive identities and the reason MFA cannot apply to each one.
- Compensating controls: They ask what replaces the second factor, such as short-lived tokens, mutual TLS, IP restrictions or workload identity.
- Credential protection: They ask how keys and secrets are stored and who can read them.
- Usage logging: They sample API activity and check that calls are attributable to a specific identity.
- Scope in the system description: They check that the exceptions are stated, so the report does not imply MFA covers machine identities.
When you document an exception, state the compensating control, the owner and the review frequency, and confirm that the system description describes the same boundary.
How NIST AAL2 and CISA guidance raise the bar
SOC 2 does not adopt NIST or CISA guidance as a requirement, but auditors and customers often use it as a reference point when they judge whether an authentication design is strong enough. NIST SP 800-63B-4 defines authentication assurance level 2 (AAL2) as requiring either a multi-factor authenticator or two separate factors, and it requires verifiers to offer at least one phishing-resistant option. AAL3 goes further, requiring a phishing-resistant cryptographic authenticator with a non-exportable private key. For a SOC 2 readiness review, the practical question is whether your identity provider can meet AAL2 today and whether the phishing-resistant option is enabled for the populations that matter most, such as administrators and remote users.
CISA takes a layered position. It states that any MFA is better than no MFA, that phishing-resistant MFA is the standard all industry leaders should strive for, and that number matching is a reasonable interim step where phishing-resistant MFA is not yet feasible. CISA also names FIDO/WebAuthn as the only widely available phishing-resistant authentication, and it urges organizations to plan a move toward it. In practice, that means an action list: confirm which accounts still rely on SMS or email codes, check whether Keycloak or authentik is configured to enroll WebAuthn or passkeys, and record a dated plan for retiring weaker factors where they remain.
Separately, the FTC Safeguards Rule sets a specific MFA obligation for financial institutions. It requires multi-factor authentication for anyone accessing customer information on the company's system, using at least two of a knowledge, possession or inherence factor, unless the Qualified Individual approves an equivalent control in writing. If you serve banks or lenders, confirm whether that rule applies to you and whether a written exception exists. Ask customers to state their MFA expectations in the contract, because that text, not SOC 2 alone, usually sets the bar you will be measured against.
Implementing MFA with Keycloak or authentik
Both Keycloak and authentik can enforce a second factor at login, so the choice between them rarely decides whether MFA passes review. What matters is which factors you enable, where you enforce them, and whether you can show who enrolled, who was exempted and why. The cards below cover those decisions in the order an assessor will test them.
Two-factor authentication in Keycloak
Keycloak (Apache-2.0) supports two-factor authentication with passkeys, recovery codes and TOTP or HOTP codes from apps such as Google Authenticator or FreeOTP. Decide which of these you allow for your workforce and turn off the rest in the realm's authentication flows. Record the enabled factors in your access control documentation, because the assessor will compare that list with what users can actually enroll. Confirm the exact options available in your chosen Keycloak version before you write the policy.
One-time password and WebAuthn settings
Keycloak exposes configurable one-time password policies and W3C WebAuthn settings, including algorithm, digit count, period and attestation options for passkeys and security keys. Set these deliberately and keep the values in version-controlled configuration so the assessor can see the same settings across environments. A passkey or security key option is the phishing-resistant path, so make it available for administrators and remote access users. Confirm each setting name and default in your version.
Recovery code handling
Recovery codes let a user regain access after losing a phone or key, and they are a common route around MFA if handled loosely. Define who may issue a reset, how the identity is verified before a new factor is enrolled, and how the event is logged. Store issued codes only in the form your product supports and keep the reset procedure in the access review evidence. Treat a reset without a logged approval as an exception to report, not a routine step.
authentik authenticator validation stage
authentik (MIT) checks enrolled second factors during login through its authenticator validation stage, covering TOTP apps, WebAuthn and FIDO2 passkeys, Duo, SMS codes, email codes and static recovery codes. Bind this stage to the flows that handle your sign-ins so that every login path passes through it. Confirm which stage types and device classes your authentik version supports before you promise them in the control description.
Weaker factors: SMS and email codes
SMS and email codes count as a second factor, but they are not phishing-resistant, and CISA urges organizations to move toward FIDO/WebAuthn. If you allow SMS or email in authentik or any other system, limit them to a fallback path, document the reason, and require a phishing-resistant factor for administrators and remote administrative access. Auditors will ask whether the weaker factor is still needed and whether its use is monitored.
Enforcing MFA per application or group
Enforcement is where the control either holds or fails. Apply MFA to each application that holds customer data or administrative functions, and to groups that include privileged or remote users, rather than relying on a single global setting you cannot prove. Test each application with a non-privileged account and with an administrator account, and keep the test results. Review group membership with the access review so that new users inherit the right requirement.
Documenting enrollment and exceptions
Assessors test MFA by sampling users and checking that enrollment happened, that the factor is active and that any exception was approved. Keep an enrollment record for each user with the factor type, date and approver, and a register of exceptions with the business reason, compensating control and review date. Confirm with your auditor what sample evidence they expect before you finalize the register, because the format of an exception record often drives the test.
What evidence shows MFA is working
An auditor does not accept a statement that MFA is enabled. For a SOC 2 under the common criteria, the evidence has to show that the MFA policy exists, that every in-scope user is enrolled, and that second-factor checks actually happened at login. Start by exporting the MFA policy configuration from your identity provider: in Keycloak, this means the realm's required actions and the browser flow with the OTP or WebAuthn conditional stage; in authentik, the authenticator validation stage bound to the relevant flows. Keep dated exports so the auditor can see the configuration as it stood at each point in the period, and capture any change to it through your change management records.
Next, produce the population and the proof of use. Export the enrollment list for every user in scope, including service and administrative accounts where they use interactive login, and reconcile it against the directory so that a leaver or contractor without a second factor is caught. Pair that with authentication logs that show a second-factor event for each sampled session, including the factor type, the outcome and the timestamp. Remote access paths (VPN concentrators, bastion hosts, cloud console SSO and administrative consoles) need their own settings exports, because an MFA gate that protects the web app but not the admin path will be found in sampling.
Finally, document the exceptions. Any account that cannot use MFA needs a written exception, an approver, an expiry or review date, and a compensating control, and each of those needs its own record. Access review records should show that reviewers checked MFA status alongside entitlements. Before fieldwork, ask your CPA firm how many users and sessions they will sample, whether they test the population from system exports or from your reconciliation, and how they treat accounts enrolled after the period starts. Those answers decide how much of this evidence must be generated automatically rather than assembled by hand.
What to have in place before the audit
An auditor testing MFA will start from documents and then check whether the running systems match them. These four items connect the written policy, the list of systems it covers, the working configuration and the record of any gaps, so each one can be checked against the others.
An access control policy naming MFA scope
The policy should state which users, remote connections and administrative actions require multi-factor authentication, and which factors are acceptable. Name the systems explicitly, such as the identity provider, production consoles, VPN or zero trust gateway, code hosting and cloud accounts, so the scope is testable. To check it, pick three systems from the policy and confirm an administrator can show MFA being enforced on each one.
A current inventory of systems and admin accounts
Auditors sample from the population of in-scope systems, so an incomplete list makes the MFA control look weaker than it is. List every application that authenticates users, every administrative account, and every service that accepts remote access, with the owner of each. Check the inventory against the identity provider's user export and the cloud accounts' IAM listings; any account that exists outside the inventory is a finding waiting to happen.
Configured MFA with tested enrollment and recovery
MFA must be enforced in the identity platform, not left optional for users to enable. Self-hosted options such as Keycloak, which supports passkeys, recovery codes and TOTP or HOTP codes, and authentik, whose authenticator validation stage checks enrolled TOTP apps, WebAuthn and FIDO2 passkeys, is a common route. Test the full path: enrolling a new factor, logging in with it, using a recovery code, and revoking a lost device. Keep the test records, since an auditor will ask to see them.
A documented exception process
Some accounts, such as break-glass emergency accounts or legacy service integrations, cannot always accept an interactive second factor. Record each exception with its business reason, the compensating control, the named approver, and an expiry date for review. The FTC Safeguards Rule allows an equivalent control approved in writing by the Qualified Individual, so the same discipline applies to SOC 2 evidence. Check that every exception appears in the inventory and that none has passed its review date.
Who owns MFA in a SOC 2
Your organization owns the MFA control. Management decides which systems, users and access paths must require a second factor, approves the scope of the SOC 2 examination, and is accountable for the description of the system that the report covers. The control is only as reliable as the people who run it day to day, so ownership has to sit with named roles rather than with whoever installed the identity server.
- Scope decisions: Confirm which applications, consoles, VPN gateways and administrative interfaces are inside the system boundary and must enforce MFA.
- Policy and exceptions: Write the authentication policy, define who may approve an MFA exception, and record the compensating control and its expiry date.
- Access reviews: Review enrolled factors and recovery methods on a set schedule, and remove factors belonging to leavers or changed roles.
- Evidence ownership: Keep the configuration exports, enrollment logs and exception approvals that the auditor will request, and make sure someone can produce them on demand.
- Operator training: Train help desk staff on identity verification before factor resets, since a reset path that skips verification can undo the control.
Before engaging anyone, check that a named owner can explain every MFA exception and produce its approval record within a day.
An implementation partner such as DeployOpen can plan, configure and document the open-source identity platform that enforces MFA, inside your own cloud accounts or data centers. Typical work includes setting up Keycloak or authentik, configuring second-factor policies, connecting applications through standard protocols, and writing the runbooks that describe how the system behaves. The partner prepares systems and evidence. It does not own the control and does not issue any attestation.
- Configuration: Set up required-factor policies in Keycloak, such as TOTP or WebAuthn passkeys with recovery codes, or the authenticator validation stage in authentik, and test them against each in-scope application.
- Documentation: Record the chosen factors, enrollment and reset procedures, and configuration keys so an auditor can compare the design with the stated policy.
- Evidence preparation: Set up repeatable exports of realm or flow settings, authentication logs and enrollment records, and test that they still work after upgrades.
- Hardening and testing: Support security testing of login flows, including bypass attempts against factor enforcement, under a written scope.
- Handover: Train your staff to operate the platform so the control does not depend on the partner after the engagement ends.
The work is usually fixed-scope and agreed in writing before it starts. Hiring a partner does not guarantee that the CPA firm will find the control effective, so ask for the written scope and the list of deliverables.
The CPA firm is the independent service auditor. It tests whether the MFA control is designed to meet the relevant criteria, typically under CC6.6, and, for a Type 2 report, whether it operated effectively over the observation period. It issues the report with its opinion. Only the CPA firm can do this, and its work is governed by the AICPA attestation standards that require written representations from management.
- Design testing: The auditor reviews the policy, system description and configuration to decide whether MFA would meet the criterion if it operated as described.
- Operating testing: For a Type 2 examination, the auditor samples enrollments, logins and exceptions across the observation period and checks them against evidence.
- Representations: Management signs a representation letter confirming that the MFA description and exception history are complete and accurate.
- Findings: Any gap, such as an application that skipped MFA, can appear as an exception in the report, which customers will read.
- Independence: The firm may not design or operate the controls it tests, which is why configuration and evidence preparation sit with your team or an outside partner.
Ask the firm which evidence samples it will request and how it will treat exceptions before fieldwork starts.
Questions about SOC 2 and MFA
Is multi-factor authentication mandatory for SOC 2?
No criterion in the 2017 Trust Services Criteria names MFA by name, but SOC 2 requires logical access controls that protect against threats from outside the system boundary, and MFA is the usual way organizations meet that expectation under CC6.6. The criteria are not a checklist. Your auditor will ask how you restrict access, protect credentials and require additional authentication for remote and administrative access, and an answer without MFA on those paths is hard to defend. The decision you must make is which accounts, paths and systems need a second factor, and how you document that choice in your system description and control matrix.
Does SMS count as a second factor for SOC 2?
SMS codes can satisfy a multi-factor requirement, but they are weaker than the alternatives and auditors and customers increasingly look at the phishing resistance of what you choose. NIST SP 800-63B-4 requires verifiers at authentication assurance level 2 to offer at least one phishing-resistant option, and CISA states that FIDO/WebAuthn is the only widely available phishing-resistant authentication. Treat SMS as a fallback or a transitional choice, document why it is used, and confirm your customers' expectations before relying on it as the only second factor for administrative access.
Can we use Keycloak or authentik for SOC 2 MFA?
Yes, both are open-source identity platforms that can enforce second factors, but the platform does not make you compliant. Keycloak (Apache-2.0) supports passkeys, recovery codes and TOTP or HOTP codes with configurable one-time password policies and WebAuthn settings. authentik (MIT) offers an authenticator validation stage that checks TOTP apps, WebAuthn and FIDO2 passkeys, Duo, SMS, email and static recovery codes. Confirm which methods your chosen version supports for each population, then capture configuration exports, enrollment records and policy settings as evidence for the auditor.
How much effort does an MFA rollout take?
The effort depends on how many identity sources, applications and privileged paths you have, how many users need enrollment, and whether legacy applications must be federated or fronted by a proxy. No duration is set by SOC 2 itself, and this page does not supply one. Ask any implementation partner for a written scope that lists each application, the enrollment method, the recovery process, the help desk procedure and the evidence you will receive. Most of the effort is usually in integration and user communication rather than in turning on the feature.
Does MFA alone satisfy CC6.6?
No. MFA is one part of CC6.6, which also looks at restricting access to what is needed, protecting credentials, and implementing boundary protection. An auditor testing MFA will still ask who can reach each system, whether accounts are reviewed, how recovery codes are stored and whether sessions and privileged access are controlled. The 2017 criteria present points of focus as characteristics that help design controls, not as separate requirements, so you choose which points to address and must explain that choice. MFA works best as one control inside a documented access design.
What if a legacy system cannot use MFA?
Start by documenting the system, its owner, its data and the reason it cannot accept a second factor. Common options are placing it behind a proxy or identity-aware gateway that enforces MFA before access, restricting it to a segregated network, shortening session lengths and tightening monitoring. Whether the compensating control is acceptable is a judgment you and your auditor make together, and any exception should be recorded with a review date and a retirement or replacement plan. Confirm with your auditor how they will test the compensating control before you rely on it.
Do we need MFA for customer logins too?
SOC 2 is driven by your service commitments and system boundaries, so customer-facing MFA is usually a product decision tied to what your customers require, not a fixed criterion. Your contracts, security questionnaires and any regulation your customers follow may ask for MFA on user accounts that reach their data. Decide which user types and actions need a second factor, record that decision in your system description, and make sure the control you describe matches what the product does during the examination period.
How DeployOpen prepares MFA for a SOC 2 audit
DeployOpen plans and implements self-hosted open-source identity platforms inside your own infrastructure, so MFA enforcement and its evidence are ready for the auditor. We prepare the systems and records; the independent CPA firm alone tests the controls and issues the report.
How we scope
- Written scope names the systems, user populations and access paths that need MFA, including remote and administrative access.
- We agree which factor types apply to each path and which exceptions, if any, need documented approval.
- Engagements are fixed-scope, with deliverables and timelines confirmed in writing before work starts.
How we build
- We deploy and configure Keycloak or authentik in your cloud account or data center, enforcing second factors for in-scope logins.
- We set phishing-resistant options such as WebAuthn passkeys where feasible and document the fallback methods.
- We test enforcement with negative cases, such as logins without a second factor, and keep the results as evidence.
How we hand over
- You receive configuration records, the MFA control description and a mapping of each setting to the relevant criterion.
- We document enrollment, recovery and reset procedures so your team can run them without us.
- Evidence is exported in a form your CPA firm can sample, and gaps are listed before fieldwork begins.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after handover.
- We can review configuration changes between audit periods so MFA enforcement stays consistent over time.
- Questions about what your auditor will accept are confirmed with the auditor, not assumed by DeployOpen.

