Loading...
Loading...
Initialize
init
commandDescription: Initialize a one time access token
Parameters:
Sub-command to run
format: ksm init <sub-command>
Sub-Commands:
Sub-Command
Description
default
Return the redeemed token as base64 encoded JSON
k8s
Return the redeemed token as Kubernetes secret script.
Initialize a one time access token and create a configuration profile for use with external integrations like Github Actions, Terraform and others. The output of the configuration can be generated as either base64 encoded JSON (default), or k8s format. Other KSM Developer SDKs, and applications, will understand configurations in this format.
ksm init default <TOKEN>
optional parameters:
--plain
do not base64 encode the configuration. Return plain JSON.
-h, --hostname
change the hostname
--skip-ssl-verify
- Do not verify the remote SSL certificate.
Initialize a one time access token into a Kubernetes secret script.
ksm init k8s <TOKEN>
optional parameters:
--name, -n
Name of the Kubernetes secret. Default is ksm-config.
--namespace, --ns
Name of the Kubernetes namespace. Default is default.
--apply
Automatically use kubectl to apply the secret. You will not see the secret script.
--immutable, -i
Make the secret immutable. Requires Kubernetes >= 1.21
-h, --hostname
change the hostname
--skip-ssl-verify
- Do not verify the remote SSL certificate.
Retrieve secrets and file attachments from the Keeper Vault
secret
commandDescription: Retrieve secrets from the vault and parse the response.
Parameters:
Sub-command to run
format: ksm secret <sub-command>
Sub-Commands:
List all secrets associated with the application
ksm secret list
optional parameters:
--json
return in JSON format
--uid <RECORD UID(s)>
get specific records by Record UID
-t, --title <REGEX>
get records with title matching the REGEX
-f, --folder <folder UID>
List only records in the selected folder UID.
-r, --recursive
list recursively all records in the selected folder UID including all subfolders.
-q, --query <JSONPath Query>
List only records matching the JSON Path query.
-v, --show-value
print matching value instead of the record title when using JSON Path query.
Example 1: Tabular format
Example 2: JSON format
Example 3: Search by Title while filtering by folder
Example 4: Search by field attributes using JSONPath
Get a secret from the vault, or specific fields from a secret
ksm secret get <RECORD UID>
requires at least one of the following parameter:
<RECORD UID>
- if retrieving one record, the record UID can be part of the command line argument.
-u, --uid <RECORD UID>
get a specific record by it's unique ID. Muliple -u can be used to get more than one record.
-t, --title <RECORD TITLE>
get a specific record by it's title.
optional parameters:
-f, --field <Field Type or Custom Field Label>
return the value of a specific field by label or type.
-q, --query <JSONPath Query>
get specific fields within a secret
--json
return in JSON format (required when --query used)
--raw
remove quotation marks from result
--force-array
return results as an array even if there is only one result
--unmask
show password values in table views
--inflate/--deflate
by default, references to other records will be loaded into a record. If --deflate is used, the reference records will not be loaded into the record.
Example 1: Returning a Secret to the console with tabular format
Example 2: Returning a Secret to the console with tabular format and password unmasked
Example 3: Retrieving the password field from a secret. There are 2 different methods of doing this.
Example 4: Retrieving a particular Custom Field value. There are 2 different methods of doing this.
Example 5: Retrieving raw JSON for the individual secret
Add a record to the vault. There is four ways to add a secret record: clone existing record, use visual editor, from a file, and from field arguments.
An editor with a UI can be set. For Windows and MacOS blocking may need to be enabled if the the editor instantly warns about placeholder still existing in the record template. This is because, without blocking, the CLI will attempt to process the record before you are finished editing.
On MacOS, blocking will wait until the application fully exits before processing the record data. This mean the application is closed and no longer in the dock, not that the editor window is closed.
ksm secret add editor --sf <STORAGE FOLDER UID> --rt <RECORD TYPE> [--title "TITLE"] [--notes "NOTES"] [-p] [-o yaml | json]
Required parameters:
--storage-folder-uid, --sf
The storage folder UID where the new secret record will be created.
--record-type, --rt
The record type of the secret record.
Optional parameters:
--title, -t
Title of the secret record.
--notes, -n
Notes associated with the secret record.
--password-generate, -p
Generate a password for any password field that does not have a value.
--output-format, -o
The output format of the template in the editor. Can either be JSON or YAML. The default is JSON.
--editor, -e
Override the editor. If using this parameter, the editor should cause blocking.
Example:
Launch an editor with a login record with placeholder values. Either set the value or replace the value altogther, save file and exist browser.
The file command is similar to editor command except done in two steps. The first step is getting a placeholder record file using the command ksm secret template. Then replacing the placeholder values and using this command to read in that file to create the record(s).
Using this command allows you create multiple records at one time.
ksm secret add file --sf <STORAGE FOLDER UID> -f <TEMPLATE FILE> [-p]
Required parameters:
--storage-folder-uid, --sf
The storage folder UID where the new secret record will be created.
--file, -f
Path and name of the record template file.
Optional parameters:
--password-generate, -p
Generate a password for any password field that does not have a value.
Example:
Save a bank account record type with placeholder values. Edit in your favorite editor and save. Then add using the ksm secret add file
command. Also generate a password in any blank password fields.
The field command set the values of a record via key/value arguments passed into the command.
ksm secret add field <--sf STORAGE FOLDER UID> <--rt RECORD TYPE> <--title "TITLE>"> [--notes "<NOTES>"] [-p] <"FIELDS" ...>
Required parameters:
--storage-folder-uid, --sf
The storage folder UID where the new secret record will be created.
--record-type, --rt
The record type of the secret record.
--title, -t
Title of the secret record.
FIELDS
- Key/Value pairs of the fields and their values. There can be multiple fields.
Optional parameters:
--notes, -n
Notes associated with the secret record.
--password-generate, -p
Generate a password for any password field that does not have a value.
Example:
The structure of the field
is [field section .
]<field type
>[[field label]
][. value key
]<=value
>
The field section
is where the field is to be set. 'f' is the standard fields, 'c' is the custom fields. If not included, the field default to the standard fields.
The field type
is required. For the standard field section, the field type must be part of the record type schema. If you attempt to add a field that doesn't exist, an error with be displayed. For the custom field section, any field type can be added. They will be ordered as they are added.
The field label
is optional. The field label is surrounded by []
directly after the field type
. For the custom field section, if the label is not set, the record field type is used in the UI.
The value key
is optional for field types that have complex value, such a phone
, bankAccount
, and name
. The value key
allows a value to be built in pieces instead of setting the value as a JSON value.
The value
begins after the = character. If the value is complex, then JSON is set as the value. If using JSON make sure the quote the field appropriately. If the JSON uses double quotes, then surround the field with single quotes. And if you need both, then you will need to escape the quotes with a backslash (\).
Rules
For standard fields, the order in which the fields are set does not matter. The fields will be ordered by the record type schema. Fields that do not exists in the record type schema standard fields cannot be added to the standard fields.
For custom field, the fields will be ordered the same as the order of the field arguments.
If you have multiple fields of the same type you will need to include a field label
to make them unique.
Value Key
Setting values using value key is useful when setting one field, however there are rules when setting another field of the same type or when the field accepts multiple values (ie phone).
If you are setting more than one field of the same type, the use a field label
will make the field unique.
If a field label
is not used, the prior values will overwrite the existing values.
JSON Values
A value can be set to a JSON value. For fields that allow multiple values, setting a JSON value will be consider a complete value. That means if a value key
comes after a JSON value, an additional value will be added to the field. The example below will create a phone field with two values.
If the JSON value is an array of JSON objects. the field is considered a completed field. This mean no additional values can be added the field. The following will result in an error about the fields last field not being unique. To make the field unique a field label
can be added.
Delete secrets associated with the application
ksm secret delete
--uid <RECORD UID(s)>
delete records by Record UID
optional parameters:
--json
return in JSON format
Example 1: Tabular format
Example 2: JSON format
The clone
command creates new record using data from an existing record with an option to set a new title.
ksm secret add clone --uid <RECORD UID> --title "TITLE"
Required parameters:
--uid, -u
The record UID of existing record.
Optional parameters:
--title, -t
Title of the new record.
Example:
Update an existing field within an existing secret.
ksm secret update --uid <RECORD UID>
Optional Parameters:
--field
- Update the value of a specific standard field in the secret.
--custom-field
- Update the value of a specific custom field in the secret.
--field-json
- Update the value of a specific standard field using JSON. Use for complex field values.
--custom-field-json
- Update the value of a specific custom field using JSON. Use for complex field values.
--title, -t
- Update the title of the secret.
--notes, -n
- Update the notes of the secret.
The update will match your key on existing field and custom field labels. Anything that appears after the '=' character is assumed to be the value. No escaping values is required, unless you are wrapping the parameter value is quotes.
Example 1: Basic use case
Example 2: If a key or field values contains a space, the entire parameter value needs to be wrapped in quotes. If your value contains quotes you need differnet quotes around the parameter value. For example, if your value contains JSON, use single quotes around the parameter value.
Upload attachment to an existing secret in the vault
ksm secret upload -u <RECORD UID> --file "<FILENAME>" --title "<FILE_TITLE>"
Parameters:
-u, --uid <RECORD UID>
UID of the secret to upload to (Required)
-f, --file <FILENAME>
file path to the file to upload (Required)
-t, --title
file title - if not provided defaults to the file name (without the path) (Optional)
Example:
Download attachments from secrets in the vault, such as SSH keys
ksm secret download -u <RECORD UID> --name "<FILENAME>" --file-output "<OUTFILE>"
Optional parameters:
-u, --uid <RECORD UID>
UID of the secret to download (Required)
--name <FILENAME>
name of the file to download (Required)
--file-output <FILENAME | STDOUT | STDERR>
where to write the file's content (Required)
--create-folders
create folder for filename path
Example:
Display record or field type template information.
Get the record type schema template and record type list.
ksm secret template record [-l] [-o json | yaml] [-f OUTPUT FILE] [RECORD TYPE]
Required one of the following parameters:
--show-list, -l
Display a list of all available record types.
RECORD TYPE
- Get the schema template for this record type.
Optional parameter
--output-format, -o
Output the schema as JSON or YAML. The default is JSON.
--output-file, -f
Output the schema to a file.
Example 1: Gettting a list of record types
Example 2: Getting the schema for the record type bankAccount
in YAML.
Get the field type schema and field type list.
Required one of the following parameters:
--show-list, -l
Display a list of all available field types.
FIELD TYPE
- Get the schema for this field type.
Optional parameter
--output-format, -o
Output the schema as JSON or YAML. The default is JSON.
Example 1: Getting a list if field types.
Example 2: Get a field type's schema in the default JSON
Test the magic environmental variable substitution for the ksm exec
command.
ksm secret notation <NOTATION FIELD PATH>
This sub-command allows you to test the environmental variable substitution method by returning the field value through a keeper://
template URL.
Example:
Generate valid pass code from a TOTP field from secret in the vault.
ksm secret tot <RECORD UID>
Required parameters:
<RECORD UID>
UID of the secret with a TOTP field
Example:
Generate a random password.
ksm secret password --length <PASSWORD LENGTH> --lc <# OF LOWERCASE CHARS> --uc <# OF UPPCASE CHARS> -d <# OF DIGITS> --sc <# OF SPECIAL CHARACTERS>
Optional parameters:
Overall length. Character group values will automatically be split equally from the length.
--length, -l
= Length of password. This will split the length between lowercase, uppercase, digits, and special characters.
Character groups
-lc
= Number of lowercase characters.
-uc
= Number of uppercase characters.
-d
= Number of digits
-sc
= Number of special characters.
Example:
If a record UID starts with "-" (dash / hyphen) it needs to be pre-pended with "--" to be used with the KSM CLI.
Example:
ksm secret get -- -id8QpE2ZAkdd4KlCfoWQ
*The UID in this example is not a real record UID
Manage folders from the Keeper Vault shared to KSM Applications
folder
commandDescription: List, create, update and delete folders from the vault. Works only within folders shared to KSM Applications. The folder command manages subfolders within existing shared folders.
Parameters:
Sub-command to run
format: ksm folder <sub-command>
Sub-Commands:
Sub-Command
Description
list
List all folders associated with the application
add
Add a new subfolder to the vault.
update
Rename a folder
delete
Delete the folders from the vault
List all folders associated with the application
ksm folder list
optional parameters:
--json
return results in JSON format
-f, --folder <folder UID>
List only folders/records in the selected folder UID.
-r, --recursive
list recursively all folders/records in the selected folder UID including all subfolders.
-l, --list-records
Include folder records info in the output.
Example 1: Tabular format
Example 2: JSON format
Create a new subfolder into the specified parent folder. KSM can create subfolders only in existing shared folders that are shared to the KSM App including their subfolders and cannot create new shared folder(s).
ksm folder add --parent-folder <FOLDER UID> --title <FOLDER TITLE>
Required parameters:
--parent-folder, -f
The parent folder UID where the new (sub)folder will be created.
--title, -t
Title of the new folder.
Example:
Rename a folder.
ksm folder update --folder <FOLDER UID> --title NEW_TITLE
Parameters:
--folder, -f
- Folder UID of the folder to rename.
--title, -t
- The new folder title.
Example:
Delete a folder in the vault (shared to the KSM App)
ksm folder delete <FOLDER UID>
Parameters:
<FOLDER UID>
UID of the folder to delete (Required)
-f, --force
force deletion of non-empty folders (Optional)
Example:
Synchronizes selected keys from Keeper Vault to an external secrets manager
Synchronization is one way only, using Keeper as a source of truth (read only) and updates only the remote key-value pairs in the external secrets manager.
sync
commandDescription: Import and synchronize secrets from the Keeper Vault with external secrets management systems
ksm sync --credentials <UID> --type [aws|azure|gcp|json] [--dry-run] [--preserve-missing] --map <KEY NOTATION>...
parameters:
-t, --type
Type of the target key/value storage. Available types are:
aws
- AWS Secrets Manager
azure
- Azure Key Vault
gcp
- GCP Secret Manager
json
- lists all pending sync operations including both source and destination values
-c, --credentials <uid>
UID of Keeper record with credentials to access destination key/value storage. The specified record must be shared with the Keeper Secrets Manager Application
optional parameters:
-n, --dry-run
Perform a trial run with no changes made.
-p, --preserve-missing
Preserve destination value when source value is deleted.
Select an external provider below to learn more about the integration.
Execute arbitrary system calls and replaces templated environment variables with Keeper vault secrets
exec
commandTo perform magic environment variable substitution, use the ksm exec
command.
Parameters:
System call or script to run with replaced environment variables
format: ksm exec -- <SYSTEM CALL OR SCRIPT>
Set a couple environment variables then execute the script:
Environment variables must be templated so that the CLI can find and replace them correctly. For example:
Below is a Linux bash script example. Before an application is started or a command is run, any environment variables that start with keeper://
will be replaced with secret values from the vault. Make sure to replace XXXX with the Record UID of the secret.
Here's a simple bash script that prints the secrets to the console:
And here's the output from executing the bash script with ksm exec
Configure the local Secrets Manager CLI environment
config
commandDescription: Configure the CLI debug output
Parameters:
Sub-command to run
format: ksm config <sub-command>
Sub-Commands:
Sub-Command
Description
color
Turn on or off color display
cache
Turn on or off the record cache
record-type-dir
Set the directory that hold custom record type schemas.
editor
Set an editor for visual adding new records.
show
Display current CLI settings
ksm config color <--enable | --disable>
--enable
Turn on color display
--disable
Turn off color display
The record cache creates a copy of your records and will be used if the CLI cannot access the Secrets Manager server. A copy of records are stored encrypted on local storage.
ksm config cache <--enable | --disable>
--enable
Turn on record caching
--disable
Turn off record caching
Set the record type schema directory containing custom record type schema files.
ksm config record-type-dir [-d DIRECTORY PATH] [--clear]
Options:
--directory, -d
Directory path
--clear
Remove the directory path
Set the editor to use when visually adding records.
ksm config editor [--app APPLICATION] [--blocking] [--process-name PROCESS NAME]
Options:
--application, --app
The editor application to launch.
--clear
Remove the directory path
These optionals can be used when setting the --application
.
--blocking
Enable to prevent the CLI from prematurely processing your record data.
--process-name
Used in blocking to find the real process name in the task list.
ksm config show
Display Keeper Secrets Manager CLI version information
Use the Keeper Commander CLI for hundreds of Vault and Admin Console commands
The Keeper Secrets Manage CLI is focused specifically on retrieving and updating secrets in the vault.
For all other commands, please refer to the Keeper Commander CLI:
Run the CLI using a Docker container.
The first step is pulling the CLI image.
The next step is running the container. By default the container is setup to run ksm
in shell mode.
The docker run command.
Flags to remove the container when it is done running. That will prevent a build up of inactive containers.
Flag to enable interactions with the container.
Mounts the current directory as /wd inside of the container and then set the working directory to /wd inside of the container. This will allow anything written to /wd to be written to the current directory outside of the container. This is useful when downloading a file.
Mounts a directory where we want to store, or have, the keeper.ini file. Then we passing the environmental variable telling the CLI where to write or read the keeper.ini file.
Name of the image.
The docker run command can be a little too much to type each time. It is recommend that aliases be created.
The above will launch the ksm shell.
The next alias is slightly different. At the end of the run command, the application ksm
is added. This will cause the ksm
not to start in shell mode.
The KSM CLI docker includes a volume mount to both GLIBC (most Linux distributions) and MUSL (Alpine Linux) CLI binaries. The volume is /cli
. This directory can be mounted into another container using the volumes_from
in docker-compose or -v
from command line docker. The ksm executables exists in directory based on the version of C library your Linux distribution is using.
/cli/glibc/ksm
- For standard GLIBC distributions like Ubuntu, Debian, Fedora, and CentOS.
/cli/musl/ksm
- For Alpine Linux.
For example, the following is simple framework showing how to access the CLI binary.
The init
service will load the CLI docker. The container will start, display a CLI splash screen, and then exit. Even though the container has stopped, the /cli
volume is still accessible.
The main
service will mount the CLI docker's volume under the directory /cli
using volumes_from
. The command
is overridden to run the GLIBC version of the KSM CLI. The command
is using the exec
function of the CLI. That will replace environment variables environment variable, that use the Keeper Notation, with a secret value. The exec
command, of the CLI, is running the printenv
application. That will print the environment variable, MY_LOGIN, that has been set to Keeper Notation, and has had its value replaced with a secret by the exec
command.
Utilizing custom record types in the Keeper Secrets Manager CLI
The Keeper Secrets Manager CLI has a list of default record types that are available for use. The CLI also allows for the creation of records using custom record types.
The below will export the "My Custom" record type, as JSON, to the file my_record_type.json
.
The JSON file should be copied into a directory called record_type
. The location of the record_type
directory is the same as the location of the keeper.ini
file. The record_type
doesn't need to be in the same directory as the keeper.ini
, it just need to be in locations where the CLI will check for the keeper.ini
.
The path defined by the environment variable KSM_INI_DIR
The current directory
The user's home directory
${HOME}
${HOME}/.config/ksm
$env:USERPROFILE
Various system directories
/etc
/etc/ksm
/etc/keeper
$env:APPDATA/Keeper
$env:ProgamData/Keeper
$env:ProgramFiles/Keeper
An alternative directory can be set via the config command.
Once the file is copied into the record_type
directory, it will be visible in the list of available record types.
At this point the custom record type can be used to create a new record.
If the custom record type name contains spaces, the name will need to be surrounded by quotes.