Skip to content

Secret security

On this page
  1. At rest: two levels of keys
  2. In the interface: write-only
  3. In use: decrypted only to run a check
  4. Variables are not secrets
  5. Your part

Secrets hold the most sensitive data you give Onagre: database and broker credentials. This page explains how they are protected, from the moment you save them to the moment an agent uses them.

At rest: two levels of keys#

  • Each organization has its own organization key, a random 256-bit key. Your secrets are encrypted with it using AES-256-GCM, an authenticated encryption that guarantees both confidentiality and integrity.
  • The organization key is itself encrypted by a platform master key, kept in a dedicated secret store, never in the database. Master keys can be rotated.

A copy of the database alone is therefore not enough to read a secret, and one organization's key gives no access to another organization's secrets.

In the interface: write-only#

A secret's value is never displayed or returned after it is saved: the list shows its code, type and version only. To change a value, you replace it with a new version. Only Managers and Admins can see the list of secrets and manage them.

In use: decrypted only to run a check#

When a sensor that uses a secret is due, the Hub decrypts the latest version and sends it to the private agent that runs the check, inside the agent's TLS-encrypted connection. The agent uses it in memory to connect, and never writes it to disk.

Only your organization's private agents receive your secrets: they never go to the public agent or to another organization's agents.

Variables are not secrets#

Variables are stored and displayed in plain text, by design. Keep credentials in secrets.

Your part#

  • Give sensors read-only database and broker accounts, limited to what the check needs.
  • Restrict the Manager role to the people who must handle credentials — see Team and roles.
  • When someone leaves or a credential leaks, change the password on the database side, then Update value in Onagre.