Guide to Secret Management
Secret Utility (secretutil) is a password management tool used to store, manage, and retrieve passwords. Secret Utility returns the passwords in plain text.
The following sections describe the configuration of Secret Utility, which is installed as part of the Clarity LIMS-SecretUtil RPM.
Installing Integration Packages on Clarity LIMS
Packages that require Clarity LIMS-SecretUtil.
Illumina Cloud Hosted v5.4 and later
Vault
Secret Utility would have been configured during installation of Illumina cloud hosted deployments of Clarity LIMS v5.4 and later.
For details on installing and configuring the integration package, see the related installation guide.
Packages that do not require Clarity LIMS-SecretUtil.
Illumina Cloud Hosted v5.4 and later
Vault
Clarity LIMS v5.4 and later do not support these integration packages.
Packages that require Clarity LIMS-SecretUtil.
Illumina Cloud Hosted/On Premise v5.3 and earlier
File
Clarity LIMS-SecretUtil installs Secret Utility. Before continuing with the configuration of the integration package, complete the following steps:
In: /opt/gls/clarity/config/pending run the following script:
05_configure_claritylims_secretutil.shConfigure the secret utility in file-mode.
Refer to Install/Upgrade Secret Management for Integration Modules for the passwords required to be configured in File mode.
Packages that do not require ClarityLIMS-SecretUtil.
Illumina Cloud Hosted/On Premise v5.3 and earlier
-
Refer to the integration package installation guide for more information on installing and configuring the integration package.
Configuration Script
If Secret Utility has not been configured, the 05_configure_claritylims_secretutil.sh script is created in the /opt/gls/clarity/config/pending folder.
To reconfigure Secret Utility:
Remove the hidden file /opt/gls/clarity/tools/secretutil/.configured
Run the Secret Utility configuration script as follows: /opt/gls/clarity/config/configure_claritylims_secretutil.sh
The following table describes the entries prompted by the configure_claritylims_secretutil.sh script.
Configuration Script Entries
Enter required value for Secret Utility Mode.
vault
Configure the mode for Secret Utility. Possible values: vault, file
Enter required value for Clarity Tenant Hostname.
localhost
Vault mode only
Configure the Tenant hostname to be used as part of the vault path.
Enter required value for Vault Engine Path.
secret
Vault Mode only
Configure the secret engine path.
Enter required value for Vault URI.
Vault Mode only
Configure the Vault Server target.
Vault Enterprise (Y/N)
N
Vault Mode only
Configure whether the Vault Server is an enterprise version.
Enter required value for Vault Namespace.
Vault Enterprise only
Configure the Vault namespace.
Enter required value for Vault Authentication Mode.
Vault Mode only
Configure the authentication method. Possible values: token, approle
Enter required value for Vault Token.
Token Authentication only
Enter required value for Vault AppRole Role-Id.
AppRole Authentication only
Configure the AppRole role-id to use. Refer to Role ID noted during HashiCorp Vault configuration. (See AppRole)
Enter required value for Vault AppRole Secret-Id.
AppRole Authentication only
Configure the AppRole secret-id to use. Refer to Secret ID noted during HashiCorp Vault configuration. (See AppRole)
Enter required value for app.ftp.password
Enter required value for app.ldap.managerPass
Enter required value for app.rabbitmq.password
Enter required value for db.tenant.password
Enter required value for db.clarity.password
Enter required value for db.lablink.password
Enter required value for db.reporting.password
File Mode only
Sets the secrets (encrypted with CLARITYSECRET_ENCRYPTION_KEY env variable) into conf/secret.properties
Enter required value for Username for API user
apiuser
File Mode only
Sets the username of the API user to be used when applications require an API user.
Enter required password for API user
File Mode only
Sets the password for the API user configured.
Managing the passwords (Vault Mode)
If Secret Utility is configured as Vault Mode, the passwords are stored and retrieved from Vault Enterprise.
To use Secret Utility and perform the following steps, you must first remote into the instance before performing any of the following steps.
To use the Vault user interface (UI) and perform the following steps, you must have the appropriate role and access control list (ACL) policies.
Vault ACL Paths
The Vault ACLs control three main paths: Clarity, Integration, and Ops. If there is an attempt to write into a read-only path, secretutil.jar returns an error.
Clarity (read only)
Stores all passwords related to Clarity LIMS. The secrets/passwords are encrypted with CLARITYSECRET_ENCRYPTION_KEY env variable. See Configuration Script.
Integration (read write)
Stores all integration-related passwords and allows read and write access.
apiusers
Stores passwords that are used by packages and applications for API authentication (eg, the apiuser password).
Username is case sensitive.
For example, retrieve apiuser password from integration/apiusers/apiuser.
external.file.stores
Stores password of external file stores used by Clarity LIMS.
External file store is optional to the Clarity LIMS system.
For example, retrieve file store password from integration/external.file.stores/.password.
Ops
Stores secrets related to operations.
For Illumina cloud hosted deployments, Illumina manages this path.
This path is optional for on-premise customers.
Create a New Password
Using Secret Utility
The following command creates a new password:
java -jar /opt/gls/clarity/tools/secretutil/secretutil.jar [-h] [-n="namespace"] [-u="newValue"] "key"
When creating a new password for integration, specify the -n= integration option.
Make sure that the key uses a forward slash for nested secrets. For example, apiusers/apiuser
The same command is used for updating an existing password and creating a new password. Read the key you are planning to create to check whether it is an existing password.
Using Vault UI
Log in to the Vault UI.
Select the Key Value (KV) secret engine with the path
instances.Look for the FQDN instance that you want to create the password for.
Select the path where you want to create the new password, ie, clarity/integration/ops.
Select Create Secret +.
Under Path for this secret, enter the path for the new password, eg, app.ldap.managerPass.
Under Version data:
Enter 'value' into the key field.
Enter the new password into the value field.
Select Save.
Read an Existing Password
Using Secret Utility
Run the following command to create a new password:
java -jar /opt/gls/clarity/tools/secretutil/secretutil.jar "key"
Using Vault UI
Log in to the Vault UI.
Select the KV secret engine with the path instances.
Look for the FQDN instance that you want to create the password for.
Select the path where the existing password is located, ie, clarity/integration/ops.
Click into the secret and view the password by selecting the peek icon.
Update an Existing Password
Using Secret Utility
Run the following command to update an existing password:
java -jar /opt/gls/clarity/tools/secretutil/secretutil.jar [-h] [-n="namespace"] [-u="newValue"] "key"
Using Vault UI
Log in to the Vault UI.
Select the KV secret engine with the path
instances.Look for the FQDN instance that you want to create the password for.
Select the path where the existing password is located, ie, clarity/integration/ops.
Select into the secret.
Select Create new version +.
Under Version Data, enter the new password.
Select Save.
Delete an Existing Password
NOTE: Confirm with the Illumina Support team before deleting passwords and secrets.
Using Secret Utility
Secret Utility does not support permanent deletion of a key by design.
Using Vault UI
Log in to the Vault UI.
Select the KV secret engine with the path instances.
Look for the FQDN instance that you want to create the password for.
Select the path, ie, clarity/integration/ops, to the location of the existing password.
Select into the secret.
Select Delete secret.
Managing the Passwords (File Mode)
If Secret Utility is configured as File mode, the passwords are encrypted and stored in /opt/gls/clarity/tools/secretutil/conf/secrets.properties. Encryption is based on the CLARITYSECRET_ENCRYPTION_KEY environment variable.
To manage the passwords and perform the following steps, you must first remote into the instance.
Create a New Password
Run the following command to create a new password:
java -jar /opt/gls/clarity/tools/secretutil/secretutil.jar [-h] [-n="namespace"] [-u="newValue"] "key"
If you are creating a new password for integration, specify the -n=integration option.
The same command is used for updating an existing password and creating a new password. Read the key you are planning to create to check whether it is an existing password.
Read an Existing Password
Run the following command to read an existing password:
java -jar /opt/gls/clarity/tools/secretutil/secretutil.jar "key"
Update an Existing Password
Run the following command to update an existing password:
java -jar /opt/gls/clarity/tools/secretutil/secretutil.jar [-h] [-n="namespace"] [-u="newValue"] "key"
Delete an Existing Password
NOTE: Confirm with the Illumina Support team before deleting passwords and secrets.
By design, Secret Utility does not support permanent deletion of a key. As an alternative, you can run the following steps.
Open the secrets.properties file with an editor, eg, vim.
Remove the key from the file and save the file.
Last updated
Was this helpful?
