HashiCorp Vault
HashiCorp Vault Pack.#
This Integration is part of theSecure, store, and tightly control access to tokens, passwords, certificates, and encryption keys for protecting secrets and other sensitive data using HashiCorp Vault. This integration fetches credentials. For more information, see Managing Credentials.
This integration was integrated and tested with version 1.12.2 of HashiCorp Vault.
#
AuthenticationThe integration supports the following auth methods:
#
Userpass Auth MethodYou are required to fill in only the Username / Role ID parameter with the username and Password / Secret ID parameter with the password. For more details, see the HashiCorp Vault documentation.
#
Token Auth MethodYou are required to fill in only the Authentication token parameter. For more details, see the HashiCorp Vault documentation.
#
AppRole Auth MethodYou are required to fill in only the Username / Role ID parameter with the role ID and Password / Secret ID parameter with the secret ID, and check the Use AppRole Auth Method checkbox. For more details, see the HashiCorp Vault documentation.
#
Configure HashiCorp Vault on Cortex XSOARNavigate to Settings > Integrations > Servers & Services.
Search for HashiCorp Vault.
Click Add instance to create and configure a new integration instance.
Parameter Description Required HashiCorp server URL (e.g., https://192.168.0.1:8200) The server URL True Use AppRole Auth Method Set as true if you are using the AppRole method for authentication. False Username / Role ID The username for the Hashicorp vault. False Password / Secret ID The password for the Hashicorp vault. False Authentication token A token for authentication for the Hashicorp vault. (Use instead of password and username.) False Vault enterprise namespace The namespace used for the vault by the user. False Trust any certificate (not secure) Mark as true to make unverified HTTP requests. False Use system proxy settings Mark as true to use proxy settings. False Fetches credentials Mark as true to fetch credentials to the Cortex XSOAR credentials vault. False CSV list of secrets engine types to fetch secrets from Possible values are KV, Cubbyhole, AWS. False Concat username to credential object name Should be used in case there are several secrets under the same folder in order to make the credential object unique. False Click Test to validate the URLs, token, and connection.
#
CommandsYou can execute these commands from the Cortex XSOAR CLI, as part of an automation, or in a playbook. After you successfully execute a command, a DBot message appears in the War Room with the command details.
#
hashicorp-list-secrets-enginesList all secrets engines that exist in HashiCorp Vault.
#
Base Commandhashicorp-list-secrets-engines
#
InputThere are no input arguments.
#
Context OutputPath | Type | Description |
---|---|---|
HashiCorp.Engine.Type | string | Secrets engine type. |
HashiCorp.Engine.Path | string | Secrets engine path in HashiCorp. |
HashiCorp.Engine.Description | string | Secrets engine description. |
HashiCorp.Engine.Accessor | string | Secrets engine accessor. |
#
Command example!hashicorp-list-secrets-engines
#
hashicorp-list-secretsList secrets (names) for a specified KV engine.
#
Base Commandhashicorp-list-secrets
#
InputArgument Name | Description | Required |
---|---|---|
engine | Engine path, e.g.,"secret/". Use the list-secrets-engines command to retrieve the engine path. | Required |
version | The version of the KV engine. Possible values are: 1, 2. Default is 1. | Optional |
#
Context OutputPath | Type | Description |
---|---|---|
HashiCorp.Secret.Path | string | Secret path |
#
Command example!hashicorp-list-secrets
#
hashicorp-get-secret-metadataReturns information about a specified secret in a specified KV V2 engine.
#
Base Commandhashicorp-get-secret-metadata
#
InputArgument Name | Description | Required |
---|---|---|
engine_path | KV Engine path, e.g., "kv/". | Required |
secret_path | Secret path, e.g., "secret". | Required |
#
Context OutputPath | Type | Description |
---|---|---|
HashiCorp.Secret.Created | date | Secret creation time. |
HashiCorp.Secret.Version.Destroyed | boolean | Is the version destroyed. |
HashiCorp.Secret.Version.Created | number | Version creation time. |
HashiCorp.Secret.Version.Deleted | date | Version deletion time. |
HashiCorp.Secret.Updated | date | Secret last updated time. |
HashiCorp.Secret.Engine | string | Secret engine type. |
HashiCorp.Secret.CurrentVersion | number | Secret current version. |
HashiCorp.Secret.Path | string | Secret path. |
#
Command example!hashicorp-get-secret-metadata engine_path=secret secret_path=test
#
hashicorp-delete-secretDeletes the data under a specified secret given the secret path. Performs a soft delete that allows you to run the hashicorp-undelete-secret command if necessary (for KV V2 engine).
#
Base Commandhashicorp-delete-secret
#
InputArgument Name | Description | Required |
---|---|---|
secret_path | Secret path, e.g., "secret". | Required |
engine_path | Engine path, e.g.,"secret/". | Required |
versions | CSV list of secret versions to delete. | Required |
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-delete-secret engine_path=secret secret_path=test versions=2
#
hashicorp-undelete-secretUndeletes (restores) a secret on HashiCorp (for KV V2 engine).
#
Base Commandhashicorp-undelete-secret
#
InputArgument Name | Description | Required |
---|---|---|
secret_path | Secret path, e.g., "secret". | Required |
engine_path | Engine path, e.g.,"secret/". | Required |
versions | CSV list of secret versions to undelete (restore). | Required |
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-undelete-secret engine_path=secret secret_path=test versions=2
#
hashicorp-destroy-secretPermanently deletes a secret (for KV V2 engine).
#
Base Commandhashicorp-destroy-secret
#
InputArgument Name | Description | Required |
---|---|---|
secret_path | Secret path, .e.g., "secret". | Required |
engine_path | Engine path, e.g.,"secret/". | Required |
versions | CSV list of secret versions to permanently delete. | Required |
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-destroy-secret engine_path=secret secret_path=test versions=2
#
hashicorp-disable-engineWhen a secrets engine is no longer needed, it can be disabled. All secrets under the engine are revoked and the corresponding vault data and configurations are removed.
#
Base Commandhashicorp-disable-engine
#
InputArgument Name | Description | Required |
---|---|---|
path | Path of the secrets engine to disable. | Required |
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-disable-engine path=secret
#
hashicorp-enable-engine***!hashicorp-disable-engine path=secret Enables a new secrets engine at the specified path.
#
Base Commandhashicorp-enable-engine
#
InputArgument Name | Description | Required |
---|---|---|
path | The path where the secrets engine will be mounted. | Required |
type | Type of backend, e.g., "aws". | Required |
description | Friendly description of the mount. | Optional |
default_lease_ttl | The default lease duration, specified as a string duration, e.g., "5s" or "30m". | Optional |
max_lease_ttl | The maximum lease duration, specified as a string duration, e.g., "5s" or "30m". | Optional |
force_no_cache | Whether to disable caching. | Optional |
audit_non_hmac_request_keys | CSV list of keys that will not be HMAC'd by audit devices in the request data object. | Optional |
audit_non_hmac_response_keys | CSV list of keys that will not be HMAC'd by audit devices in the response data object. | Optional |
listing_visibility | Whether to show this mount in the UI-specific listing endpoint. Default is hidden. Possible values are: unauth, hidden. | Optional |
passthrough_request_headers | CSV list of headers to add to allow list and pass from the request to the backend. | Optional |
kv_version | KV version to mount. Set to "2" for mount KV V2. Possible values are: 1, 2. | Optional |
local | Specifies if the secrets engine is a local mount only. Local mounts are not replicated, nor (if a secondary) removed by replication. Supported only in Vault Enterprise. | Optional |
seal_wrap | Enable seal wrapping for the mount. Supported only in Vault Enterprise. | Optional |
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-enable-engine path=secret type=AWS
#
hashicorp-list-policiesLists all configured policies.
#
Base Commandhashicorp-list-policies
#
InputArgument Name | Description | Required |
---|
#
Context OutputPath | Type | Description |
---|---|---|
HashiCorp.Policy.Name | string | Policy name. |
#
Command examplehashicorp-list-policies
#
hashicorp-get-policyGet information for a policy.
#
Base Commandhashicorp-get-policy
#
InputArgument Name | Description | Required |
---|---|---|
name | Policy name. | Required |
#
Context OutputPath | Type | Description |
---|---|---|
HashiCorp.Policy.Name | string | Policy name. |
HashiCorp.Policy.Rule.Path | string | Policy rule path. |
HashiCorp.Policy.Rule.Capabilities | unknown | Policy rule capabilities. |
#
Command example!hashicorp-get-policy name=secret
#
hashicorp-seal-vaultIf you suspect your data has been compromised, you can seal your vault to prevent access to your secrets.
#
Base Commandhashicorp-seal-vault
#
InputArgument Name | Description | Required |
---|
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-seal-vault
#
hashicorp-unseal-vaultUse a single master key share to unseal the vault. If the master key shares threshold is met, the key will attempt to unseal the vault. Otherwise, this API must be called until the threshold is met.
#
Base Commandhashicorp-unseal-vault
#
InputArgument Name | Description | Required |
---|---|---|
key | Single master key . | Optional |
reset | Reset the unseal project. Possible values are: true. | Optional |
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-unseal-vault
#
hashicorp-configure-engineConfigure a secrets engine to fetch secrets from.
#
Base Commandhashicorp-configure-engine
#
InputArgument Name | Description | Required |
---|---|---|
path | The engine path, e.g., "secret/". | Required |
folder | Specific folder to fetch secrets from, e.g., "secret-folder/". (Supported only for engine type KV2.) | Optional |
type | The engine type, e.g., "KV". Possible values are: KV, Cubbyhole, AWS. | Required |
version | The engine version (for KV engines). Possible values are: 1, 2. | Optional |
aws_roles_list | A comma-delimited list of roles names to generate credentials for. If not mentioned, we will generate credentials for all roles in the path.(used for only for AWS). | Optional |
aws_method | A parameter to indicate which type of request we would like to use to generate credentials(used for only for AWS). | Optional |
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-configure-engine type=type version=2 path=path ttl=3600
#
Human Readable OutputEngine configured successfully
#
hashicorp-reset-configurationReset the engine configuration.
#
Base Commandhashicorp-reset-configuration
#
InputArgument Name | Description | Required |
---|
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-reset-configuration
#
Human Readable OutputSuccessfully reset the engine configuration.
#
hashicorp-create-tokenCreate a new authentication token.
#
Base Commandhashicorp-create-token
#
InputArgument Name | Description | Required |
---|---|---|
role_name | The name of the token role. | Optional |
policies | CSV list of policies for the token. This must be a subset of the policies belonging to the token making the request, unless root. If policies are not specified, all policies of the calling token are applied to the new token. | Optional |
meta | A map of string-to-string valued metadata. This is passed through to the audit devices. | Optional |
no_parent | If true and set by a root caller, the token will not have the parent token of the caller. This creates a token with no parent. Possible values are: true, false. | Optional |
no_default_policy | If true the default policy will not be included in this token's policy set. Possible values are: true, false. | Optional |
renewable | If set to false, the token cannot be renewed past its initial TTL. If set to true, the token can be renewed up to the system/mount maximum TTL. Possible values are: true, false. | Optional |
ttl | The TTL (lease duration) period of the token, provided as "10m" or "1h", where hour is the largest suffix. If not provided, the token is valid for the default lease TTL, or indefinitely if the root policy is used. | Optional |
explicit_max_ttl | If set, the token will have an explicit max TTL applied to it. The maximum token TTL cannot be changed later, and unlike with normal tokens, updates to the system/mount max TTL value will have no effect at renewal time. The token can never be renewed or used past the value set at issue time. | Optional |
display_name | The display name of the token. | Optional |
num_uses | The maximum number of times the token can be used. Supply this argument to create a one-time-token, or limited use token. The value of 0 has no limit to the number of uses. | Optional |
period | If specified, the token will be periodic. It will not have a maximum TTL (unless an "explicit-max-ttl" is also set), but every renewal will use the given period. Requires a root/sudo token to use. | Optional |
#
Context OutputPath | Type | Description |
---|---|---|
HashiCorp.Auth.Token | string | Authentication token. |
HashiCorp.Auth.Policy | unknown | Authentication policies. |
HashiCorp.Auth.LeaseDuration | number | Authentication lease duration in seconds, 0 if indefinitely. |
#
Command example!hashicorp-create-token display_name=token explicit_max_ttl=3600 renewable=false
#
hashicorp-generate-role-secretGenerates and issues a new SecretID on an existing AppRole.
#
Base Commandhashicorp-generate-role-secret
#
InputArgument Name | Description | Required |
---|---|---|
role_name | The name of the AppRole. | Required |
meta_data | Metadata to be tied to the SecretID. | Optional |
cidr_list | Comma separated string or list of CIDR blocks enforcing secret IDs to be used from specific set of IP addresses. | Optional |
token_bound_cidrs | Comma-separated string or list of CIDR blocks. | Optional |
num_uses | Number of times this SecretID can be used, after which the SecretID expires. A value of zero will allow unlimited uses. | Optional |
ttl_seconds | Duration in seconds after which this SecretID expires. A value of zero will allow the SecretID to not expire. | Optional |
#
Context OutputThere is no context output for this command.
#
Command example!hashicorp-generate-role-secret role_name=my-role
#
Human Readable OutputSecretID:123
#
hashicorp-get-role-idRetrieves the AppRole ID for a specified role.
#
Base Commandhashicorp-get-role-id
#
InputArgument Name | Description | Required |
---|---|---|
role_name | The name of the AppRole. | Required |
#
Context OutputPath | Type | Description |
---|---|---|
HashiCorp.AppRole.Id | string | AppRole ID. |
HashiCorp.AppRole.Name | string | AppRole Name. |
#
Command example!hashicorp-get-role-id role_name=my-role
#
Human Readable OutputId | Name |
---|---|
role_id | role_name |
#
Additional Information- In order to fetch credentials from HashiCorp Vault, the relevant secrets engines must be configured with the integration so it can pull the data from them. To configure an engine with the integration, use the configure-engine command.
- The default fetch rate for fetch-credentials is 10 minutes. This is configurable with the server parameter vault.module.cache.expire
#
Known LimitationsCurrently the integration is able to fetch credentials from the following engines:
- K/V Versions 1,2
- Cubbyhole
- AWS
#
The following commands are limited to the K/V V2 engine:- hashicorp-list-secrets
- hashicorp-get-secret-metadata
- hashicorp-delete-secret
- hashicorp-undelete-secret
- hashicorp-destroy-secret