mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-20 06:01:10 +02:00
* conversion stage 1 * correct image paths * add sidebar title to frontmatter * docs/concepts and docs/internals * configuration docs and multi-level nav corrections * commands docs, index file corrections, small item nav correction * secrets converted * auth * add enterprise and agent docs * add extra dividers * secret section, wip * correct sidebar nav title in front matter for apu section, start working on api items * auth and backend, a couple directory structure fixes * remove old docs * intro side nav converted * reset sidebar styles, add hashi-global-styles * basic styling for nav sidebar * folder collapse functionality * patch up border length on last list item * wip restructure for content component * taking middleman hacking to the extreme, but its working * small css fix * add new mega nav * fix a small mistake from the rebase * fix a content resolution issue with middleman * title a couple missing docs pages * update deps, remove temporary markup * community page * footer to layout, community page css adjustments * wip downloads page * deps updated, downloads page ready * fix community page * homepage progress * add components, adjust spacing * docs and api landing pages * a bunch of fixes, add docs and api landing pages * update deps, add deploy scripts * add readme note * update deploy command * overview page, index title * Update doc fields Note this still requires the link fields to be populated -- this is solely related to copy on the description fields * Update api_basic_categories.yml Updated API category descriptions. Like the document descriptions you'll still need to update the link headers to the proper target pages. * Add bottom hero, adjust CSS, responsive friendly * Add mega nav title * homepage adjustments, asset boosts * small fixes * docs page styling fixes * meganav title * some category link corrections * Update API categories page updated to reflect the second level headings for api categories * Update docs_detailed_categories.yml Updated to represent the existing docs structure * Update docs_detailed_categories.yml * docs page data fix, extra operator page remove * api data fix * fix makefile * update deps, add product subnav to docs and api landing pages * Rearrange non-hands-on guides to _docs_ Since there is no place for these on learn.hashicorp, we'll put them under _docs_. * WIP Redirects for guides to docs * content and component updates * font weight hotfix, redirects * fix guides and intro sidenavs * fix some redirects * small style tweaks * Redirects to learn and internally to docs * Remove redirect to `/vault` * Remove `.html` from destination on redirects * fix incorrect index redirect * final touchups * address feedback from michell for makefile and product downloads
148 lines
5.6 KiB
Markdown
148 lines
5.6 KiB
Markdown
---
|
|
layout: "intro"
|
|
page_title: "Secrets Engines - Getting Started"
|
|
sidebar_title: "Secrets Engines"
|
|
sidebar_current: "gettingstarted-secret-backends"
|
|
description: |-
|
|
secrets engines are what create, read, update, and delete secrets.
|
|
---
|
|
|
|
# Secrets Engines
|
|
|
|
Previously, we saw how to read and write arbitrary secrets to Vault. You may
|
|
have noticed all requests started with `secret/`. Try using a different prefix -
|
|
Vault will return an error:
|
|
|
|
```text
|
|
$ vault write foo/bar a=b
|
|
# ...
|
|
* no handler for route 'foo/bar'
|
|
```
|
|
|
|
The path prefix tells Vault which secrets engine to which it should route
|
|
traffic. When a request comes to Vault, it matches the initial path part using a
|
|
longest prefix match and then passes the request to the corresponding secrets
|
|
engine enabled at that path.
|
|
|
|
By default, Vault enables a secrets engine called `kv` at the path `secret/`.
|
|
The kv secrets engine reads and writes raw data to the backend storage.
|
|
|
|
Vault supports many other secrets engines besides `kv`, and this feature makes
|
|
Vault flexible and unique. For example, the `aws` secrets engine generates AWS
|
|
IAM access keys on demand. The `database` secrets engine generates on-demand,
|
|
time-limited database credentials. These are just a few examples of the many
|
|
available secrets engines.
|
|
|
|
For simplicity and familiarity, Vault presents these secrets engines similar to
|
|
a filesystem. A secrets engine is enabled at a path. Vault itself performs
|
|
prefix routing on incoming requests and routes the request to the correct
|
|
secrets engine based on the path at which they were enabled.
|
|
|
|
This page discusses secrets engines and the operations they support. This
|
|
information is important to both operators who will configure Vault and users
|
|
who will interact with Vault.
|
|
|
|
## Enable a Secrets Engine
|
|
|
|
To get started, enable another instance of the `kv` secrets engine at a
|
|
different path. Just like a filesystem, Vault can enable a secrets engine at
|
|
many different paths. Each path is completely isolated and cannot talk to other
|
|
paths. For example, a `kv` secrets engine enabled at `foo` has no ability to
|
|
communicate with a `kv` secrets engine enabled at `bar`.
|
|
|
|
```text
|
|
$ vault secrets enable -path=kv kv
|
|
Success! Enabled the kv secrets engine at: kv/
|
|
```
|
|
|
|
The path where the secrets engine is enabled defaults to the name of the secrets engine. Thus, the following commands are actually equivalent:
|
|
|
|
```text
|
|
$ vault secrets enable -path=kv kv
|
|
$ vault secrets enable kv
|
|
```
|
|
|
|
To verify our success and get more information about the secrets engine, use the
|
|
`vault secrets list` command:
|
|
|
|
```text
|
|
$ vault secrets list
|
|
Path Type Description
|
|
---- ---- -----------
|
|
cubbyhole/ cubbyhole per-token private secret storage
|
|
kv/ kv n/a
|
|
secret/ kv key/value secret storage
|
|
sys/ system system endpoints used for control, policy and debugging
|
|
```
|
|
|
|
This shows there are 4 enabled secrets engines on this Vault server. You can see
|
|
the type of the secrets engine, the corresponding path, and an optional
|
|
description (or "n/a" if none was given).
|
|
|
|
~> The `sys/` path corresponds to the system backend. While the system backend
|
|
is not specifically discussed in this guide, there is plentiful documentation on
|
|
the system backend. Many of these operations interact with Vault's core system
|
|
and is not required for beginners.
|
|
|
|
Take a few moments to read and write some data to the new `kv` secrets engine
|
|
enabled at `kv/`. Here are a few ideas to get started:
|
|
|
|
```text
|
|
$ vault write kv/my-secret value="s3c(eT"
|
|
|
|
$ vault write kv/hello target=world
|
|
|
|
$ vault write kv/airplane type=boeing class=787
|
|
|
|
$ vault list kv
|
|
```
|
|
|
|
## Disable a Secrets Engine
|
|
|
|
When a secrets engine is no longer needed, it can be disabled. When a secrets
|
|
engine is disabled, all secrets are revoked and the corresponding Vault data and
|
|
configuration is removed. Any requests to route data to the original path would
|
|
result in an error, but another secrets engine could now be enabled at that
|
|
path.
|
|
|
|
If, for some reason, Vault is unable to delete the data or revoke the leases,
|
|
the disabling operation will fail. If this happens, the secrets engine will
|
|
remain enabled and available, but the request will return an error.
|
|
|
|
```text
|
|
$ vault secrets disable kv/
|
|
Success! Disabled the secrets engine (if it existed) at: kv/
|
|
```
|
|
|
|
Note that this command takes a PATH to the secrets engine as an argument, not
|
|
the TYPE of the secrets engine.
|
|
|
|
In addition to disabling a secrets engine, it is also possible to "move" a
|
|
secrets engine to a new path. This is still a disruptive command. All
|
|
configuration data is retained, but any secrets are revoked, since secrets are
|
|
closely tied to their engine's paths.
|
|
|
|
## What is a Secrets Engine?
|
|
|
|
Now that you've successfully enabled and disabled a secrets engine... what is
|
|
it? What is the point of a secrets engine?
|
|
|
|
As mentioned above, Vault behaves similarly to a [virtual filesystem][vfs]. The
|
|
read/write/delete/list operations are forwarded to the corresponding secrets
|
|
engine, and the secrets engine decides how to react to those operations.
|
|
|
|
This abstraction is incredibly powerful. It enables Vault to interface directly
|
|
with physical systems, databases, HSMs, etc. But in addition to these physical
|
|
systems, Vault can interact with more unique environments like AWS IAM, dynamic
|
|
SQL user creation, etc. all while using the same read/write interface.
|
|
|
|
## Next
|
|
|
|
You now know about secrets engines and how to operate on them. This is important
|
|
knowledge to move forward and learn about other secrets engines.
|
|
|
|
Next, we'll use the AWS backend to
|
|
[generate dynamic secrets](/intro/getting-started/dynamic-secrets.html).
|
|
|
|
[vfs]: https://en.wikipedia.org/wiki/Virtual_file_system
|