Authentication Maturity Model (Part 1)

Why Authentication?

At first glance, authN appears simple. All you’ve gotta do is roll out a standard for Single Sign-On (SSO) and API authN. Why is that interesting?

Meet Acme Corp.

Our scenario takes place at Acme Corp, a fictional company. Acme is based on a series of mostly-true stories.

image found online here

Opportunities for Failure

Before we get to a maturity model, I think it’s important to list some of the ways Acme could fail at authenticating user and API requests. These are illustrative, admittedly incomplete, and appear in no particular order.

  • Business developers create their own authentication service they don’t fully understand.
  • Security team uses SSO or CA integration as a lever to force thorough reviews and approval of everything the business developers are planning.
  • Business developers wait to add authN until their workload nears production.
  • Security team “approves” authN technology the business developers won’t use.
  • Business developers decide they are going to bring back Basic Auth.
  • Security team clings to old servers for SSO and API AuthN, thereby refusing to modernize.
  • Security team tries to force old technology into the cloud or a container.
  • Acme developers write their own SDKs for validating sessions or tokens.
  • Workloads don’t properly log attempts to subvert authentication mechanisms.
  • Business developers hard-code configuration into their apps and have to make source code changes every time they promote to another environment.
  • Non-prod environments have unrealistic security services.
  • Either team decides to wait for the “NewWhizBangy authentication feature from TheMagicPlatform”, thereby setting a date and feature fixed milestone.
  • Acme places a big bet on a technology that never materializes or matures.
  • Acme becomes paralyzed and avoids making authN decisions.

Success

We want to get quality app onboarding without scale constraints on the security team. Some call this “building guardrails”, others describe it like a highway.

Maturity 1 — Compliance Minimum

This level describes intent. In the authN domain, let’s say we require integration with robust authN services and avoid bespoke authN implementations. A starting point for that intent is a simple written policy, call it a 1-pager. Referring to our synaptic structures from the last post, we are strengthening the connection between App & Platform and Identity & Access Management.

The Policy

This policy applies to workloads created at Acme and exposed to users or as an API. Unless there’s an approved exception, all workloads subject to this policy will:

  1. Properly authenticate and log every request.
  2. Integrate with approved authN services using approved protocols.
  3. Integrate with authN services early in the lifecycle, prior to production.
  4. Use only approved and properly configured SDKs for token, cookie, and certificate validation.

What’s Required

Don’t be deceived, there’s a ton of work here. Some obvious next steps: defining what “properly” and “approved” mean, creating an exception process. Lots of collaboration required. Security can’t create something and “heave” it over the wall to the business.

Points of Friction / Where it will break

Maturity 1 doesn’t scale for anyone. It’s easy to see how, from the security team’s point of view, onboarding 100 apps will require 10x the work of 10 apps.

Maturity 2 — Industry Baseline

At this level, we begin to add scale and repeatability with technology. IMO, we want approved, automatic, and easily auditable (the 3A’s?) mechanisms for authenticating and logging requests.

  • The Security team collaborates with business groups to review and approve combinations of {workload type, environment, SDK, authN service binding}. Specific areas of interest include authN protocol, authN credential handling, SDK configuration and parameterization, request logging and log forwarding, API configuration, and session management.
  • The collaboration includes Security Operations for their domain knowledge. Specific areas of interest include log contents/encoding/format, proper forwarding, making sense of the log contents. Look for attempts to defeat authN mechanisms. Alerting on these signals is important. Some examples: new authN service appears (might be a malicious one), a new credential with root scope appears at authN service, an app receives requests with bad tokens. Even if these don’t reflect an attack, they create good information flow between groups.

For authN, I think the industry baseline is the ability to automatically configure workloads to properly authenticate requests while providing essential visibility to security operations.

Be On The Lookout (BOLO)

What’s Required (Example)

This maturity level requires code. Let’s describe some of the code (keep in mind these are needed for each environment and each workload type):

  • Automation that provisions authN services for apps
  • Automation that creates SDK configurations for apps
  • Log sinks/destinations that are configured and available

In my experience, most software has the shelf life of an organic banana.

For bananas, consume and replace is better than acquire and hold. The apps you’re building today will need to evolve over time, and you could reasonably plan for Istio sidecars. If that’s the case, then Java SDKs for token validation and session management leave the application. They move (in some form) into Istio sidecars that execute before application code in the request path. Maybe the Java SDKs morph to Golang, maybe the same SDKs move to another process wrapper. I don’t know.

Next Up

I haven’t talked much about testing. I think authN testing is essential for the next maturity level. If done properly, It increases quality, strengthens cross-group synaptic connections, and facilitates faster evolution.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store