UiPath Documentation
automation-suite
2.2510
true
Automation Suite on OpenShift installation guide

Configuring HashiCorp Vault as a secretstore

Configure HashiCorp Vault as secretstore using Kubernetes or AppRole authentication methods.

You can configure HashiCorp Vault as a secretstore using either of the following auth methods:

  • Kubernetes Auth
  • AppRole Auth

HashiCorp Vault provides a KV (Key-Value) secrets engine for storing secrets.

By default, all sensitive data is defined in input.json. You can separate this data into two parts:

  • input.json - contains only configuration data.
  • HashiCorp Vault - stores credentials securely.
Note:

You cannot store certificate paths or certificate-related credentials as part of the secretstore.

Important:

All credentials referenced in input.json must exist as secrets in HashiCorp Vault before you configure the secretstore. If any referenced credential is missing, the installation fails.

Using Kubernetes Auth​

The ESO pod authenticates to HashiCorp Vault using its Kubernetes service account token. Vault authenticates the token against the Kubernetes API server and issues a Vault token with the appropriate policies.

Prerequisites​

  • HashiCorp Vault with Kubernetes auth method enabled
  • Vault role configured to allow the ESO service account. By default, the service account name is external-secrets.
  • Network connectivity from the Kubernetes cluster to the Vault server
  • (Optional) A custom Kubernetes ServiceAccount, if not using the ESO default service account

Configuring input.json​

To configure HashiCorp Vault as a secretstore using Kubernetes Auth, add the following section to input.json:

{
  "secret_store": {
    "enabled": true,
    "provider_configs": [
      {
        "name": "hc-vault",
        "type": "hashicorp",
        "auth_type": "kubernetes",
        "hashicorp_kv": {
          "server": "https://vault.example.com:8200",
          "path": "secret",
          "version": "v2",
          "role": "uipath-role",
          "mount_path": "kubernetes"
        }
      }
    ]
  }
}
{
  "secret_store": {
    "enabled": true,
    "provider_configs": [
      {
        "name": "hc-vault",
        "type": "hashicorp",
        "auth_type": "kubernetes",
        "hashicorp_kv": {
          "server": "https://vault.example.com:8200",
          "path": "secret",
          "version": "v2",
          "role": "uipath-role",
          "mount_path": "kubernetes"
        }
      }
    ]
  }
}

To use a custom ServiceAccount, add the service_account_name field as follows:

{
  "secret_store": {
    "enabled": true,
    "provider_configs": [
      {
        "name": "hc-vault",
        "type": "hashicorp",
        "auth_type": "kubernetes",
        "service_account_name": "vault-auth-sa",
        "hashicorp_kv": {
          "server": "http://vault.example.com:8200",
          "path": "secret",
          "version": "v2",
          "role": "uipath-role",
          "mount_path": "kubernetes"
        }
      }
    ]
  }
}
{
  "secret_store": {
    "enabled": true,
    "provider_configs": [
      {
        "name": "hc-vault",
        "type": "hashicorp",
        "auth_type": "kubernetes",
        "service_account_name": "vault-auth-sa",
        "hashicorp_kv": {
          "server": "http://vault.example.com:8200",
          "path": "secret",
          "version": "v2",
          "role": "uipath-role",
          "mount_path": "kubernetes"
        }
      }
    ]
  }
}
Note:

If service_account_name is configured, the ServiceAccount must be pre-created by the customer. uipathctl validates its existence but does not create it.

Using AppRole Auth​

AppRole auth uses Vault's AppRole auth method, where ESO authenticates with a Role ID and Secret ID stored in a Kubernetes secret. This method is suitable for automated systems and does not require Kubernetes auth to be enabled in Vault.

Prerequisites​

  • HashiCorp Vault with AppRole auth method enabled
  • AppRole Role ID and Secret ID generated
  • Kubernetes secret pre-created with AppRole credentials

Configuring input.json​

To configure HashiCorp Vault as a secretstore using AppRole Auth, take the following steps:

  1. Create the Kubernetes secret that stores the AppRole credentials:

    kubectl create secret generic vault-approle-creds \
      --namespace uipath \
      --from-literal=role-id=<your-role-id> \
      --from-literal=secret-id=<your-secret-id>
    kubectl create secret generic vault-approle-creds \
      --namespace uipath \
      --from-literal=role-id=<your-role-id> \
      --from-literal=secret-id=<your-secret-id>
    

    The secret must contain the following keys:

    • role-id - AppRole Role ID from Vault
    • secret-id - AppRole Secret ID from Vault
  2. Add the following section to input.json:

    {
      "secret_store": {
        "enabled": true,
        "provider_configs": [
          {
            "name": "hc-vault",
            "type": "hashicorp",
            "auth_type": "approle",
            "credentials_secret_name": "vault-approle-creds",
            "hashicorp_kv": {
              "server": "https://vault.example.com:8200",
              "path": "secret",
              "version": "v2",
              "mount_path": "approle"
            }
          }
        ]
      }
    }
    {
      "secret_store": {
        "enabled": true,
        "provider_configs": [
          {
            "name": "hc-vault",
            "type": "hashicorp",
            "auth_type": "approle",
            "credentials_secret_name": "vault-approle-creds",
            "hashicorp_kv": {
              "server": "https://vault.example.com:8200",
              "path": "secret",
              "version": "v2",
              "mount_path": "approle"
            }
          }
        ]
      }
    }
    

Configuration fields​

The following table describes the available configuration fields.

FieldRequiredDefaultDescription
hashicorp_kv.serverYes-Vault server URL
hashicorp_kv.pathNosecretKV secrets engine mount path
hashicorp_kv.versionNov2KV engine version: v1 or v2
hashicorp_kv.roleNouipath-roleVault role name for authentication
hashicorp_kv.mount_pathNokubernetes or approle (based on auth_type)Auth method mount path
auth_typeYes-Must be kubernetes or approle
credentials_secret_nameYes (AppRole only)-Kubernetes secret containing role-id and secret-id keys
service_account_nameNoexternal-secretsKubernetes ServiceAccount for Kubernetes Auth. If a custom ServiceAccount is specified, you must pre-create it in the cluster.

TLS CA certificate handling​

When the Vault server uses HTTPS with a private CA certificate, configure additional_ca_certs in input.json with the CA certificate file path:

additional_ca_certs: /path/to/client_cert
additional_ca_certs: /path/to/client_cert

No additional configuration is needed in the hashicorp_kv block.

Referencing secrets in input.json​

To reference a credential stored in HashiCorp Vault, use the following format in input.json:

vault/<vault-name>/<secret-path>?key=<key-name>
vault/<vault-name>/<secret-path>?key=<key-name>
  • Specific field: vault/hc-vault/s3-credentials?key=access_key
  • Pinned version: vault/hc-vault/platform-sql?version=2

The following example shows how to reference a HashiCorp Vault secret in input.json:

admin_password: vault/hc-vault/admin-password-10832372?key=value
admin_password: vault/hc-vault/admin-password-10832372?key=value

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated