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.
flowchart LR
U[User or Service Requests Access] --> A{Authenticate}
A -->|Password + MFA| A1[Identity Verified]
A -->|SSO / Federated| A1
A -->|Certificate / API Key| A1
A -->|Failed| AR[Access Denied + Logged]
A1 --> Z{Authorize}
Z -->|RBAC Role Match| Z1[Permission Granted]
Z -->|ABAC Policy Match| Z1
Z -->|No Matching Role/Policy| ZR[Access Denied + Logged]
Z1 --> S[Session Established]
S --> M[Session Monitored: timeout, re-auth, anomaly detection]
M --> L[Logout / Session Expiry]
S -.audit trail.-> EV[(Evidence: logs, timestamps, access records)]
A -.audit trail.-> EV
Z -.audit trail.-> EVThe 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 |
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.
