open-vault/website/source/docs/concepts/response-wrapping.html.md
2016-06-14 05:59:50 +00:00

3 KiB

layout page_title sidebar_current description
docs Response Wrapping docs-concepts-response-wrapping Wrapping responses in cubbyholes for secure distribution.

Response Wrapping

In many Vault deployments, clients can access Vault directly and consume returned secrets. In other situations, it may make sense to or be desired to separate privileges such that one trusted entity is responsible for interacting with most of the Vault API and passing secrets to the end consumer.

However, the more relays a secret travels through, the more possibilities for accidental disclosure, especially if the secret is being transmitted in plaintext.

In Vault 0.3 the cubbyhole backend was introduced, providing storage scoped to a single token. The Cubbyhole Principles blog post described how this, along with the limited-use and time-to-live features of Vault tokens, could be used to securely authenticate a Vault client in such a way that the final Vault token was only readable by the end consumer, and malfeasance could be detected. The major downside to this operation was the need to write programs to perform this wrapping (and by extension, those programs need to be trusted).

Starting in 0.6, this concept is taken to its logical conclusion: almost every response that Vault generates can be automatically wrapped inside a single-use, limited-time-to-live token's cubbyhole. Details can be found in the cubbyhole backend documentation.

This capability should be carefully considered when planning your security architecture. For instance, many Vault deployments use the pki backend to generate TLS certificates and private keys for services. If you do not wish these services to have access to the generation API, a trusted third party could generate the certificates and private keys and pass the resulting wrapping tokens directly to the services in need. A simple API call will return the original PKI information; if the call fails, a security alert can be raised.

To look at the above example another way, response wrapping also frees end services from needing to generate a CSR and pass it to Vault through the trusted third party simply to ensure that the private key corresponding to the eventual certificate remains private. The end service can be assured that only it will see the generated private key and that any malfeasance is detected. This can significantly reduce the complexity of any relaying third party.

One final note: if the wrapped response is an authentication response containing a Vault token, the token's accessor will be made available in the returned wrap information. This allows privileged callers to generate tokens for clients and revoke these tokens (and their created leases) at an appropriate time, while never being exposed to the actual generated token IDs.