Pitching a Secrets Management Service
I was recently asked how to pitch an internal secrets management service to a company that doesn’t have one. I am providing the fruit of my efforts here in the hope that my fellow travelers find it useful. That said, I provide no guarantee or warranty as to the accuracy or usefulness of the information contained herein for any purpose.
The Problem
As companies move more and more of their operations to interconnected systems, many challenges arise around identification and authentication for access to various data and services. Traditional access control mechanisms involve a publicly known component (usernames, public keys, etc) and a secret (passwords, private keys, etc). These mechanisms move the problem from id/authn to management of the secrets.
In the simplest cases, users memorize passwords. This mechanism quickly breaks down due to fundamentally flawed yet still enforced ideals around what a strong password is as well as limitations on human memory and even the basic assumption that there is always going to be a human in the system in the first place.
Requirements
The natural solution is a Secrets Management Service. This service must meet several requirements:
- Secrets (passwords, keys, certificates, etc) must be stored securely
- Secrets must be able to be created, read, updated, deleted, and verified
- Secrets must be versioned / lifecycled
- All operations must be accessible only to authenticated and authorized entities (human or otherwise)
- Granular permissions must support both individual and role-based access controls
- All operations must be recorded in a tamper resistant / evident audit trail
- All operations must be accessible through an easy-to-use API
- The service must be ACID compliant and highly-available
Build vs. Buy
Now, of course in 2018, we’re not the first ones to identify the need for this type of service. Many very intelligent and capable folks have created secrets management services and several are available on the public market, some as commercial products and others as open source projects. To appropriately evaluate the marketplace options and compare procurement, integration, and development efforts along with direct costs, the company should assemble the smallest possible task force which includes representation from:
Who | Why |
---|---|
Security Development / Engineering | Owns developing tools that are not bought or acquired as open source |
Security Operations / DevOps | Owns operating the Secrets Management Service and integrating with existing systems |
Product / Platform Engineering | Primary consumer of the Secrets Management Service |
Procurement / Finance | Owns the business and legal processes around acquiring commercial or open source software |
The decision of which pre-existing product or project (or none at all) to base the new service upon should not be taken lightly. It is well worth some extra time and effort upfront to perform proof-of-value with several potential solutions and compare their ease of deployment, integration, use, maintenance, etc. under real-world conditions with each other as well as the efforts required and advantages to develop a personally tailored solution in-house.
A non-exhaustive list of commercially available Secrets Management Services:
- AWS Secrets Manager
- Azure Key Vault
- Google Cloud KMS
- HashiCorp Vault Enterprise
- CyberArk Conjur Enterprise
A non-exhaustive list of open source Secrets Management Services:
- HashiCorp Vault (github)
- Nike Cerberus (github)
- Pinterest Knox (github)
- CyberArk Conjur (github)
- Square Keywhiz (github)
- Lyft Confidant (github)
Deliverables
Phase | Deliverables |
---|---|
Potential Base Product Selection |
|
Proof of Value |
|
Initial Production |
|
Iteration |
|
Codification / Evangelism |
|
Success Criteria
I break project success down into three categories:
Criteria | Details | The Path |
---|---|---|
Voluntary Adoption |
|
|
Makes Things Better |
|
|
Doesn't Make Things Worse |
|
|
Logistics / Expenses
This section is very company-specific, so I’m only able to provide some high-level guidance.
Phase | Logistics / Expenses |
---|---|
Potential Base Product Selection |
|
Proof of Value |
|
Initial Production |
|
Iteration |
|
Codification / Evangelism |
|
Bibliography
…aka: stuff other than the inline links that I watched and read while putting together this post