Versions Compared

Key

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

Table of Contents

Summary

  • The Controller An Agent makes use of two configuration files:
    • the general configuration from controlleragent.conf
    • the security configuration from private.conf
  • Restart the Controller Agent instance to apply changes to any configuration file.

General Configuration

File: controlleragent.conf

Default Location: /var/sos-berlin.com/js7/controlleragent/var/config/controlleragent.conf

Code Block
languagetext
titleGeneral configuration file example: controlleragent.conf
linenumberstrue
collapsetrue
# Cluster configuration
js7.journal.cluster {
    nodes {
        Primary = "https://controller-2-0-primary:4443"
        Backup = "https://controller-2-0-secondary:4443"
    }
    watches = [ "https://agent-2-0-primary:4443" ]
}

# Allow http connections without authentication
js7.web.server.auth.public = true

js7.

...

  • This setting is used for Controllers in cluster mode only, it is not used for standalone Controller instances.
  • nodes
    • This setting specifies the URLs of the Primary and Backup (Secondary) instance. The URL includes to specify the protocol http/https, the hostname and port.
  • watches
    • Watches are Agents in a JS7 environment that are involved in the decision about a fail-over situation. If Controller instances in a cluster are not connected to each other any longer, e.g. due to network errors, then the majority of Agents decides if a fail-over should take place.
    • At least one Agent has to be specified by its URL.

js7.web.server: Authentication Settings

...

  • This setting specifies public access to a Controller an Agent should insecure incoming HTTP connections be used. If used with a value true then no authentication applies.
  • Default: false

...

File: private.conf

Default Location: /var/sos-berlin.com/js7/controlleragent/var/config/private/private.conf

Code Block
languagetext
titleSecurity configuration file example: private.conf
linenumberstrue
collapsetrue
# Security configuration
js7 {
    auth {
        # User accounts for https connections
        users {
            # Controller account for connections by primary/secondary controllerController instance
            Controller {
                distinguished-names=[
                    "DNQ=SOS CA, CN=controller-2-0-secondary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE"
                ]
            }
            # History account (used for release events)
            History {
                distinguished-names=[
                    "DNQ=SOS CA, CN=joc-2-0-primary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE",
                    "DNQ=SOS CA, CN=joccontroller-2-0-secondary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE"
                ]
                password="sha512:B793649879D61613FD3F711B68F7FF3DB19F2FE2D2C136E8523ABC87612219D5AECB4A09035AD88D544E227400A0A56F02BC990CF0D4CB348F8413DE00BCBF08"}
            }
            # JOC account (reqires UpdateRepo permission for deployment)}
            JOC configuration {
        # Locations of certificates and public keys  distinguished-names=[
                    "DNQ=SOS CA, CN=joc-2-0-primary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE",
                    "DNQ=SOS CA, CN=joc-2-0-secondary, OU=IT, O=SOS, L=Berlin, ST=Berlin, C=DE"
                ]
                password="sha512:3662FD6BF84C6B8385FC15F66A137AB75C755147A81CC7AE64092BFE8A18723A7C049D459AB35C059B78FD6028BB61DCFC55801AE3894D2B52401643F17A07FE"
                permissions=[
                    UpdateRepo
        used for signature verification
        ]
            }
        }
    }
    configuration {
        # Controller truststore location
        trusted-signature-keys {
            PGP=${js7.config-directory}"/private/trusted-pgp-keys"
            X509=${js7.config-directory}"/private/trusted-x509-keys"
        }
    }
    journaljob {
        # allowEnable Historyscript accountexecution tofrom releasesigned unusedworkflows
 journals
        users-allowed-to-release-events=[execution {
            History signed-script-injection-allowed = yes
        ]}
    }
    web {
        # Locations of keystore and truststore locationfiles for httpsHTTPS connections
        https {
            keystore {
                # Default: ${js7.config-directory}"/private/https-keystore.p12"
                file=${js7.config-directory}"/private/https-keystore.p12"
                key-password=jobscheduler
                store-password=jobscheduler
            }
            truststores=[
                {
                    # Default: ${js7.config-directory}"/private/https-truststore.p12"
                    file=${js7.config-directory}"/private/https-truststore.p12"
                    store-password=jobscheduler
                }
            ]
        }
    }
}

...

js7authusers





Controller





