94e6a688ff
- Add the kms_library configuration stanza to Vault's command/server - Provide validation of keys and general configuration. - Add initial kms_library configuration documentation - Attempt at startup to verify we can read the configured HSM Library - Hook in KmsLibrary config into the Validate to detect typo/unused keys
60 lines
1.8 KiB
Plaintext
60 lines
1.8 KiB
Plaintext
---
|
|
layout: docs
|
|
page_title: Kms Library - Configuration
|
|
description: >-
|
|
The kms_library stanza allows node specific configuration for access to
|
|
KMS access libraries
|
|
---
|
|
|
|
# `kms_library` Stanza
|
|
|
|
The `kms_library` stanza isolates platform specific configuration for managed keys.
|
|
It defines logical names that are referenced within an API configuration keeping cluster
|
|
and node specific details separated along with deployment concerns for each.
|
|
|
|
At the moment managed keys are only available as a feature set within Vault Enterprise HSM edition.
|
|
|
|
## Requirements
|
|
|
|
The following software packages are required for Vault Enterprise HSM:
|
|
|
|
- PKCS#11 compatible HSM integration library. Vault targets version 2.2 or
|
|
higher of PKCS#11. Depending on any given HSM, some functions (such as key
|
|
generation) may have to be performed manually.
|
|
- The [GNU libltdl
|
|
library](https://www.gnu.org/software/libtool/manual/html_node/Using-libltdl.html)
|
|
— ensure that it is installed for the correct architecture of your servers
|
|
|
|
## Configuration
|
|
|
|
Multiple kms_library stanza's can be defined with the only limitation that the value for the
|
|
name key needs to be a unique value across all the stanza definitions in a case-insensitive
|
|
manner.
|
|
|
|
The type argument only supports "pkcs11" at the moment.
|
|
|
|
Example `kms_library` stanza:
|
|
|
|
```hcl
|
|
kms_library [TYPE] {
|
|
name = "<logical name>"
|
|
# ...
|
|
}
|
|
```
|
|
|
|
## `pkcs11` Parameters
|
|
|
|
These parameters apply to the `kms_library` stanza of type `pkcs11` in the Vault configuration file:
|
|
|
|
- `name` `(string: <required>)`: The logical name to be referenced by a managed key
|
|
- `library` `(string: <required>)`: The path to the PKCS#11 library shared object file.
|
|
|
|
For example:
|
|
|
|
```hcl
|
|
kms_library "pkcs11" {
|
|
name = "hsm1"
|
|
library = "/usr/lib/Cryptoki.so"
|
|
}
|
|
```
|