SOC2

SOC 2 Logical Security: System Access and Authorization

Elena Vasquez had already walked Meridian Fleet Systems' vendor risk team through Corrallis Freight Analytics' security program twice before the auditor's interim letter landed in her inbox.

SOC 2 Logical Security: System Access and Authorization
Loading advertisement...
20

Elena Vasquez had already walked Meridian Fleet Systems' vendor risk team through Corrallis Freight Analytics' security program twice before the auditor's interim letter landed in her inbox. Corrallis, a Denver-based logistics-data SaaS company, was three weeks from closing a $3.6 million, three-year contract to power Meridian's fleet-utilization dashboards across nine regional distribution hubs — a deal that would make Meridian the company's largest customer by a wide margin. Elena, Corrallis's Director of Identity and Access Management, had spent the better part of a year building what she thought was a defensible access control program: single sign-on for the core application, a documented role catalog, quarterly access reviews. She assumed the Type II fieldwork would confirm what she already believed.

The interim letter carried two findings, and both sat squarely inside CC6.1 through CC6.3 — the logical access sub-criteria this article is about. The first: Corrallis's legacy reporting portal, a Django admin console three engineers still used weekly to debug customer data pipelines, authenticated with a username and password only. No multi-factor prompt, no SSO redirect — just a form field the auditor's sample walkthrough exposed in about four minutes. The second finding cut deeper: a support engineer's account carried standing production database administrator rights, inherited from a broad "Engineering" role assigned during onboarding eighteen months earlier and never revisited, even though her actual job — triaging customer support tickets — never required write access to production data at all. Neither finding involved a breach. Both were about to appear in Section IV of the report Meridian's procurement team would read line by line.

"The problem was never that we didn't have MFA," Elena told her CEO after the call with the audit partner. "We had MFA — on the app everyone actually thinks of as 'the product.' We just never asked what authenticates the tools engineers use around the product. And the role catalog looked complete on paper. It just never distinguished between what a role was designed to do and what it was technically capable of doing." Corrallis had three weeks to remediate before fieldwork closed. What Elena's team built in that window — and what nearly every logical security program eventually has to build, whether an audit forces the timeline or not — is the subject of this article: the authentication mechanisms that prove who someone is, the authorization models that decide what they're allowed to touch, and the session, remote-access, and encryption controls that keep both trustworthy for the full length of a Type II report's audit period.

Who this is for and what you'll walk away with

