Secure sensitive data with passwords and encrypted dictionary entries
This topic describes how password properties and encrypted dictionary entries combine to secure sensitive data in Deploy.
How it works
In Deploy's type system, any property defined as password="true"
is stored in the repository in encrypted form (AES-256) and is displayed as ******
in the GUI. The password="true"
setting typically applies to properties called "password", but you can define any property as secure in this way.
When you first establish a secret value such as a password or an encrypted dictionary entry in the GUI, you can visually validate what you typed or copy-pasted is correct before storing it. To view the value in plain text before you save it, click the "eye" icon to the right of the password field. Once the value is stored in encrypted form in the repository, it is displayed in the GUI as ******
.
This behavior is also true if you delete an existing encrypted value and provide a new one. For example, if you have a password field for an Infrastructure CI that displays ******
and you delete it entirely and begin typing another password, you can use the "eye" icon to view it in plain text before saving it.
In the case of secure properties of deployable items (such as the password for a datasource spec or similar piece of configuration) the value is usually not set directly on the deployable, because it varies across target environments.
You can handle a secure property by setting the property on the deployable to a placeholder such as {{my.datasource.password}}
. When the deployable is mapped to a specific target environment, Deploy resolves the placeholder using dictionaries that are linked to the environment. Deploy selects the first value that it finds for the my.datasource.password
key.
In Deploy, a dictionary can contain:
- "Regular" key/value pairs that are intended to store non-sensitive values
- Encrypted key/value pairs that are intended to store sensitive data such as passwords
In a regular dictionary entry, the key and value are both stored in plain text and are visible anyone with read access to the dictionary configuration item.
In an encrypted dictionary entry, the key is treated as plain text, but the value is treated in the same way as password="true"
properties: it is hidden in the UI and stored in encrypted form in the repository.
Common questions
This section describes some common questions you may have when working with password properties and encrypted dictionary entries.