Skip to content

Latest commit

 

History

History
124 lines (101 loc) · 26.8 KB

README_traceability.md

File metadata and controls

124 lines (101 loc) · 26.8 KB

Amplify Mulesoft Anypoint Traceability Agent

Prerequisites

Install the agent and provision Amplify Central access as described in https://github.com/Axway/agents-mulesoft/blob/main/README.md.

  • Amplify organization id
  • Amplify Central environment name
  • Public/Private key pem files
  • Service account client id

As well as access to Amplify Central it is assumed you have access to the Mulesoft Anypoint Platform. You need:

  • Credentials with access to the organization the agents will attach to.
  • Mulesoft environment name to discover from (e.g. Sandbox)

Configuring the Traceability Agent

The agents read their configuration from a YAML file. To set up your config file copy the content of default_mulesoft_traceability_agent.yml into a new file named mulesoft_traceability_agent, and replace the default values that reflect your environment.

Start the Traceability Agent

./mulesoft_traceability_agent --pathConfig <path to mulesoft_traceability_agent.yaml>

Configuration Variables

  • The following are all of the Environment variables that can be set, they will override the defaults
Variable Name YAML Path Description Location / Default
CENTRAL_AGENTNAME central.agentname Agent name to visualize the agent status in Amplify
CENTRAL_AUTH_CLIENTID central.auth.clientId The DOSA ID of the AMPLIFY Central Service Account created AMPLIFY Central -> Access -> Service Accounts
CENTRAL_AUTH_KEYPASSWORD central.auth.keyPassword The password for the private key, if applicable
CENTRAL_AUTH_PRIVATEKEY central.auth.privateKey The private key file path from the commands above /keys/private_key.pem
CENTRAL_AUTH_PUBLICKEY central.auth.publicKey The public key file path from the commands above /keys/public_key.pem
CENTRAL_AUTH_REALM central.auth.realm The Realm used to authenticate for AMPLIFY Central Broker
CENTRAL_AUTH_URL central.auth.url The URL used to authenticate for AMPLIFY Central https://login.axway.com/auth
CENTRAL_DEPLOYMENT central.deployment The AMPLIFY Central deployment environment (beano, dev, prod, preprod) prod
CENTRAL_ENVIRONMENT central.environment The Environment Name for the AMPLIFY Central Environment See Instructions below
CENTRAL_ORGANIZATIONID central.platformURL The Organization ID from AMPLIFY Central Platform -> Click User -> Organization
CENTRAL_SSL_CIPHERSUITES central.ssl.cipherSuites An array of strings. It is a list of supported cipher suites for TLS versions up to TLS 1.2. If CipherSuites is nil, a default list of secure cipher suites is used, with a preference order based on hardware performance. See below for currently supported cipher suites. See below for default cipher suite setting
CENTRAL_SSL_INSECURESKIPVERIFY central.ssl.insecureSkipVerify InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks. Internally defaulted to false
CENTRAL_SSL_MAXVERSION central.ssl.maxVersion String value for the maximum SSL/TLS version that is acceptable. If empty, then the maximum version supported by this package is used, which is currently TLS 1.3. Allowed values are: TLS1.0, TLS1.1, TLS1.2, TLS1.3 Internally, this value defaults to empty
CENTRAL_SSL_MINVERSION central.ssl.minVersion String value for the minimum SSL/TLS version that is acceptable. If zero, empty TLS 1.0 is taken as the minimum. Allowed values are: TLS1.0, TLS1.1, TLS1.2, TLS1.3 Internally, the value defaults toTLS1.2
CENTRAL_SSL_NEXTPROTOS central.ssl.nextProtos An array of strings. It is a list of supported application level protocols, in order of preference, based on the ALPN protocol list. Allowed values are: h2, htp/1.0, http/1.1, h2c Internally empty. Default negotiation.
CENTRAL_URL central.URL The URL to the AMPLIFY Central instance being used for this traceability agent https://apicentral.axway.com
LOG_FORMAT log.format The format to print log messages (json, line, package) json
LOG_LEVEL log.level The log level for output messages (debug, info, warn, error) info
LOG_OUTPUT log.output The output for the log lines (stdout, file, both) stdout
LOG_PATH log.path The path (relative or absolute) to save logs files, if output type file or both logs
MULESOFT_ANYPOINTEXCHANGEURL mulesoft.anypointExchangeUrl Mulesoft Anypoint Exchange URL https://anypoint.mulesoft.com
MULESOFT_AUTH_LIFETIME mulesoft.auth.lifetime The session lifetime. The agent will automatically refresh the access token as it approaches the end of its lifetime 60m
MULESOFT_AUTH_PASSWORD mulesoft.auth.password The password for the Mulesoft Anypoint username created for this agent
MULESOFT_AUTH_USERNAME mulesoft.auth.username The Mulesoft Anypoint username created for this agent
MULESOFT_CACHEPATH mulesoft.cachePath Path entry to store stateful cache between agent invocations /tmp
MULESOFT_ENVIRONMENT mulesoft.environment The Mulesoft Anypoint Exchange the agent connects to, e.g. Sandbox.
MULESOFT_ORGNAME mulesoft.orgName The Mulesoft Anypoint Business Unit the agent connects to
MULESOFT_POLLINTERVAL mulesoft.pollInterval The frequency in which Mulesoft API Manager is polled for new endpoints. 30s
MULESOFT_PROXYURL mulesoft.proxyUrl The url for the proxy for API Manager (e.g. http://username:password@hostname:port). If empty, no proxy is defined. Internally, this value defaults to empty
MULESOFT_SSL_CIPHERSUITES mulesoft.ssl.cipherSuites An array of strings. It is a list of supported cipher suites for TLS versions up to TLS 1.2. If CipherSuites is nil, a default list of secure cipher suites is used, with a preference order based on hardware performance. See below for currently supported cipher suites. See below for default cipher suite setting
MULESOFT_SSL_INSECURESKIPVERIFY mulesoft.ssl.insecureSkipVerify InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name. If InsecureSkipVerify is true, TLS accepts any certificate presented by the server and any host name in that certificate. In this mode, TLS is susceptible to man-in-the-middle attacks. Internally defaulted to false
MULESOFT_SSL_MAXVERSION mulesoft.ssl.maxVersion String value for the maximum SSL/TLS version that is acceptable. If empty, then the maximum version supported by this package is used, which is currently TLS 1.3. Allowed values are: TLS1.0, TLS1.1, TLS1.2, TLS1.3 Internally, this value defaults to empty
MULESOFT_SSL_MINVERSION mulesoft.ssl.minVersion String value for the minimum SSL/TLS version that is acceptable. If zero, empty TLS 1.0 is taken as the minimum. Allowed values are: TLS1.0, TLS1.1, TLS1.2, TLS1.3 Internally, the value defaults toTLS1.2
MULESOFT_SSL_NEXTPROTOS mulesoft.ssl.nestProtos An array of strings. It is a list of supported application level protocols, in order of preference, based on the ALPN protocol list. Allowed values are: h2, htp/1.0, http/1.1, h2c Internally empty. Default negotiation.
STATUS_HEALTHCHECKINTERVAL sstatus.healthCheckInterval Time in seconds between running periodic health checker (binary agents only). Allowed values are from 30 to 300 seconds. 30s
STATUS_HEALTHCHECKPERIOD status.healthCheckPeriod Time in minutes allotted for services to be ready before exiting the agent. Allowed values are from 1 to 5 minutes. 3m
STATUS_PORT status.port The port that the healthcheck endpoint will listen on 8989
TRACEABILITY_COMPRESSIONLEVEL output.traceability.compression_level The gzip compression level for the output event. Setting this to 0 will disable the compression Defaults to 3
TRACEABILITY_HOST output.traceability.host Host name and port of the ingestion service to forward the transaction log entries, ingestion-lumberjack.datasearch.axway.com:453
TRACEABILITY_PROTOCOL output.traceability.protocol Protocol(https or tcp) to be used for communicating with ingestion service tcp
TRACEABILITY_PROXYURL output.traceability.proxy_url The url for the proxy for ingestion service (e.g. socks5://hostname:port). If empty, no proxy is defined. Internally, this value defaults to empty
TRACEABILITY_PROXYURL output.traceability.proxy_url The url for the proxy for ingestion service (e.g. socks5://hostname:port). If empty, no proxy is defined. Internally, this value defaults to empty
TRACEABILITY_REDACTION_PATH_SHOW output.traceability.redaction.path.show The redaction environment variable to set a Regex expression to show Paths Internally, this value defaults to empty
TRACEABILITY_REDACTION_QUERYARGUMENT_SHOW output.traceability.redaction.queryargument.show The redaction environment variable to set a Regex expression to show Query Params Internally, this value defaults to empty
TRACEABILITY_REDACTION_QUERYARGUMENT_SANITIZE output.traceability.redaction.queryargument.sanitize The redaction environment variable to set a Regex expression to sanitize Query Params Internally, this value defaults to empty
TRACEABILITY_REDACTION_REQUESTHEADER_SHOW output.traceability.redaction.requestheader.show The redaction environment variable to set a Regex expression to show Request headers Internally, this value defaults to empty
TRACEABILITY_REDACTION_REQUESTHEADER_SANITIZE output.traceability.redaction.requestheader.sanitize The redaction environment variable to set a Regex expression to sanitize Request headers Internally, this value defaults to empty
TRACEABILITY_REDACTION_RESPONSEHEADER_SHOW output.traceability.redaction.response.show The redaction environment variable to set a Regex expression to show Response headers Internally, this value defaults to empty
TRACEABILITY_REDACTION_RESPONSEHEADER_SANITIZE output.traceability.redaction.responseheader.sanitize The redaction environment variable to set a Regex expression to sanitize Response headers Internally, this value defaults to empty

For the redaction based environment variables, please refer to Setting up Redaction

Supported Cipher Suites

The allowed cipher suites string values are allowed: ECDHE-ECDSA-AES-128-CBC-SHA, ECDHE-ECDSA-AES-128-CBC-SHA256, ECDHE-ECDSA-AES-128-GCM-SHA256, ECDHE-ECDSA-AES-256-CBC-SHA, ECDHE-ECDSA-AES-256-GCM-SHA384, ECDHE-ECDSA-CHACHA20-POLY1305, ECDHE-ECDSA-RC4-128-SHA, ECDHE-RSA-3DES-CBC3-SHA, ECDHE-RSA-AES-128-CBC-SHA, ECDHE-RSA-AES-128-CBC-SHA256, ECDHE-RSA-AES-128-GCM-SHA256, ECDHE-RSA-AES-256-CBC-SHA, ECDHE-RSA-AES-256-GCM-SHA384, ECDHE-RSA-CHACHA20-POLY1305, ECDHE-RSA-RC4-128-SHA, RSA-RC4-128-SHA, RSA-3DES-CBC3-SHA, RSA-AES-128-CBC-SHA, RSA-AES-128-CBC-SHA256, RSA-AES-128-GCM-SHA256, RSA-AES-256-CBC-SHA, RSA-AES-256-GCM-SHA384, TLS-AES-128-GCM-SHA256, TLS-AES-256-GCM-SHA384, TLS-CHACHA20-POLY1305-SHA256

Default Cipher Suites

The list of default cipher suites is: ECDHE-ECDSA-AES-256-GCM-SHA384, ECDHE-RSA-AES-256-GCM-SHA384, ECDHE-ECDSA-CHACHA20-POLY1305, ECDHE-RSA-CHACHA20-POLY1305, ECDHE-ECDSA-AES-128-GCM-SHA256, ECDHE-RSA-AES-128-GCM-SHA256, ECDHE-ECDSA-AES-128-CBC-SHA256, ECDHE-RSA-AES-128-CBC-SHA256

Build Docker images

docker build -t mulesoft-traceability -f Dockerfile.traceability .

Deploy in Kubernetes Cluster

After making the public/private keys associated with the CENTRAL_AUTH_CLIENTID, make a resource of type secret from the files.

kubectl create secret generic key-pair --from-file=publicKey=public_key.pem --from-file=privateKey=private_key.pem

Also, create a secret based on the credentials associated with the mulesoft account by populating the values in muleauth-traceability.yaml

apiVersion: v1
kind: Secret
metadata:
  name: muleauth
type: Opaque
stringData:
  username:
  password:
kubectl apply -f mulesoft-auth.yaml

Provide the environment Variables required by the manifest file.

kubectl apply -f traceability-deployment.yaml