open-vault/website/source/docs/vault-enterprise/replication/index.html.md

143 lines
6.3 KiB
Markdown
Raw Normal View History

2017-03-15 18:31:14 +00:00
---
layout: "docs"
page_title: "Vault Enterprise Replication"
2017-03-16 10:50:33 +00:00
sidebar_current: "docs-vault-enterprise-replication"
2017-03-15 18:31:14 +00:00
description: |-
Vault Enterprise has support for Replication, allowing critical data to be replicated across clusters to support horizontally scaling workloads.
---
# Vault Replication
## Overview
Many organizations have infrastructure that spans multiple datacenters. Vault
provides the critical services of identity management, secrets storage, and
policy management. This functionality is expected to be highly available and
to scale as the number of clients and their functional needs increase; at the
same time, operators would like to ensure that a common set of policies are
enforced globally, and a consistent set of secrets and keys are exposed to
applications that need to interoperate. Vault replication addresses both of
these needs.
Prior to Vault 0.7, Vault nodes could only be paired within clusters using a
common HA storage backend, where a single active node is backed up by a set of
standby nodes to ensure high availability. With replication, Vault replicates
large sets of its data to other nodes (or other HA clusters) to allow
horizontal scalability between clusters across geographically distributed data
centers.
## Architecture
Multiple Vault clusters communicate in a one-to-many near real-time flow.
The primary cluster acts as the system or record and asynchronously replicates
most Vault data to a series of remote clusters, known as secondary clusters or
2017-03-16 18:57:06 +00:00
secondaries.
2017-03-15 18:31:14 +00:00
The secondaries keep track of their own tokens and leases but share the
underlying configuration, policies, and supporting secrets (K/V values,
encryption keys for `transit`, etc). If a user action would modify underlying
shared state, the secondary forwards the request to the primary to be handled;
this is transparent to the client. In practice, most high-volume workloads
(reads in the `generic` backend, encryption/decryption operations in `transit`,
etc.) can be satisfied by the local secondary, allowing Vault to scale
relatively horizontally with the number of secondaries rather than vertically
as in the past.
All communication between primaries and secondaries is end-to-end encrypted
with mutually-authenticated TLS session, setup via replication tokens which are
exchanged during bootstrapping.
## What Is Replicated?
The data replicated in Vault 0.7 includes:
* Secrets
* Policies
* Configuration details for secret backends
* Configuration details for authentication backends
* Configuration details for audit backends
Note that secret, authentication, and audit backends can be marked "local"
which prevents them from being affected by replication.
Access tokens for secrets are not a part of the replication process, as tokens
are local to a cluster that has generated them. Similarly, dynamic secrets
(database credentials, etc.) are issued by and their leases are tracked by each
cluster.
By not replicating leases and tokens, we avoid having each client call be
forwarded to the primary to check token validity, which enables scaling
horizontally.
## Internals
Details on the internal design of the replication feature can be found in the
[replication
internals](https://www.vaultproject.io/docs/internals/replication.html)
document.
## Security Model
Vault is trusted all over the world to keep secrets safe. As such, we have put
extreme focus to detail to our replication model as well.
### Primary/Secondary Communication
When a cluster is marked as the primary it generates a self-signed CA
certificate. On request, and given a user-specified identifier, the primary
uses this CA certificate to generate a private key and certificate and packages
these, along with some other information, into a replication bootstrapping
bundle, a.k.a. a secondary activation token. The certificate is used to perform
TLS mutual authentication between the primary and that secondary.
This CA certificate is never shared with secondaries, and no secondary ever has
access to any other secondarys certificate. In practice this means that
revoking a secondarys access to the primary does not allow it continue
replication with any other machine; it also means that if a primary goes down,
there is full administrative control over which cluster becomes primary. An
attacker cannot spoof a secondary into believing that a cluster the attacker
controls is the new primary without also being able to administratively direct
the secondary to connect by giving it a new bootstrap package (which is an
ACL-protected call).
Vault makes use of Application Layer Protocol Negotiation on its cluster port.
This allows the same port to handle both request forwarding and replication,
even while keeping the certificate root of trust and feature set different.
### Secondary Activation Tokens
A secondary activation token is an extremely sensitive item and as such is
protected via response wrapping. Experienced Vault users will note that the
wrapping format for replication bootstrap packages is different from normal
response wrapping tokens: it is a signed JWT. This allows the replication token
to carry the redirect address of the primary cluster as part of the token. In
most cases this means that simply providing the token to a new secondary is
enough to activate replication, although this can also be overridden when the
token is provided to the secondary.
Secondary activation tokens should be treated like Vault root tokens. If
disclosed to a bad actor, that actor can gain access to all Vault data. It
should therefore be treated with utmost sensitivity. Like all
response-wrapping tokens, once the token is used successfully (in this case, to
activate a secondary) it is useless, so it is only necessary to safeguard it
from one machine to the next. Like with root tokens, HashiCorp recommends that
when a secondary activation token is live, there are multiple eyes on it from
generation until it is used.
Once a secondary is activated, its cluster information is stored safely behind
its encrypted barrier.
## Setup and Best Practices
A [setup guide](https://www.vaultproject.io/docs/guides/replication.html) is
available to help you get started; this guide also contains best practices
around operationalizing the replication feature.
## API
2017-03-16 18:57:06 +00:00
The Consul replication component has a full HTTP API. Please see the
[Vault Replication API](/docs/http/system/replication.html) for more
details.