distinguished-names<distinguished-name>[,<distinguished-name]Historydistinguished-names<distinguished-name>[,<distinguished-name]passwordplain:<text>|sha512:<hashed-password>JOCdistinguished-names<distinguished-name>[,<distinguished-name]passwordplain:<text>|sha512:<hashed-password>permissionsUpdateRepo
  • When using HTTPS Certificates or public keys for incoming connections, see below, then an additional authentication mechanism applies: the client of the incoming connection, i.e. g. JOC Cockpita Controller, is required to provide a Client Authentication certificate or a password. This includes that two certificates are in place for a secure HTTPS connection: the ControllerAgent's Server Authentication Certificate and the JOC CockpitController's Client Authentication Certificate. 
    • The fact that a given certificate is used for Server Authentication and/or Client Authentication is specified with the key usage when creating and signing the certificate.
    • The distinguished name that is specified with the ControllerAgent's configuration has to match the Client Authentication Certificate's or Client public key's "subject" attribute of a Controller. This attribute specifies the hostname and additional information that is created when the certificate or public key is generated.
  • Controller
    • Settings in this section are used for incoming HTTPS connections from a pairing Controller instance, e.g. for a Secondary Controller if this configuration is used for the Primary Controller and vice versa. instances.
    • distinguished-names
      • Specifies the distinguished name as given with the subject of the Client Authentication Certificate for incoming HTTPS connections of from a pairing Controller.
      • Any number of distinguished names can be specified , thus allowing a number of incoming HTTPS connections from different Controllers. At a given point in time only one pairing Controller can connect to the given Controller.
  • History
    • Settings in this section are used for the History Service of JOC Cockpit instances that access the given Controller.
    • distinguished-names:  same as for Controller setting.
    • password: a password can be used in addition to use of a certificate or public key. In addition the password is applied in case that insecure incoming HTTP connections are allowed.
  • JOC
    • Settings in this section are used for JOC Cockpit instances that access the given Controller.
    • distinguished-names:  same as for Controller setting
      • .
    • password:  a password can be used in addition to use of a certificate or public key. In addition the password is applied in case that insecure incoming HTTP connections are allowed.
    • permissions: JOC Cockpit requires the UpdateRepo permission to enable users to deploy objects such as workflows.

js7.configuration: Signature Keys

...

  • For any deployed objects such as workflows the Controller Agent expects a signature. Such signatures are created with a private key and are verified by the Controller Agent based on the available certificates. 
  • When deploying objects with JOC Cockpit
    • for a Low Security Level JOC Cockpit creates the signature from a single private key that is used for any JOC Cockpit user accounts allowed to deploy objects.
    • for a Medium Security Level JOC Cockpit creates the signature from the private key of the JOC Cockpit user account that deploy objects.
    • for a High Security Level the user creates the signature outside of JOC Cockpit and uploads the signed objects.
  • The Controller Agent supports PGP public keys and X509 certificates. This setting expects a directory respectively that holds a number of public key files or certificate files.
  • trusted-signature-keys
    • PGP: specifies the directory from which PGP public keys are used to verify the signature of deployed objects.
    • X509: specifies the directory from which X509 certificates are used to verify the signature of deployed objects.

js7.

...

job.execution: Script Execution Permissions

usersallowedtorelease-events
js7jobjournalexecution




signed-script-injection-<account>[,<account>]allowed<yes>|<no>
  • By default the Agent prevents any commands and scripts to be executed except for scripts located in specific directories. This setting allows to execute any commands and scripts provided that the workflow is signed and the signature is verified for
  • The Controller writes a journal of events that e.g. result from order state transitions such as an order starting, failing, completing etc.
  • The journal file will grow unlimited if events are not released. Typically events are consumed by JOC Cockpit and are added to the order and task history. With events being stored persistently to the JOC Cockpit database they can be released from the Controller's journal. The Controller accordingly will free the space consumed by its journal files.
  • users-allowed-to-release-events:  specifies the list of accounts that are allowed to send a command to the Controller to release events.
  • Typically the "History" account is specified, this account is used by the JS7 - Configuration - JOC Cockpit.
  • If more than one account is specified then events are released only after all accounts did send the command to release events to the Controller.

js7.web.https: HTTPS Certificates

...

  • This setting is used to specify the location of a keystore and any truststores used for HTTPS connections.
  • Keystore and truststore files are expected in PKCS#12 format.
  • keystore
    • The keystore includes the private key for the ControllerAgent's incoming HTTPS connections.
    • Private key type types RSA and ECDSA are supported. 
    • file:  the full path to the location of the keystore file is expected.
      • Default: ${js7.config-directory}"/private/https-keystore.p12"
    • key-password: Any keys included with the keystore are protected with a password. The same password has to be used for any all private keys in the given keystore.
    • store-password: The keystore file is protected by a password.
  • truststores
    • A truststore contains the certificates or public keys for the ControllerAgent's incoming HTTPS connections.
      • Certificates are signed by a Certificate Authority (CA), alternatively a self-signed certificate can be used.
      • It is recommended to use certificates instead of public keys.
      • Certificates of type X509 are supported.
    • file:  the full path to the location of the truststore file is expected.
      • Default: ${js7.config-directory}"/private/https-truststore.p12"
    • store-password: A truststore file is protected by a password.
    • A number of truststores can be specified by repeating the file and store-password settings.

...