2015-04-14 03:56:03 +00:00
|
|
|
---
|
|
|
|
layout: "docs"
|
|
|
|
page_title: "Lease, Renew, and Revoke"
|
New Docs Website (#5535)
* 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
2018-10-19 15:40:11 +00:00
|
|
|
sidebar_title: "Lease, Renew, and Revoke"
|
2015-04-14 03:56:03 +00:00
|
|
|
sidebar_current: "docs-concepts-lease"
|
|
|
|
description: |-
|
|
|
|
Vault provides a lease with every secret. When this lease is expired, Vault will revoke that secret.
|
|
|
|
---
|
|
|
|
|
|
|
|
# Lease, Renew, and Revoke
|
|
|
|
|
2018-10-15 16:56:24 +00:00
|
|
|
With every dynamic secret and `service` type authentication token, Vault
|
|
|
|
creates a _lease_: metadata containing information such as a time duration,
|
|
|
|
renewability, and more. Vault promises that the data will be valid for the
|
|
|
|
given duration, or Time To Live (TTL). Once the lease is expired, Vault can
|
|
|
|
automatically revoke the data, and the consumer of the secret can no longer be
|
|
|
|
certain that it is valid.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
|
|
|
The benefit should be clear: consumers of secrets need to check in with
|
|
|
|
Vault routinely to either renew the lease (if allowed) or request a
|
|
|
|
replacement secret. This makes the Vault audit logs more valuable and
|
|
|
|
also makes key rolling a lot easier.
|
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
All dynamic secrets in Vault are required to have a lease. Even if the data is
|
2015-04-14 03:56:03 +00:00
|
|
|
meant to be valid for eternity, a lease is required to force the consumer
|
|
|
|
to check in routinely.
|
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
In addition to renewals, a lease can be _revoked_. When a lease is revoked, it
|
|
|
|
invalidates that secret immediately and prevents any further renewals. For
|
2017-09-20 20:05:00 +00:00
|
|
|
example, with the [AWS secrets engine](/docs/secrets/aws/index.html), the
|
2018-02-14 14:44:34 +00:00
|
|
|
access keys will be deleted from AWS the moment a lease is revoked. This
|
2017-05-31 13:47:17 +00:00
|
|
|
renders the access keys invalid from that point forward.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
Revocation can happen manually via the API, via the `vault revoke` cli command,
|
|
|
|
or automatically by Vault. When a lease is expired, Vault will automatically
|
|
|
|
revoke that lease.
|
|
|
|
|
2017-09-15 13:02:29 +00:00
|
|
|
**Note**: The [Key/Value Backend](/docs/secrets/kv/index.html) which stores
|
2018-10-15 16:56:24 +00:00
|
|
|
arbitrary secrets does not issue leases although it will sometimes return a
|
|
|
|
lease duration; see the documentation for more information.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
|
|
|
## Lease IDs
|
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
When reading a dynamic secret, such as via `vault read`, Vault always returns a
|
|
|
|
`lease_id`. This is the ID used with commands such as `vault renew` and `vault
|
|
|
|
revoke` to manage the lease of the secret.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
|
|
|
## Lease Durations and Renewal
|
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
Along with the lease ID, a _lease duration_ can be read. The lease duration is
|
|
|
|
a Time To Live value: the time in seconds for which the lease is valid. A
|
|
|
|
consumer of this secret must renew the lease within that time.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
2018-11-06 22:42:20 +00:00
|
|
|
When renewing the lease, the user can request a specific amount of time they
|
|
|
|
want remaining on the lease, termed the `increment`. This is not an increment
|
|
|
|
at the end of the current TTL; it is an increment _from the current time_. For
|
|
|
|
example, `vault renew my-lease-id 3600` would request that the TTL of the lease
|
|
|
|
be adjusted to 1 hour (3600 seconds). Having the increment be rooted at the
|
|
|
|
current time instead of the end of the lease makes it easy for users to reduce
|
|
|
|
the length of leases if they don't actually need credentials for the full
|
|
|
|
possible lease period, allowing those credentials to expire sooner and
|
|
|
|
resources to be cleaned up earlier.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
The requested increment is completely advisory. The backend in charge of the
|
|
|
|
secret can choose to completely ignore it. For most secrets, the backend does
|
|
|
|
its best to respect the increment, but often limits it to ensure renewals every
|
|
|
|
so often.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
As a result, the return value of renewals should be carefully inspected to
|
|
|
|
determine what the new lease is.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
|
|
|
## Prefix-based Revocation
|
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
In addition to revoking a single secret, operators with proper access control
|
|
|
|
can revoke multiple secrets based on their lease ID prefix.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
Lease IDs are structured in a way that their prefix is always the path where
|
|
|
|
the secret was requested from. This lets you revoke trees of secrets. For
|
|
|
|
example, to revoke all AWS access keys, you can do `vault revoke -prefix aws/`.
|
2015-04-14 03:56:03 +00:00
|
|
|
|
2017-05-31 13:47:17 +00:00
|
|
|
This is very useful if there is an intrusion within a specific system: all
|
|
|
|
secrets of a specific backend or a certain configured backend can be revoked
|
|
|
|
quickly and easily.
|