This article is for the person who has to build and defend the actual technical mechanisms behind CC6.1 through CC6.3 — not the broader access-lifecycle workflow of who requests, approves, grants, and eventually revokes access (that's the process our companion article, SOC 2 Access Controls: User Management and Privilege Administration, covers in depth), but the underlying logical security architecture: how authentication proves identity, how authorization models decide what an authenticated identity can do, and how session, remote-access, and encryption controls keep that trust intact between login and logout. You'll walk away with a working comparison of authentication methods and MFA options, a clear-eyed breakdown of RBAC versus ABAC and where each earns its complexity, the session and remote-access controls auditors actually test, the most common CC6.1–CC6.3 exceptions and how to prevent them, and three case studies with quantified outcomes. Fifteen-plus tables, a diagram of the authenticate-authorize-access flow, six named practitioner perspectives, and the vocabulary to have a precise conversation with your auditor instead of a vague one.

Where CC6.1–CC6.3 sit inside logical and physical access controls

CC6 — Logical and Physical Access Controls — is the largest of the nine Common Criteria areas, spanning eight points of focus from authentication infrastructure through physical badge access and malware prevention. This article covers the first three: CC6.1 (the logical access security software and infrastructure that restricts access to information assets), CC6.2 (prior to issuing system credentials, the organization registers and authorizes new internal and external users, and their access is authenticated consistent with policy), and CC6.3 (the organization authorizes, modifies, or removes access based on roles, responsibilities, and the principle of least privilege, and periodically reviews it). CC6.4 through CC6.8 — physical access, asset disposal, external threat protection, transmission protection, and malware — sit outside this article's scope.

There's a deliberate split worth naming up front, because it's easy to conflate CC6.2 and CC6.3 with a different article entirely. CC6.2's phrase "register and authorize new users" and CC6.3's "authorizes, modifies, or removes access" both describe decisions about who should have access — and those decisions are made through a human workflow: a request, an approval, a joiner-mover-leaver process, a periodic review meeting. That workflow — who requests access, who approves it, how fast deprovisioning happens after a termination, how privileged accounts get provisioned and monitored day to day — is the subject of SOC 2 Access Controls: User Management and Privilege Administration. This article covers something adjacent but distinct: the mechanisms that make those decisions technically enforceable and evidenceable — the authentication technology that proves an identity is who it claims to be, the authorization models (RBAC, ABAC) that translate a role decision into a technical permission set, and the session, remote-access, and encryption controls that keep the whole system trustworthy once someone is logged in. Put simply: the sibling article is about who gets access and how that decision is made and reviewed. This article is about how access is technically proven, granted, and protected.

CC Sub-Criteria

Official Focus

Covered In This Article

Covered In the Sibling Article

CC6.1

Logical access security software/infrastructure restricts access

Yes — authentication mechanisms, authorization models, session/remote-access controls

Partial — IAM platform selection and rollout governance

CC6.2

Registration and authorization of new users prior to issuing credentials

Partial — the authorization models and credential issuance mechanics

Yes — the request/approval workflow, joiner process

CC6.3

Role-based access, least privilege, periodic review

Partial — role design principles, RBAC/ABAC architecture

Yes — the review cadence, sign-off process, deprovisioning SLA

CC6.4

Physical access restrictions

No

No — see the ISO 27001 physical security controls for a deeper treatment

CC6.5

Asset disposal and media sanitization

No

No

CC6.6–CC6.7

External threat protection, transmission protection

Partial — encryption of authentication information specifically

No

CC6.8

Malware prevention

No

No

If you've read our companion piece on SOC 2 Security Criteria: Comprehensive Control Implementation, you already have the full CC1–CC9 map. This article and its sibling together are the deep dive on CC6.1 through CC6.3 specifically — split along the mechanism/workflow line described above, so you can build both halves without duplicating effort or leaving a gap between them.

The diagram above is the mental model for the rest of this article: authentication answers "is this really who it claims to be," authorization answers "is this identity allowed to do this specific thing," and everything after that — session management, remote access, encryption — exists to keep both answers trustworthy for as long as the session lasts, and to leave a record an auditor can independently reperform.

What "logical security" means, and why it's the technical core of CC6

Access control splits cleanly into two domains: physical access control governs who can walk into a building, data center, or server room, and logical access control governs who can authenticate into a system, application, network, or dataset regardless of their physical location. CC6.4 covers the former; CC6.1 through CC6.3 cover the latter, and it's logical access — not physical — that dominates a modern SOC 2 examination, because for most SaaS and cloud-native service organizations, the system boundary is almost entirely digital. A candidate for Meridian's vendor list doesn't care whether Corrallis's office has a badge reader. They care whether the systems processing their fleet data can only be reached by people and services that proved who they are and were authorized for exactly what they touched.

Logical security rests on two sequential questions, and getting the sequence right matters more than it sounds like it should. Authentication always comes first: verifying that a claimed identity — a human, a service account, an API client — is who or what it says it is. Authorization always comes second: once an identity is verified, deciding what that identity is permitted to do. Systems that blur this sequence — granting broad access because someone authenticated successfully, without a distinct authorization decision layered on top — are exactly where CC6.3 exceptions like Elena's support engineer's standing database rights come from. Authentication proved the engineer was who she claimed to be. Nothing downstream asked whether she should have production write access at all.

Authentication: proving identity before anything else happens

Authentication mechanisms vary enormously in the strength of the guarantee they provide, and a mature logical security program rarely relies on just one. The table below compares the methods most SOC 2 service organizations combine, roughly in ascending order of the assurance they provide against credential-based attacks.

Authentication Method

How It Works

Primary Strength

Primary Weakness

Typical Use Case

Password / knowledge factor

User supplies a memorized secret matched against a stored (hashed) value

Universal, low implementation cost

Reusable, phishable, guessable, often reused across services

Baseline factor, always paired with MFA

One-time passcode (OTP) via SMS

A code texted to a registered phone number, entered at login

Widely understood by end users

Vulnerable to SIM-swap and interception; not phishing-resistant

Lowest-friction MFA option, being phased out for higher-risk use cases

TOTP authenticator app

Time-based code generated by an app (e.g., Google Authenticator, Authy) from a shared secret

No cellular dependency, resistant to SIM-swap

Still phishable via real-time relay attacks; shared secret must be protected

Standard MFA for most SaaS logins

Push notification

App on a registered device prompts approve/deny for each login attempt

Fast, low user friction

Vulnerable to "MFA fatigue" — users approving prompts they didn't initiate

Enterprise SSO and mobile-first workforces

Hardware security key (FIDO2/WebAuthn)

Physical key performs public-key cryptographic challenge-response, bound to the specific origin

Phishing-resistant by design — a fake login page cannot complete the challenge

Requires hardware distribution and a lost-key recovery process

Privileged accounts, high-risk roles, regulated environments

Biometric

Fingerprint, face, or other physical characteristic, typically unlocking a local credential (e.g., platform authenticator)

High convenience, difficult to share involuntarily

Not portable across devices without re-enrollment; privacy considerations

Device unlock paired with a platform key, mobile MFA

Certificate-based / mutual TLS

Client presents a cryptographic certificate issued by a trusted CA

Strong for machine-to-machine and managed-device authentication

Certificate lifecycle (issuance, rotation, revocation) requires dedicated tooling

Service-to-service auth, managed corporate devices

API key / shared secret

A static string presented with each request to identify a service or integration

Simple to implement

If leaked, provides standing access until manually rotated; rarely paired with a second factor

Machine identities, third-party integrations

No single row in that table is sufficient on its own for an in-scope production system. The pattern that survives audit sampling combines something the user knows (a password, ideally checked against breached-credential lists rather than judged on complexity alone) with something the user has (an authenticator app, push notification, or hardware key) — which is the practical definition of multi-factor authentication auditors are testing for under CC6.1.

Password policy: from complexity theater to real defense

Password policy is the control area where I see the widest gap between what companies still write into policy documents and what actually reduces risk. The traditional approach — mandatory 90-day rotation, a mix of uppercase, lowercase, numbers, and symbols — was largely abandoned by NIST's own guidance (SP 800-63B) years ago, because it turns out those rules push users toward predictable patterns ("Summer2024!" becoming "Fall2024!" ninety days later) without meaningfully raising the cost of a real attack. Auditors increasingly expect to see a policy that reflects current practice, not a decade-old checklist.

Policy Element

Legacy Approach

Current Best Practice

Minimum length

8 characters

12–16 characters minimum, longer for privileged accounts

Complexity rules

Mandatory mix of character classes

Length prioritized over composition rules; passphrases encouraged

Rotation

Forced change every 60–90 days

No forced periodic rotation unless compromise is suspected

Breach screening

None

Passwords checked against known-breached credential databases at set time and on change

Reuse prevention

Track last 5–10 passwords

Same, retained, but secondary to breach screening

Storage

Reversible or weakly hashed (MD5, unsalted SHA-1)

Salted, adaptive hashing (bcrypt, scrypt, or Argon2)

Lockout

Fixed attempt count, indefinite lockout

Progressive delay or rate limiting, avoiding user-triggered denial of service

The single highest-value change in that table, for companies still running a legacy policy, is dropping forced periodic rotation in favor of continuous breach screening — it removes a control that actively degraded password quality and replaces it with one that responds to real compromise signals instead of an arbitrary calendar.

"I still walk into readiness assessments where the written policy demands a password change every 60 days and a mandatory special character, and the client is proud of it. I have to explain that I'm not going to write a finding for dropping that requirement — I'd write one if they kept it and couldn't show breach screening in its place. The policy that reads as strictest on paper is sometimes the one doing the least real work." — Jonas Fairweather, Identity Architect, ClearPath Security Partners

Multi-factor authentication: the single highest-leverage control in CC6.1

If I had to point to one control that moves the needle on CC6.1 more than any other, it's MFA enforced without exception — including for administrative, service, and "break-glass" emergency accounts. The options differ meaningfully in the assurance they provide, and the strongest logical security programs treat MFA method selection as risk-tiered rather than one-size-fits-all.

MFA Option

Phishing Resistance

User Friction

Deployment Cost

Best Fit

SMS OTP

Low

Low

Low

Legacy fallback only; avoid for privileged or high-risk accounts

TOTP authenticator app

Medium

Low–Medium

Low

Default MFA for standard workforce accounts

Push notification with number matching

Medium–High

Low

Medium

Enterprise SSO deployments, mobile-managed fleets

Hardware security key (FIDO2/WebAuthn)

High

Low once enrolled

Medium–High (hardware distribution)

Admin accounts, engineers with production access, regulated data handlers

Platform authenticator / passkey (biometric-backed, device-bound)

High

Very Low

Low–Medium (built into modern OS/browsers)

Broad workforce rollout with strong phishing resistance and minimal friction

The exception pattern Renata Kucera, an audit partner I referenced in our companion CC1–CC9 article, flagged as the most common CC6.1 gap she still finds is MFA enforced for standard user logins but quietly exempted for administrative consoles, service accounts, or a "break-glass" account kept for emergencies. Those exempted accounts are precisely the ones with the most damage potential if compromised, and auditors specifically test for that exemption pattern because it's common enough to expect. The control statement that survives sampling is "MFA is enforced for all accounts without exception" — not "MFA is enforced for user accounts," which is exactly the gap that produced Elena Vasquez's CC6.1 finding on Corrallis's legacy reporting portal.

"The accounts companies forget to put MFA on are never the ones anyone thinks about day to day — the internal admin tool, the vendor portal login, the service account someone set up for a one-time migration three years ago that's still active. I ask every client the same question during a walkthrough: list every system that touches production or customer data, then tell me which ones don't have MFA. The list is never empty on the first pass." — Renata Kucera, Audit Partner, Kucera & Ames CPAs

Single sign-on and federated identity

Single sign-on consolidates authentication into one identity provider (IdP) that other applications trust, rather than asking users to maintain separate credentials — and separate MFA enrollments — per system. For a SOC 2 examination, SSO does more than reduce password fatigue: it centralizes authentication logging, makes MFA enforcement consistent across every connected application, and dramatically simplifies the deprovisioning story the sibling article covers, because disabling one IdP account cuts access to every federated system at once. The two protocols that dominate enterprise SSO deployments work differently enough that it's worth knowing which one a given integration actually uses.

Protocol

Primary Use

How Trust Is Established

Token Format

Common In

SAML 2.0

Web application single sign-on

XML-signed assertions exchanged between IdP and service provider

XML assertion

Legacy and enterprise SaaS, many B2B application integrations

OAuth 2.0

Delegated authorization (an app acting on a user's behalf)

Access tokens issued after user consent, scoped to specific permissions

Bearer token (often JWT)

API access delegation, "sign in with" consumer flows

OpenID Connect (OIDC)

Authentication layered on top of OAuth 2.0

ID token issued alongside the OAuth access token, cryptographically signed

JWT

Modern SSO for web and mobile applications

A practical distinction worth internalizing: SAML and OIDC both handle authentication (proving identity), while OAuth 2.0 on its own handles authorization delegation (letting an app act with specific permissions) rather than authentication — a distinction that gets blurred constantly in casual conversation but matters when you're documenting exactly what a given integration verifies. For CC6.1 evidence purposes, the artifact auditors want is the IdP's own authentication log, showing every login event, the MFA method used, and — critically — the absence of any application in scope that bypasses the IdP entirely. That last point is what caught Corrallis: the legacy reporting portal wasn't a gap in the SSO configuration, it was a system that had simply never been connected to the IdP at all, invisible to every control that assumed federation was universal.

"The riskiest system in almost every environment I've assessed isn't the one with weak SSO configuration — it's the one nobody remembered to connect to SSO in the first place. Federation only protects what's actually federated. An inventory of every system in scope, cross-referenced against which ones authenticate through the IdP, is the single fastest way to find a company's next CC6.1 finding before an auditor does." — Jonas Fairweather, Identity Architect, ClearPath Security Partners

Machine identities: API keys, service accounts, and certificates

Authentication controls conversations default to human users, but a meaningful share of the access CC6.1 governs belongs to non-human identities — service accounts, API keys, CI/CD pipeline credentials, and machine-to-machine certificates. These identities can't complete an MFA push notification, which means the controls that substitute for MFA in the human world have to be replaced with different mechanisms: rotation, scoped permissions, and centralized storage in a secrets manager rather than in code, config files, or chat messages.

Machine Credential Type

Common Risk

Management Practice

Rotation Cadence

Static API key

Long-lived, often over-scoped, easily leaked into logs or repositories

Store in a dedicated secrets manager (e.g., vault service), never in source code

90 days or shorter; immediately on suspected exposure

Service account password

Shared across multiple integrations, rarely reviewed

Dedicated non-human account per integration, never shared across services

90 days or on personnel change with knowledge of it

Client certificate (mTLS)

Long validity periods, unclear ownership after issuance

Centralized certificate authority with an inventory tied to an owning system

12 months or shorter, with automated renewal

CI/CD pipeline credentials

Broad blast radius if compromised — often has production deploy rights

Short-lived, scoped tokens issued per pipeline run rather than a standing credential

Per-run (ephemeral) where the platform supports it

Cloud provider IAM role/key

Excess permissions attached "to be safe," rarely audited

Scoped to least privilege per workload, reviewed alongside human access reviews

90 days for static keys; prefer short-lived role assumption over static keys entirely

The direction of travel across all five rows in that table is the same: move from static, long-lived, broadly-scoped credentials toward short-lived, narrowly-scoped, centrally-managed ones. A secrets manager that issues a database credential valid for the duration of a single pipeline run closes an entire category of exposure that a static key checked into a repository years ago never closes — because there's nothing long-lived left to leak. Machine identity credentials belong in the same IAM governance program as human accounts, reviewed on the same cadence, because an auditor's CC6.1 sample doesn't distinguish between a compromised human password and a compromised API key — the impact on production data is identical either way.

Authorization: turning "who are you" into "what can you do"

Authentication and authorization get used interchangeably in casual conversation and tested as two completely separate control questions in an audit. Authentication is a yes/no gate: did this identity prove itself? Authorization is a much larger, continuously evaluated question: given a verified identity, which specific resources, actions, and data can it touch? CC6.3 lives almost entirely in this second question, and the model an organization chooses to answer it — how permissions get defined, assigned, and evaluated — shapes both how defensible the access control program is and how expensive it is to operate.

Authorization Model

How Permissions Are Assigned

Strength

Weakness

Typical Fit

Discretionary access control (DAC)

Resource owner grants access at their own discretion

Simple, fast for small teams

No central visibility, permissions sprawl quickly, hard to audit at scale

Very small teams, informal file-sharing systems

Mandatory access control (MAC)

Access determined by fixed security labels/classifications set centrally, users cannot override

Extremely strong, consistent enforcement

Rigid, high administrative overhead, poor fit for fast-moving SaaS environments

Government, defense, highly classified environments

Role-based access control (RBAC)

Permissions bundled into roles; users assigned to roles matching their job function

Predictable, auditable, straightforward to review

Role explosion or overly broad roles if not designed carefully

Most SaaS and mid-market service organizations

Attribute-based access control (ABAC)

Permissions evaluated dynamically against attributes (user department, data sensitivity, time, location, device posture)

Highly granular, adapts to context automatically

More complex to design, test, and explain to an auditor

Organizations with complex data-sensitivity tiers or regulatory segmentation needs

Most SOC 2 service organizations land on RBAC as the primary model, layering a handful of ABAC-style conditions — device posture checks, network location restrictions, time-of-day limits for privileged operations — on top of it rather than replacing it outright. Pure ABAC systems are powerful but expensive to build and, in my experience, harder to evidence cleanly for an auditor, because "the policy engine evaluated these seven attributes and produced this decision" is a fundamentally less legible artifact than "this user is assigned to this role, and this role has these permissions." The pragmatic sweet spot most companies actually operate in is RBAC for the baseline permission structure with targeted attribute-based rules layered on top for the small number of decisions — like restricting production database access to corporate-managed devices only — that a role alone can't express cleanly.

Role design and least privilege in practice

RBAC's strength depends entirely on how well the roles themselves are designed, and this is exactly where Corrallis's second finding originated: a role named "Engineering" that had accumulated permissions over eighteen months of ad hoc additions until it granted production database administrator rights to every engineer, including a support engineer who had been reclassified into the role during a reorg and never had her permissions re-scoped. Least privilege — granting only the access required to perform a specific job function, nothing more — is the design principle CC6.3 tests directly, and role granularity is the lever that determines whether an organization can actually deliver it.

Role Design Maturity

Characteristic Pattern

Audit Outcome

Flat/broad roles

A small number of catch-all roles (e.g., "Engineering," "Support," "Admin") granting wide permission sets

High risk of CC6.3 findings; individual users routinely over-permissioned relative to actual job function

Department-aligned roles

Roles mapped to org chart departments, still relatively broad within each department

Moderate risk; better than flat roles but still grants access unrelated to specific job duties

Function-aligned roles

Roles scoped to specific job functions within a department (e.g., "Support — Read-Only Customer Data" vs. "Engineering — Production Deploy")

Low risk; permissions map closely to actual duties, easier to defend in a walkthrough

Function-aligned roles with attribute conditions

Function-aligned roles further restricted by context (managed device, approved network, time window)

Lowest risk; combines RBAC legibility with ABAC precision for the highest-sensitivity actions

The fix Elena's team implemented split "Engineering" into six function-aligned roles — including a new "Support Engineering" role with read-only access to a masked subset of production data and zero database administrator rights — and added a quarterly certification requiring each role owner to confirm, in writing, that the permission set still matched the role's actual function. That certification workflow, and the broader cadence of reviewing who holds which role, is where this article's scope ends and the sibling article's begins.

"Role explosion and role laziness are the same underlying failure pointing in opposite directions. Too many hyper-specific roles becomes unmanageable to review; too few broad roles becomes indefensible to justify. The sweet spot is roles that map to something a non-technical manager could describe in one sentence — 'this role lets support engineers see customer data but not change it' — because if you can't describe it that simply, the auditor's walkthrough question is going to expose the gap." — Naomi Osei, CISO, Trellis Health Data

Where authorization mechanics end and privilege administration begins

It's worth being explicit about the handoff, because the two articles are meant to be read together. This article covers the architecture of authorization — the model (RBAC, ABAC), the role design principles, and the technical enforcement that makes a permission decision real inside a system. SOC 2 Access Controls: User Management and Privilege Administration covers the governance wrapped around that architecture — who approves a new role assignment, how privileged access gets provisioned with time-boxed elevation rather than standing rights, how the quarterly certification workflow described above actually gets scheduled and tracked to completion, and how access gets removed when someone changes roles or leaves. Build the architecture described in this article first; the governance workflow in the sibling article has nothing durable to govern without it.

Session management: securing the window after authentication succeeds

Authentication and authorization decisions aren't one-time events — they establish a session that persists until something ends it: a timeout, a logout, a forced re-authentication, or a detected anomaly. CC6.1 evidence increasingly includes session configuration, because a system that authenticates rigorously but then leaves sessions open indefinitely has only solved half the problem. An attacker who steals a valid session token doesn't need to defeat MFA at all — they inherit whatever access the session already has.

Session Control

What It Does

Typical Setting

Why It Matters for CC6

Idle timeout

Ends a session after a period of inactivity

15–30 minutes for standard access; 5–15 minutes for privileged/admin sessions

Limits the window an unattended, authenticated device remains exploitable

Absolute session timeout

Ends a session after a fixed duration regardless of activity

8–24 hours, tied to a typical work shift

Forces periodic re-authentication even for continuously active sessions

Concurrent session limits

Restricts how many active sessions a single account can hold at once

1–3 concurrent sessions for standard accounts

Reduces the impact of credential sharing or a second, attacker-controlled session

Re-authentication for sensitive actions

Requires a fresh authentication (often with MFA) before a high-risk action, even mid-session

Required before permission changes, financial transactions, data export

Prevents a hijacked session from silently escalating privilege or exfiltrating data

Token/cookie expiration and rotation

Session tokens expire and rotate rather than remaining valid indefinitely

Access tokens short-lived (minutes–hours); refresh tokens rotated on use

Limits the value of a stolen token and detects reuse of a revoked one

Anomaly-based session termination

Automated detection of impossible-travel, device change, or behavioral anomaly forces re-authentication

Triggered by identity platform risk scoring

Catches session hijacking that a static timeout alone would miss

The evidence auditors sample for session controls tends to be configuration exports rather than narrative — IdP or application settings showing the enforced timeout values, and a sample of session logs demonstrating those settings actually terminated sessions as configured, not just that the setting exists in a policy document somewhere. A stated 30-minute idle timeout that a walkthrough test shows never actually fires is a worse finding than no stated timeout at all, for the same reason an unenforced password rotation SLA is worse than none: it demonstrates the gap between documented control and operating control that Type II testing exists specifically to catch.

Remote access: extending logical security beyond the office network

Remote access has stopped being a special case for most SOC 2 service organizations — for a fully remote or hybrid workforce, "remote access" and "normal access" are the same thing, which raises the bar on what CC6.1 expects rather than lowering it. The mechanisms below aren't mutually exclusive; many organizations run more than one depending on the sensitivity of the system being reached.

Remote Access Method

How It Works

Strength

Weakness

Best Fit

Traditional VPN

Encrypted tunnel granting broad network-level access to an internal network segment once connected

Familiar, mature tooling

Broad network access once connected — a compromised VPN credential can reach far more than intended

Legacy on-premises infrastructure, smaller flat networks

Zero trust network access (ZTNA)

Per-application, per-session access broker that authenticates and authorizes each connection individually rather than granting network-level trust

Minimizes blast radius, integrates naturally with zero trust architecture and network segmentation

Requires more upfront architecture and application-by-application configuration

Cloud-native and hybrid environments, especially with sensitive production systems

Jump host / bastion

A single hardened, monitored host that all administrative access to sensitive systems must pass through

Centralizes logging and monitoring for privileged remote sessions

Single point of failure if not itself hardened and monitored closely

Administrative access to production databases and infrastructure

Managed device requirement

Access to sensitive systems restricted to corporate-managed, compliance-checked devices

Adds device posture as an authorization attribute, blocking unmanaged/personal devices

Requires device management infrastructure and enrollment discipline

Any organization handling regulated or highly sensitive data remotely

Remote desktop / RDP with gateway

Brokered remote desktop sessions to a controlled gateway rather than direct host exposure

Centralizes access, avoids exposing RDP directly to the internet

Historically a high-value attack target if the gateway itself is misconfigured

Organizations still running significant on-premises infrastructure remotely

The architectural shift most mature programs are making is from VPN-style network-level trust toward ZTNA-style per-application access brokering — a direct extension of the zero trust principle referenced earlier in this article, treating every remote connection as unverified until it's explicitly authenticated and authorized, regardless of whether the user is on the corporate network, a home network, or a coffee shop's. For a distributed workforce, that shift also simplifies the CC6.1 evidence story considerably: instead of proving a flat VPN network was segmented correctly after the fact, you're proving each individual access decision was made explicitly and logged at the point of connection.

"VPN access used to mean 'you're basically inside the building now.' That model made sense when most of the workforce actually was inside the building. It doesn't make sense anymore, and auditors have started asking pointed questions about what a VPN connection actually grants once it's established — not just whether MFA gates the connection itself." — Jonas Fairweather, Identity Architect, ClearPath Security Partners

Encryption of authentication information

CC6.1 doesn't just expect authentication to happen — it expects the credentials and session tokens underpinning that authentication to be protected against exposure themselves, both while stored and while moving across a network. This is a narrower, more specific question than general data encryption: it's about the passwords, session tokens, API keys, and certificates that authentication and authorization depend on, and whether those specific artifacts are protected to a standard that assumes a breach of the storage layer or network path will still fail to yield usable credentials.

Authentication Artifact

At-Rest Protection

In-Transit Protection

Common Failure Pattern

User passwords

Salted, adaptive hashing (bcrypt, scrypt, Argon2) — never reversible encryption or plain storage

TLS 1.2+ for every authentication request, no exceptions for internal traffic

Legacy systems using unsalted or fast-hash algorithms (MD5, unsalted SHA-1) inherited from early architecture decisions

Session tokens / cookies

Encrypted at rest if persisted server-side; marked HttpOnly and Secure if stored client-side

TLS-only transmission, never sent over unencrypted HTTP

Tokens with excessive lifetime, or transmitted over mixed HTTP/HTTPS content

API keys and secrets

Stored exclusively in a dedicated secrets manager, encrypted at rest with managed keys

TLS for transmission; never embedded in URLs or query strings that get logged

Secrets checked into source control history, visible in application logs, or shared via chat

MFA shared secrets (TOTP seeds)

Encrypted at rest, isolated from the authentication database itself where possible

Never transmitted after initial enrollment; enrollment itself happens over TLS with a short-lived QR/link

Backup codes or seed values stored in plaintext support tickets during account recovery

Certificates and private keys

Private keys stored in a hardware security module (HSM) or key vault, never on general-purpose file systems

Certificate provisioning happens over TLS-protected channels

Private keys distributed via email or shared drives during initial provisioning

Encryption at rest and encryption in transit are usually treated as CC6.6 and CC6.7 territory in the broader Common Criteria mapping, but they intersect directly with CC6.1 the moment the data being protected is a credential rather than customer content — an auditor testing CC6.1 will absolutely ask how passwords are hashed and where API keys live, because a perfectly designed authentication flow built on top of reversibly-encrypted or plaintext credential storage isn't actually providing the assurance CC6.1 requires. The fastest way to fail this test is a legacy authentication database inherited from an early product decision that nobody has revisited since — exactly the kind of system Corrallis's Django reporting portal turned out to be.

Build, buy, or blend: choosing authentication and authorization tooling

Almost every company building or hardening a logical security program eventually asks the same practical question: how much of this should be built in-house versus bought as a managed platform? The honest answer depends heavily on what's actually being decided — identity infrastructure and policy-engine tooling behave very differently from the case-by-case rules a security team layers on top of them.

Capability

Build In-House

Buy (Managed Platform)

Practical Recommendation

Core IdP / SSO infrastructure

Rare — high maintenance burden, security-critical, easy to get subtly wrong

Standard — dedicated identity platforms handle protocol compliance, uptime, and security patching

Buy; this is not a differentiating capability worth building

MFA enforcement policy

Configuration within the IdP, not custom code

Bundled with most IdP/SSO platforms

Buy, configure enforcement rules to match your risk tiers

RBAC role catalog and definitions

Always organization-specific

Platform provides the mechanism; the role design itself is always custom

Blend — buy the enforcement engine, build the role taxonomy

ABAC policy engine

Occasionally built for highly specific, proprietary data-sensitivity rules

Increasingly available as a feature of modern IAM/authorization platforms

Buy where available; build only for rules a platform genuinely can't express

Secrets management for machine credentials

Rare — reinventing key management is high-risk

Standard — dedicated secrets managers provide vaulting, rotation, and audit logging

Buy; treat as non-negotiable infrastructure

Session risk scoring / anomaly detection

Rare — requires substantial behavioral data and tuning

Available as a feature of enterprise identity platforms

Buy if budget allows; deprioritize below MFA and RBAC if resources are constrained

The pattern across every row is the same: buy the infrastructure that provides the enforcement mechanism, and build only the organization-specific configuration layered on top of it — the role taxonomy, the attribute conditions, the risk tiers. Companies that try to build core identity infrastructure from scratch, usually to save licensing cost early on, almost always end up migrating to a managed platform eventually anyway, and the migration itself becomes a project that consumes far more engineering time than the licensing fees it was meant to avoid. The exception worth naming is very early-stage companies with a handful of employees and a single cloud provider — at that scale, the cloud provider's native IAM tooling is often sufficient without adding a dedicated identity platform on top, and the sizing table earlier in this article reflects that.

"The build-versus-buy conversation almost always resolves itself once I ask one question: is this the thing our customers are paying us for, or is this table stakes every SaaS company needs? Identity infrastructure is never the former. I've never seen a deal close because a company built its own SSO protocol implementation instead of buying one." — Naomi Osei, CISO, Trellis Health Data

Common CC6.1–CC6.3 exceptions — and how to prevent them

The exceptions in this table come from the same handful of root causes appearing over and over across engagements: a system that was never brought into the centralized identity architecture, a role that grew broader than its job function over time, and a control that depends on someone remembering to do something manually rather than a system enforcing it automatically.

Exception

CC Reference

Root Cause

Prevention

A system in scope authenticates outside the centralized IdP/SSO

CC6.1

Legacy or internal tool never integrated during the original SSO rollout

Maintain a system inventory cross-referenced against IdP-connected applications; treat any gap as a blocking finding

MFA not enforced on administrative or service accounts

CC6.1

MFA rollout targeted standard user logins only, admin/service accounts assumed lower risk or technically exempted

Enforce MFA org-wide without exception; use hardware keys for accounts that can't support standard push/TOTP flows

A role grants access beyond what the assigned job function requires

CC6.3

Role permissions accumulated over time without a corresponding review; broad "starter" roles never refined

Design function-aligned roles from the outset; require a documented justification for any role change that broadens scope

Access granted without a documented authorization record

CC6.2

Verbal or informal approval (chat message, hallway conversation) never captured in a system of record

Require every access grant to originate from a trackable request with an approver recorded

Session timeout configured but not actually enforced

CC6.1

Setting exists in policy documentation but was never applied in the actual application/IdP configuration

Validate enforced settings against a live configuration export, not just the written policy

Static, long-lived API keys with no rotation history

CC6.1

Machine credentials created outside the standard IAM governance process during a one-off integration

Route all machine credential issuance through the same governance and inventory as human accounts

Password hashing algorithm below current standard

CC6.1, CC6.6

Inherited from early architecture; never revisited as the application matured

Include credential storage algorithm in the annual technical control review, not just policy language

"Every CC6.1 through CC6.3 exception I've written traces back to something that was true when it was built and stopped being reviewed after that. Nobody sits down and decides to leave a system off SSO or let a role grow too broad — it happens one small exception at a time, and the fix isn't a bigger policy document, it's a recurring inventory that forces the question back onto someone's calendar." — Renata Kucera, Audit Partner, Kucera & Ames CPAs

Evidence auditors pull for authentication and authorization controls

Every control described in this article is only as strong as the evidence behind it, and Type II testing leans heavily on techniques that confirm a control operated consistently across the full audit period rather than just existing on the day someone remembers to check.

Control Area

Evidence Auditors Typically Pull

Evidence Technique

MFA enforcement

IdP configuration export showing MFA policy scope; login logs showing MFA challenge completed for a sample of authentication events

Inspection + reperformance

SSO/federation coverage

System inventory cross-referenced against IdP-connected application list

Inspection

Password/credential storage

Configuration or code review confirming hashing algorithm in use; secrets manager configuration for API keys

Inspection

RBAC/ABAC design

Current role catalog or policy engine export, mapped to job functions

Inspection + inquiry

Least privilege

Sample of user permission sets compared against documented job function

Reperformance

Session controls

Application/IdP session timeout configuration; sample of session logs showing enforcement

Inspection + reperformance

Remote access

VPN/ZTNA configuration, access logs for a sample of remote sessions, device compliance status at time of connection

Inspection

Encryption of authentication data

TLS configuration/scan results; database schema or code confirming hashing algorithm for stored credentials

Inspection

Reperformance is the technique most likely to surface a real gap, because it's the one where the auditor independently recalculates the answer rather than accepting a dashboard's summary. If your internal tooling reports "MFA enforced for 100% of accounts" but the auditor's own sample of raw login logs finds even one authentication event without an MFA challenge, the dashboard doesn't win that argument — the raw evidence does. Build evidence collection so the underlying logs and configuration exports are available on their own, not just a summary layer sitting on top of them.

Sizing logical security controls to company stage

All of CC6.1 through CC6.3 apply regardless of company size — there's no headcount-based exemption in the Common Criteria — but what a proportionate implementation looks like scales sharply with team size, system complexity, and the sensitivity of the data in scope.

Company Stage

Authentication Approach

Authorization Approach

Remote Access Approach

Early-stage (under 25 employees)

Cloud IdP defaults, TOTP or push MFA enforced org-wide

Small number of broad RBAC roles, manually reviewed quarterly

Cloud provider's native remote access; managed device requirement for anyone touching production

Growth-stage (25–250 employees)

Dedicated SSO platform, hardware keys for admin/privileged accounts, machine credentials in a secrets manager

Function-aligned RBAC roles with a documented catalog, quarterly certification

ZTNA or jump-host access to production, VPN retired for sensitive systems

Enterprise-stage (250+ employees)

Passwordless/FIDO2 rollout across the workforce, continuous risk-based authentication

RBAC baseline with targeted ABAC conditions (device posture, data sensitivity, location)

Full zero trust architecture, no standing network-level trust for any remote connection

The mistake I see most often isn't picking the wrong approach for a company's current stage — it's still running the early-stage approach a year after crossing into growth-stage headcount, because nobody revisited the architecture until an audit forced the question. Revisit this table whenever headcount, system count, or the sensitivity of newly onboarded customer data crosses a meaningful threshold.

Case study: Corrallis Freight Analytics closes the Meridian deal

The cold open of this article left Elena Vasquez's team three weeks from fieldwork close with a CC6.1 exception on an unfederated legacy portal and a CC6.3 exception on an over-broad engineering role, both already baked into the audit period Meridian Fleet Systems' procurement team would eventually read about. What changed the outcome wasn't the exceptions disappearing — SOC 2 doesn't let a service organization erase something that happened during the period — it was what Corrallis built in response, and how quickly the remediation itself became verifiable.

Elena's team connected the legacy Django reporting portal to the corporate IdP within eight days, retiring its standalone login form entirely and enforcing hardware-key MFA for the three engineers who used it. In parallel, they split the flat "Engineering" role into six function-aligned roles, moved the support engineer in question into a read-only role scoped to masked customer data, and stood up a quarterly certification workflow requiring every role owner to reconfirm the permission set matched actual job function. Both fixes were operating — and generating evidence — before fieldwork closed, which let the auditor test the remediation directly instead of taking Corrallis's word for it.

Metric

Before Remediation

After Remediation

Systems in scope authenticating outside the IdP

1 (legacy reporting portal)

0

Accounts with production database admin rights unrelated to job function

4 identified in the sample

0

MFA coverage across in-scope systems

94% (excluding legacy portal)

100%, including hardware-key enforcement for admin/engineering roles

Meridian deal timeline impact

At risk of delay past board sign-off

Closed on original schedule

Contract value

$3.6M over 3 years

Closed at full value, no discount concession

Meridian's vendor risk lead told Elena afterward that the specificity of the remediation — not the absence of findings — was what moved the deal forward. A report showing two disclosed exceptions paired with dated, verified fixes demonstrated Corrallis could find a gap in its own logical security architecture and close it fast, which read as a stronger signal of program maturity than a report with no findings from a company whose controls had never been tested hard enough to surface one.

Case study: Halcyon Metrics moves the workforce to passwordless authentication

Halcyon Metrics, a marketing analytics SaaS company, spent two consecutive audit cycles absorbing MFA-fatigue-related findings: engineers approving push notifications reflexively, occasionally for logins they hadn't initiated themselves, and a support queue quietly filling with password reset tickets that consumed nearly a full-time headcount's worth of hours a month. Grant Okafor, Director of Platform Engineering, had watched a near-miss the previous year — an employee approved a push notification from an unfamiliar location during a late-night alert storm, later confirmed to be a credential-stuffing attempt against a reused password from an unrelated breach — and decided TOTP-and-push MFA had reached the limit of what it could reliably protect against phishing-adjacent attacks.

Halcyon's team rolled out platform-authenticator passkeys — device-bound, biometric-backed credentials resistant to phishing and credential replay by design — across the full workforce over a single quarter, retiring password-based login for every in-scope application except a small number of legacy integrations still queued for replacement. The rollout paired passkeys with hardware keys specifically for administrative and production-access roles, matching the tiered approach described earlier in this article's MFA comparison table.

Metric

Before Passwordless Rollout

After Passwordless Rollout

Password reset help desk tickets per month

~140

~12 (legacy integrations only)

Confirmed credential-stuffing/phishing login attempts flagged per quarter

9

0

MFA-fatigue-related support escalations per quarter

6

0 (push notifications retired for standard workforce logins)

CC6.1 exceptions in the following Type II report

1 (prior period, MFA method gap)

0

Average authentication time (user-reported)

~18 seconds (password + push)

~3 seconds (biometric passkey)

"We didn't set out to make login faster — that was a side effect. What we actually needed was to stop depending on a control that assumes users will always correctly distinguish a real login prompt from an attacker's. Passkeys took that judgment call out of the user's hands entirely, because a phishing site simply can't complete the cryptographic challenge no matter how convincing it looks." — Grant Okafor, Director of Platform Engineering, Halcyon Metrics

Case study: Ferrow Systems replaces flat RBAC with attribute-based conditions

Ferrow Systems, a healthtech data platform, had implemented RBAC early and never revisited the design as the company scaled past 150 employees. A CC6.3 audit sample found that the "Engineer" role — assigned to roughly 60 people across four sub-teams with genuinely different data needs — granted uniform access to a production financial reporting database that only the billing integrations team actually required. Sofia Lindqvist, Security Engineering Manager, inherited the finding and concluded that further role subdivision alone wouldn't solve the underlying problem: the company's data sensitivity boundaries didn't map cleanly onto job titles at all, and kept shifting as teams reorganized.

Sofia's team kept the existing RBAC roles as the baseline but layered targeted ABAC-style policy conditions on top for the highest-sensitivity systems: access to the financial reporting database now required both a matching role assignment and an attribute condition — team membership tagged specifically as "billing-integrations," verified against the HRIS in real time rather than a static role grant. The same pattern extended to a handful of other sensitive datasets, each gated by a narrow attribute condition instead of a bespoke new role.

Metric

Flat RBAC (Before)

RBAC + Targeted ABAC (After)

Accounts with standing access to the production financial database

60 (entire "Engineer" role)

7 (billing-integrations attribute match only)

Number of distinct roles required to express the same access boundaries

Would have required 14+ new roles under pure RBAC subdivision

5 existing roles + 3 attribute conditions

CC6.3 least-privilege exceptions in the following audit period

1 (this finding)

0

Time to reflect a team reorganization in access boundaries

2–3 weeks (manual role reassignment)

Same day (HRIS attribute sync)

"Pure RBAC kept forcing us into a choice between roles so broad they failed least privilege, or so granular we'd need dozens of near-duplicate roles nobody could keep straight. The attribute layer let us keep the simple role structure everyone already understood and add precision only where the data actually demanded it — which turned out to be a handful of systems, not the whole environment." — Sofia Lindqvist, Security Engineering Manager, Ferrow Systems

Logical security as a business differentiator, not just an audit requirement

It's tempting to treat CC6.1 through CC6.3 as a compliance checklist — enforce MFA, define some roles, pass the sample. That framing isn't wrong, but it undersells what a well-built logical security architecture actually produces. Every table in this article — the MFA method comparison, the RBAC-versus-ABAC tradeoffs, the session and remote-access controls — is also the exact material a security-conscious prospect's procurement team will probe during due diligence, whether or not a SOC 2 report is on the table yet. Corrallis Freight Analytics didn't just clear two audit exceptions; they turned a fast, evidenced remediation into a stronger signal of program maturity than a spotless report from a company that had never been tested hard enough to find a gap.

The organizations that get the most durable value from CC6.1–CC6.3 stop treating authentication and authorization as separate audit line items and start treating them as one continuous architecture: verify identity rigorously, grant access precisely, and protect both for as long as a session persists. Get that architecture right, and the Type II report becomes a byproduct of how access already works day to day — not a separate project someone scrambles to bolt on before renewal season.

If you're building out your logical security program from scratch or hardening an existing one, our SOC 2 Trust Services Criteria Mapping Template helps you connect each authentication and authorization control back to the specific CC6 point of focus it satisfies, and our SOC 2 Control Matrix / RACI Template gives you a starting structure for assigning ownership across authentication, authorization, session, and remote-access controls. If you're earlier in the process and still assessing where your gaps are, run our SOC 2 Gap Analysis Tool against your current identity architecture, or take the "Are You SOC 2 Ready?" quiz for a faster gut check before committing to a full readiness engagement. And if your team needs the policy language to pair with the technical controls described here, our SOC 2 Policy Pack covers the access control and authentication policy documentation auditors expect to see alongside the technical evidence.

For the process and governance layer this article deliberately left to its sibling, continue with SOC 2 Access Controls: User Management and Privilege Administration, and for the broader nine-area map both articles sit inside, revisit our SOC 2 Security Criteria: Comprehensive Control Implementation. If your organization is weighing SOC 2 against a certifiable framework for the same access control domain, our cross-pillar piece on ISO 27001 vs SOC 2: which one do you need walks through how the two approaches differ, and if you're pursuing both simultaneously, Running ISO 27001 and SOC 2 Together shows where the logical security work in this article overlaps with Annex A access control implementation instead of duplicating it.


Frequently asked questions

What's the difference between CC6.1, CC6.2, and CC6.3?

CC6.1 covers the logical access security software and infrastructure that restricts access to information assets — authentication mechanisms, in practice. CC6.2 covers registering and authorizing users prior to issuing credentials, consistent with policy. CC6.3 covers authorizing, modifying, or removing access based on roles and least privilege, with periodic review. This article focuses on the technical mechanisms behind all three; the request, approval, and review workflow sits in SOC 2 Access Controls: User Management and Privilege Administration.

Is MFA required for SOC 2 compliance?

SOC 2 doesn't name specific technologies as mandatory — the Common Criteria are outcome-based. In practice, MFA enforced without exception is close to a de facto requirement, because it's the single most consistently tested CC6.1 control and the exception pattern (MFA gaps on admin or service accounts) is one of the most common findings auditors report.

Do we need both RBAC and ABAC, or is one sufficient?

Most organizations don't need pure ABAC across the entire environment. The pattern that holds up best in practice is RBAC as the primary, auditable structure, with targeted attribute-based conditions layered on top for a small number of highest-sensitivity systems — exactly the approach Ferrow Systems used in the case study above.

Is SSO the same thing as MFA?

No, and conflating them is a common source of confusion. SSO consolidates where authentication happens — one identity provider trusted by many applications. MFA determines how strong that authentication is — requiring more than one factor. SSO without MFA still authenticates with a single factor; the strongest configuration combines both, federating authentication through one IdP that itself enforces MFA.

How does an auditor test whether least privilege is actually being followed?

Primarily through reperformance: pulling a sample of user accounts and independently comparing their actual permission set against their documented job function, rather than accepting a role catalog's description at face value. This is exactly the technique that surfaced Corrallis Freight Analytics' over-broad "Engineering" role in this article's opening case study.

Does a VPN satisfy CC6.1's remote access expectations on its own?

A VPN can be part of a compliant remote access architecture, but auditors increasingly probe what a VPN connection actually grants once established — broad network-level access is a weaker control than per-application access brokering. Many organizations are shifting toward ZTNA-style architectures specifically to tighten this gap.

How are passwords supposed to be stored to pass a SOC 2 examination?

Salted, adaptive hashing algorithms — bcrypt, scrypt, or Argon2 — never reversible encryption and never plaintext. An auditor testing CC6.1 or CC6.6 will typically confirm the hashing algorithm through code or configuration review rather than accepting a policy statement alone.

How long does it typically take to remediate CC6.1–CC6.3 findings during an active Type II observation period?

Based on the case studies in this article, technical remediation for a discrete finding — connecting a system to SSO, redesigning a role, enforcing MFA on a gap — commonly takes one to four weeks. What can't be compressed is the evidence history: an auditor still needs to observe the fixed control operating for a meaningful portion of the remaining audit period before concluding it's reliably effective, not just recently changed.

20

About the author

Cybersecurity Expert

Satish Kumar writes about cybersecurity, offensive security, and practical defense strategies on PentesterWorld.

Related Articles

Comments (0)

No comments yet. Be the first to share your thoughts!