Skip to content

Upgrade to v0.6: flags and variables become one file

v0.6.0 removed every flag and environment variable of the server binaries and jobs, with no aliases. One validated configuration file replaces them (0063). The tables map each old name to its key. The keys are the file's version 1. v0.13 reads them for one more minor and expects version 2's ...Secret names (the v0.13 upgrade). A flag with no variable is listed with its flag only.

audit-writer

was now
--mode, AUDIT_MODE mode
--listen, AUDIT_LISTEN listen.address
--deployment, AUDIT_DEPLOYMENT deployment
--workloads, AUDIT_WORKLOADS workloads
--anonymous-writes anonymousWrites: true
--catalogues, AUDIT_CATALOGUES catalogues
--replicas, AUDIT_REPLICAS replicas
--database, AUDIT_DATABASE database.url, with the password in database.passwordEnv rather than the URL
--bucket, AUDIT_BUCKET archive.bucket.name
--prefix, AUDIT_PREFIX archive.prefix
--region, AWS_REGION archive.bucket.region
--endpoint, AUDIT_S3_ENDPOINT, AWS_ENDPOINT_URL_S3 archive.bucket.endpoint
--path-style, AUDIT_S3_PATH_STYLE archive.bucket.pathStyle
--lock-mode, AUDIT_LOCK_MODE; --governance archive.lockMode (governance for the flag)
--kms-key, AUDIT_KMS_KEY archive.kmsKey
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY archive.bucket.credentialsEnv, naming the variables. Unset still means the SDK's ambient credentials
--key-provider, AUDIT_KEY_PROVIDER keys.provider
--key-root, AUDIT_KEY_ROOT keys.local.rootFile
--key-dir, AUDIT_KEY_DIR keys.local.dir
--keep-identities (default true) forgetIdentities (default false): the sense is reversed
--transit-prefix, AUDIT_TRANSIT_PREFIX keys.transit.prefix
--transit-address, AUDIT_TRANSIT_ADDRESS, BAO_ADDR, VAULT_ADDR keys.transit.openbao.address
--transit-mount, AUDIT_TRANSIT_MOUNT keys.transit.openbao.mount
--transit-namespace, AUDIT_TRANSIT_NAMESPACE, BAO_NAMESPACE, VAULT_NAMESPACE keys.transit.openbao.namespace
--transit-ca-file, AUDIT_TRANSIT_CA_FILE, BAO_CACERT, VAULT_CACERT keys.transit.openbao.caFile
--transit-auth-mount, --transit-auth-role, --transit-jwt-file (and their AUDIT_TRANSIT_*) keys.transit.openbao.login.mount, .role, .jwtFile
--transit-token-file, AUDIT_TRANSIT_TOKEN_FILE keys.transit.openbao.tokenFile
BAO_TOKEN, VAULT_TOKEN keys.transit.openbao.tokenEnv, naming a variable of your choosing. The two names are no longer read
--stream-url, AUDIT_STREAM_URL stream.nats.url
--stream, AUDIT_STREAM stream.name
--stream-token-file, AUDIT_STREAM_TOKEN_FILE stream.nats.tokenFile
--consumer, AUDIT_CONSUMER stream.consumer
--stream-batch, AUDIT_STREAM_BATCH stream.batch
--stream-ack-wait stream.ackWait
--roll-interval roll.interval
--roll-max-records, AUDIT_ROLL_MAX_RECORDS roll.maxRecords
--version, AUDIT_VERSION removed: the observer version is the build's own. --version still prints it

audit-query

was now
--listen, AUDIT_LISTEN listen.address
--searcher, AUDIT_SEARCHER searcher
--database, AUDIT_DATABASE database.url and database.passwordEnv
--grants, AUDIT_GRANTS grants
--deployment, AUDIT_DEPLOYMENT deployment
--sink, AUDIT_SINK sink.url
AUDIT_TOKEN_FILE sink.tokenFile
--bucket, --prefix, --endpoint, --path-style and their variables archive.bucket.name, archive.prefix, archive.bucket.endpoint, archive.bucket.pathStyle
AUDIT_REGION, AWS_REGION archive.bucket.region
--exports, AUDIT_EXPORTS exports.bucket.name
--exports-endpoint, AUDIT_EXPORTS_ENDPOINT; --exports-path-style, AUDIT_EXPORTS_PATH_STYLE exports.bucket.endpoint, .pathStyle. The exports bucket no longer inherits the archive's: name them
AUDIT_EXPORTS_ACCESS_KEY_ID, AUDIT_EXPORTS_SECRET_ACCESS_KEY, AUDIT_EXPORTS_SESSION_TOKEN exports.bucket.credentialsEnv.accessKeyID, .secretAccessKey, naming the variables. A session token is not carried: use ambient credentials
--export-expiry, --export-link-valid exports.expiry, exports.linkValid
--key-provider and the other key flags keys, as for the writer. The provider turns resolve on
--version, AUDIT_VERSION removed

