Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • The secret should not be exposed to JS7 logging or to any instance of JS7 products that track variables.
    • For example, if a variable created by some job should be forwarded to a next job executed with a different Agent then the Controller and JOC Cockpit keep track of the variable.
      • The variable is available in the Agent's and Controller's memory.
      • The variable is available in the Controller's journal, in JOC Cockpit's JS7 - History and in the JS7 - Database.
    • At no point in time the secret should be available to involved JS7 products, to the database or to the OS.
  • We find a number of inadequate approaches that do not make it for a secure solution:
    • Symmetric keys are a No-Go as they are available in two places and leave it up to the implementation where to store the key.
    • Obfuscation is a No-Go as it does not resist to any serious attackattacks.

The preferred solution with JS7 is use of asymmetric keys:

...

The value of a variable is encrypted and is stored to JS7 - Job Resources using scripts:

The Job Resource can be accessed by any jobs in the same or in other workflows.

...

Encrypted secrets are made available from variables. This similarly works for variables that are created by predecessor jobs on the fly and by Job Resources. Workflow For shell jobs workflow variables are made available from OS environment variables .

...

  • Consider the parties involved and related use cases:
    • A job executed on Agent A should be parameterized by a variable holding a secret.
    • A job executed on Agent B retrieves a secret that should be forwarded to a the job on Agent A and possibly to other Agents too.
  • Use of asymmetric keys allows 
    • to create and to store a private key Private Key on Agent A.
    • to use Agent A's public key Certifidate or Public Key on Agent B or on any other system involved.
    • to manage encryption and decryption like this:
      • create a symmetric one-time key and an encrypted copy of the key derived from Agent A's public keyCertificate/Public Key.
      • encrypt the value of a variable value with the one-time key.
      • drop the one-time key and forward the encrypted copy of the one-time key and the variable holding the encrypted value to Agent A.
      • only Agent A will be able to decrypt the encrypted one-time key using its private key Private Key which reveals provides the symmetric key required to decrypt the variable's value.

...