The DBSheriff installer is a shell script that you run as root, and it decides what else runs as root on your host: it downloads the install package, checks it, unpacks it and hands over to the guided setup. Everything after it is checked by the script; the script itself is the one thing you have to check yourself, and this page is how, before you run it.
It is signed, with Sigstore (keyless: there is no DBSheriff private key that could leak). A signature that verifies proves which workflow of which repository, at which release tag, produced those exact bytes. It does not depend on the server you downloaded the script from, so a changed script or a changed signature file on that server fails the check.
For release v1.4.0 the signer is exactly this identity, issued by exactly this provider:
Repository dbsheriffai/dbsheriff
Workflow .github/workflows/release.yml
Tag v1.4.0 (a release tag: v, three numbers)
Identity https://github.com/dbsheriffai/dbsheriff/.github/workflows/release.yml@refs/tags/v1.4.0
Identity pattern ^https://github\.com/dbsheriffai/dbsheriff/\.github/workflows/release\.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9.]+)?$
Issuer https://token.actions.githubusercontent.com
Do not take these values from this page alone. They are printed in three places that do not depend on each other; read them in at least two and compare:
https://get.dbsheriff.ai/docs/v1.4.0/verify-the-installer.html (and in
customer_docs/ inside the install package, which you can read from an earlier install),If they differ from each other, stop and write to security@dbsheriff.ai.
cosign is the Sigstore client. Get it from somewhere that is not us:
No cosign, but Docker (the product needs Docker anyway)? Run the same check through the cosign image, which is pinned by digest, so it cannot change under you:
ghcr.io/sigstore/cosign/cosign:v3.1.3@sha256:9e5c2f2edc34351160407ca3416c61855bdf9403c3c5936e0f0be7fc261611b8
Download the script and its signature, verify, and only then run. Replace v1.4.0 by the
release you were given; the download token comes from your e-mail.
set -e
curl -fsSLO https://get.dbsheriff.ai/install-v1.4.0.sh
curl -fsSLO https://get.dbsheriff.ai/install-v1.4.0.sh.sigstore.json
cosign verify-blob --bundle install-v1.4.0.sh.sigstore.json \
--certificate-identity https://github.com/dbsheriffai/dbsheriff/.github/workflows/release.yml@refs/tags/v1.4.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
install-v1.4.0.sh
sudo bash install-v1.4.0.sh --version v1.4.0 --token '<download token>'
set -e stops at the first command that fails, so a script that does not verify is never run.
Add the options your setup needs after --token (for example --airgap; the e-mail's command
shows them), and everything after a lone -- goes to the guided installer.
The same check through Docker, with no cosign installed (the files are mounted read-only):
docker run --rm --user "$(id -u):$(id -g)" -e HOME=/tmp -v "$PWD:/w:ro" \
ghcr.io/sigstore/cosign/cosign:v3.1.3@sha256:9e5c2f2edc34351160407ca3416c61855bdf9403c3c5936e0f0be7fc261611b8 \
verify-blob --bundle /w/install-v1.4.0.sh.sigstore.json \
--certificate-identity https://github.com/dbsheriffai/dbsheriff/.github/workflows/release.yml@refs/tags/v1.4.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
/w/install-v1.4.0.sh
Verified OK is the answer you want. The digest of the script is also in the release notes of
each release (sha256 of install.sh), if you want a second look: sha256sum install-v1.4.0.sh.
curl -fsSL https://get.dbsheriff.ai | sudo bash -s -- --version v1.4.0 --token '<download token>'
is a convenience for an evaluation on a host you can throw away. It runs the script without checking it: whatever the network and the server hand you is run as root. Do not use it for a host that matters.
Once it runs, the installer verifies the signature of the release's checksum list (and, with
--airgap, of the image bundle's checksum and of the image manifest) against the same identity
for that release's tag, before it trusts a checksum. It stops if the signature is missing or
does not verify, or if there is no way to verify it: it uses the host's cosign, or else the
pinned cosign image through Docker, or else it refuses. --skip-signature goes on without any
signature check; it says so loudly and leaves a checksum served from the same place as the file
as the only protection. Do not use it for a real install.
Verification normally fetches Sigstore's trusted root from its public repository
(tuf-repo-cdn.sigstore.dev). An air-gapped host cannot, so the release ships the root:
https://get.dbsheriff.ai/trusted_root.json on a machine that can, and check it:Trusted root sha256: 6494e21ea73fa7ee769f85f57d5a3e6a08725eae1e38c755fc3517c9e6bc0b66
(sha256sum trusted_root.json; the installer pins the same value, so a different file is
refused),
- copy it to the host, and give it to both steps:
cosign verify-blob --trusted-root trusted_root.json --bundle install-v1.4.0.sh.sigstore.json \
--certificate-identity https://github.com/dbsheriffai/dbsheriff/.github/workflows/release.yml@refs/tags/v1.4.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
install-v1.4.0.sh
sudo bash install-v1.4.0.sh --version v1.4.0 --token '<download token>' --trusted-root trusted_root.json
Sigstore rotates its trusted root about once a year. A root that is out of date makes
verification fail (it never passes quietly); download the current trusted_root.json again
and compare its checksum with the one above.
Do not run the script. A failure means one of: the file or the signature was changed on the
way or on the server, you asked for the signature of a different release, your cosign is too old
for the signature format (cosign version; use a current one), or, with a trusted root, the
root is out of date. Download both files again over a different network and repeat the check;
if it still fails, keep the two files and write to security@dbsheriff.ai.
Everything else a release contains (the images, the packages, the air-gap bundle) can be verified the same way: see verify your download.