The jobs

was now
--deployment, AUDIT_DEPLOYMENT deployment
--bucket, --prefix, --region, --endpoint, --path-style, --lock-mode archive.bucket.name, archive.prefix, archive.bucket.region, .endpoint, .pathStyle, archive.lockMode
--sink, AUDIT_SINK sink.url; AUDIT_TOKEN_FILE becomes sink.tokenFile
--instance removed: the job names itself
verify --profile (repeatable) profiles
verify --last last
verify --public-key, --lookback, --record removed with the v1 layout: verify needs no key
purge --database database.url and database.passwordEnv
purge --identifying-after, --dedupe-window identifyingAfter, dedupeWindow
clock-sync --ntp (repeatable), --max-offset, --timeout ntp, maxOffset, timeout
migrate --database, --reader database, reader (and writer, observe, purge, new)

--dry-run of audit purge, and --from and --to of audit verify, remain on the command line for a person: they are not scheduled work and have no key.

Chart values

was now
bucket, prefix, region, kmsKey, lockMode writer.config.archive.bucket.name, .prefix, .bucket.region, .kmsKey, .lockMode; the same under the query service's and each job's archive
governance: true archive.lockMode: governance
endpoint, pathStyle archive.bucket.endpoint, .pathStyle
existingSecret (S3 keys) archive.bucket.credentialsEnv and a secretEnv entry per variable
anonymousWrites writer.config.anonymousWrites
database.url, database.existingSecret writer.config.database.url and passwordEnv, with the password in writer.secretEnv; the same for receiver, migrate and jobs.purge
database.migrate migrate.enabled, with migrate.config.database
query.database.* query.config.database with query.secretEnv; query.database.role is migrate.config.reader
query.exports.bucket, .expiry, .linkValid, .endpoint, .pathStyle, .existingSecret query.config.exports.bucket.name, .expiry, .linkValid, .bucket.endpoint, .pathStyle, .bucket.credentialsEnv
query.searcher query.config.searcher
query.resolve.* query.config.keys, and query.keysVolume for the local provider
keys.provider writer.config.keys.provider
keys.local.existingSecret writer.secretMounts and keys.local.rootFile
keys.local.persistence keysVolume, and keys.local.dir: /var/lib/audit/keys
keys.transit.prefix keys.transit.prefix
keys.transit.role, openbao.auth.mount, .audience, .expirationSeconds keys.transit.openbao.login.mount, .role, .jwtFile, with a tokens entry of that audience and expirationSeconds
keys.transit.token.existingSecret, .tokenFile openbao.tokenEnv with secretEnv, or openbao.tokenFile with secretMounts
openbao.address, .mount, .namespace keys.transit.openbao.address, .mount, .namespace
stream.url, .name, .consumer, .batch, .ackWait stream.nats.url, .name, .consumer, .batch, .ackWait in writer.config and receiver.config
stream.token.enabled, .audience, .expirationSeconds a tokens entry on receiver and writer, and stream.nats.tokenFile
roll.interval, roll.maxRecords writer.config.roll.interval, .maxRecords
workloadIdentity.expirationSeconds expirationSeconds of each component's tokens entry
jobs.verify.publicKey.*, .window jobs.verify.config.last (no key: verify reads the archive only)
jobs.digest.* removed with the v1 layout: the digest job read the v0 layout. jobs.notary replaces it (audit-notary, its own image, signer with a P-384 key)
jobs.purge.identifyingAfter, .dedupeWindow jobs.purge.config.identifyingAfter, .dedupeWindow
jobs.clockSync.ntp, .maxOffset jobs.clockSync.config.ntp, .maxOffset
telemetry.* OTEL_* environment, set on the pods by the platform
trust, catalogues, profiles, workloadIdentity, extensions, networkPolicy, mode, replicas, writer.consumers unchanged

The verify job is one CronJob, <fullname>-verify, covering the profiles in its profiles or every profile. A query service's region comes from archive.bucket.region. A store that needs S3 static credentials names the variables in credentialsEnv, and the chart puts only those into the pod. Other changes are in the CHANGELOG.