Releases: getsops/sops
v3.8.0-rc.1
Note from the Maintainers
We're thrilled to introduce the v3.8.0-rc.1
release candidate of SOPS, now a CNCF Sandbox project under the stewardship of a new group of maintainers.
This release involved significant effort in rewriting and enhancing key source implementations. Notably, we've modernized the code and updated all SDKs, including updating to AWS SDK v2. Some of these implementations had been neglected, lacking support for newer features. Now, they should be good for extended service.
Moreover, we've completely revamped the release process. Beyond delivering binaries and packages, it now provides enhanced assurance by publishing SBOMs (Software Bill of Materials), SLSA3 provenance attestation, and a Cosign signed checksums file as GitHub release artifacts.
Additionally, the Darwin binary is now distributed as a "fat binary", making it executable on both AMD64 and ARM64 machines.
The goal of this release candidate is primarily to validate our new release process and the quite impactful changes mentioned above. Take it for a spin and share your thoughts, your feedback is much appreciated!
Important Information for SOPS SDK Users
With the project transitioning from the Mozilla Foundation to the CNCF, the Go module path has been updated to reflect this change in ownership. If you use go.mozilla.org/sops/v3
as a library, going forward, import the Go Module using github.com/getsops/sops/v3
. Apart from this small adjustment, the SDK's API remains fully backward compatible.
For a one-liner to quickly implement this change throughout your codebase, please refer to: #1246 (comment)
Installation
To install sops
, download one of the pre-built binaries provided for your platform from the artifacts attached to this release.
For instance, if you are using Linux on an AMD64 architecture:
# Download the binary
curl -LO https://github.com/getsops/sops/releases/download/v3.8.0-rc.1/sops-v3.8.0-rc.1.linux.amd64
# Move the binary in to your PATH
mv sops-v3.8.0-rc.1.linux.amd64 /usr/local/bin/sops
# Make the binary executable
chmod +x /usr/local/bin/sops
Verify checksums file signature
The checksums file provided within the artifacts attached to this release is signed using Cosign with GitHub OIDC. To validate the signature of this file, run the following commands:
# Download the checksums file, certificate and signature
curl -LO https://github.com/getsops/sops/releases/download/v3.8.0-rc.1/sops-v3.8.0-rc.1.checksums.txt
curl -LO https://github.com/getsops/sops/releases/download/v3.8.0-rc.1/sops-v3.8.0-rc.1.checksums.pem
curl -LO https://github.com/getsops/sops/releases/download/v3.8.0-rc.1/sops-v3.8.0-rc.1.checksums.sig
# Verify the checksums file
cosign verify-blob sops-v3.8.0-rc.1.checksums.txt \
--certificate sops-v3.8.0-rc.1.checksums.pem \
--signature sops-v3.8.0-rc.1.checksums.sig \
--certificate-identity-regexp=https://github.com/getsops \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com
Verify binary integrity
To verify the integrity of the downloaded binary, you can utilize the checksums file after having validated its signature:
# Verify the binary using the checksums file
sha256sum -c sops-v3.8.0-rc.1.checksums.txt --ignore-missing
Verify artifact provenance
The SLSA provenance of the binaries, packages, and SBOMs can be found within the artifacts associated with this release. It is presented through an in-toto link metadata file named provenance.intoto.jsonl
. To verify the provenance of an artifact, you can utilize the slsa-verifier
tool:
# Download the metadata file
curl -LO https://github.com/getsops/sops/releases/download/v3.8.0-rc.1/provenance.intoto.jsonl
# Verify the provenance of the artifact
slsa-verifier verify-artifact <artifact> \
--provenance-path provenance.intoto.jsonl \
--source-uri github.com/getsops/sops \
--source-tag v3.8.0-rc.1
Container Images
The sops
binaries are also available as container images, based on Debian (slim) and Alpine Linux. The Debian-based container images include any dependencies which may be required to make use of certain key services, such as GnuPG, AWS KMS, Azure Key Vault, and Google Cloud KMS. The Alpine-based container images are smaller in size, but do not include these dependencies.
These container images are available for the following architectures: linux/amd64
and linux/arm64
.
GitHub Container Registry
ghcr.io/getsops/sops:v3.8.0-rc.1
ghcr.io/getsops/sops:v3.8.0-rc.1-alpine
Quay.io
quay.io/getsops/sops:v3.8.0-rc.1
quay.io/getsops/sops:v3.8.0-rc.1-alpine
Verify container image signature
The container images are signed using Cosign with GitHub OIDC. To validate the signature of an image, run the following command:
cosign verify ghcr.io/getsops/sops:v3.8.0-rc.1 \
--certificate-identity-regexp=https://github.com/getsops \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
-o text
Verify container image provenance
The container images include SLSA provenance attestations. For more information around the verification of this, please refer to the slsa-verifier
documentation.
Software Bill of Materials
The Software Bill of Materials (SBOM) for each binary is accessible within the artifacts enclosed with this release. It is presented as an SPDX JSON file, formatted as <binary>.spdx.sbom.json
.
What's Changed
- Update to urfave/cli to 1.22.7 by @daurnimator in #1063
- pgp: modernize and improve, and add tests by @hiddeco in #1054
- azkv: update SDK to latest, add tests, tidy by @hiddeco in #1067
- Fix comments displacement by @felixfontein in #1069
- age: improve identity loading, add tests, tidy by @hiddeco in #1064
- kms: AWS SDK V2, allow creds config, add tests by @hiddeco in #1065
- gcpkms: update SDK to latest, add tests, tidy by @hiddeco in #1072
- hcvault: update API, add tests, tidy by @hiddeco in #1085
- Upgrade dependencies by @ajvb in #1091
- --version without network request by @felixfontein in #1115
- Replace deprecated gopass package with term by @flx5 in #1113
- Support --input-type for updatekeys by @felixfontein in #1116
- Add DCO and CoC by @hiddeco in #1233
- Update rustc functional tests to v1.70.0 by @hiddeco in #1234
- build: update Go to 1.20 by @hiddeco in #1148
- azkv: update Azure SDK to v0.10.0 by @hiddeco in #1092
- chore: update Go dependencies by @hiddeco in #1147
- Remove remaining CircleCI workflow by @hiddeco in #1237
- build: run CLI workflow on
main
by @hiddeco in #1243 - build(deps): bump github.com/docker/docker from 20.10.7+incompatible to 20.10.24+incompatible by @dependabot in #1242
- Delete obsolete
validation/
artifact by @hiddeco in #1248 - gcpkms: allow use of Google default credentials by @hiddeco in #1249
- Revert intro of
WithError
for most key sources by @hiddeco in #1146 - Rename Go module to
github.com/getsops/sops/v3
by @hiddeco in #1247 - kms: update dependencies by @hiddeco in #1257
- gcpkms: update GCP related dependencies by @hiddeco in #1255
- azkv: update dependencies by @hiddeco in #1256
- Revamp release automation by @hiddeco in #1250
- Update various bits of documentation by @hiddeco in #1244
- Do not report version when upstream check fails by @stoned in #1124
- Add missing --encrypt flag from Vault example by @hrobertson in #1060
- fix
set
feature when adding a new root hierarchy by @vbehar in #899 - Ensure stable order of SOPS parameters in dotenv file by @edofic in #1101
- Add documentation on how to use age in .sops.yaml by @hramberger in #1192
- Clean up more Mozilla references by @Gobd in #1260
- Improve Make targets and address various issues by @hiddeco in #1258
- Update dependencies by @hiddeco in #1264
- version: rewrite command to use GitHub endpoints by @hiddeco in https://github.com/ge...
v3.7.3
Changes:
- Upgrade dependencies (#1024, #1045)
- Build alpine container in CI (#1018, #1032, #1025)
- keyservice: accept KeyServiceServer in LocalClient (#1035)
- Add support for GCP Service Account within
GOOGLE_CREDENTIALS
(#953)
Bug fixes:
- Upload the correct binary for the linux amd64 build (#1026)
- Fix bug when specifying multiple age recipients (#966)
- Allow for empty yaml maps (#908)
Commits
- [75cd389]: Add a test to reproduce #907 (ikedam) #908
- [108b211]: Allow empty maps for yaml (#907) (ikedam) #908
- [ea8b3bb]: support gcp credentials as env var (Kaplinsky, Joshua B) #953
- [c0dc484]: Update keysource.go (Josh Kaplinsky) #953
- [63fa89c]: Merge remote-tracking branch 'remotes/origin/develop' into feature/907_FixEmptyYaml (ikedam) #908
- [b926cf9]: Build alpine container in CI (#870) (ikedam) #1018
- [234bf9f]: Upgrade all dependencies (AJ Bahnken) #1024
- [4277de4]: Remove duplicated stage from Dockerfile.alpine (Shouichi Kamiya) #1025
- [605fb27]: Explicitly build linux amd64 binary (Janis Peisenieks) #1026
- [7ebee3d]: This fixes a bug with age encryption when specifying multiple age recipients (Cedric Kienzler) #966
- [b5f5f28]: Make
masterKeyFromRecipient
private (Cedric Kienzler) #966 - [1dc90ad]: Add tests for single key (Cedric Kienzler) #966
- [3875b00]: Use latest dockerd in CI to allow build alpine image (#870) (ikedam) #1032
- accept KeyServiceServer in LocalClient #1035 (Hidde Beydals)
- [1bb30e2]: Limit role session name length to 64 characters. (AJ Bahnken) #1037
- [a01208c]: Update golang.org/x/crypto (Hidde Beydals) #1045
- [e128fa2]: Update keyservice implementation dependencies (Hidde Beydals) #1045
- [220b652]: Update golang.org/x/{net,oauth2,sys} dependencies (Hidde Beydals) #1045
- [477b61f]: Update remaining dependencies (Hidde Beydals) #1045
- [25817ed]: Replace x/crypto/openpgp with ProtonMail/go-crypto (Hidde Beydals) #1045
- [07aea97]: Merge remote-tracking branch 'upstream/develop' into develop (Josh Kaplinsky) #953
- [4ffb54c]: Use custom GOOGLE_CREDENTIALS or fallback to default (Josh Kaplinsky) #953
- [17fb03f]: Merge remote-tracking branch 'upstream/develop' into develop (Josh Kaplinsky) #953
- [15583bd]: prep for v3.7.3 (AJ Bahnken) #1053
v3.7.2
Changes:
- README updates (#861, #860)
- Various test fixes (#909, #906, #1008)
- Added Linux and Darwin arm64 releases (#911, #891)
- Upgrade to go v1.17 (#1012)
- Support SOPS_AGE_KEY environment variable (#1006)
Bug Fixes
- Make sure comments in yaml files are not duplicated (#866)
- Make sure configuration file paths work correctly relative to the config file in us (#853)
Commits
- [e98451e]: Remove unused age code (Hidde Beydals) #842
- [2395f07]: small release workflow fix (AJ Bahnken)
- [c5b1298]: Match file path relative to config file's directory (2) (#853) (Paulo Lieuthier) #853
- [7626399]: fix missing argument in encrypting with age section (#860) (Damien Léger) #860
- [3acf53e]: Correct path to age keys.txt in documentation (#861) (Alexey Odinokov) #861
- [5af8e63]: Prevent comment duplication. (#866) (Felix Fontein) #866
- [688fa22]: Remove SOPS_GPG_KEYSERVER reference in README.rst (Enrico204) #883
- [02d57ca]: Tests should not fail fast (ikedam) #909
- [6130ffe]: Use the key of [email protected] for the unit test (#882) (#906) (ikedam) #906
- [56bbf84]: Added support for go 1.16 and darwin-arm64 (Nikola Milojević) #911
- [f6e9891]: fix a typo (brant4test) #967
- [086c11d]: Support SOPS_AGE_KEY environment variable (Christian Hoffmeister) #1006
- [a98768b]: Fix flakey test run on OSX (Alex Castle) #1008
- [6bfd72d]: Merge remote-tracking branch 'origin/develop' into sops-age-key-env (Christian Hoffmeister) #1006
- [dc2267e]: Upgrade to go 1.17 (AJ Bahnken) #1012
- [076f295]: rm extra whitespace in CircleCI config (AJ Bahnken) #1012
- [7f503bc]: Upgrade release job to go 1.17 (AJ Bahnken) #1012
- [4bd3e5a]: Update pip package name in Dockerfile (AJ Bahnken) #1012
- [b7c58e4]: Move age environment variable names to constants (Christian Hoffmeister) #1006
- [684d338]: Merge branch 'develop' of https://github.com/mozilla/sops into mozilla-develop (Nikola Milojević) #911
- [0cfcae6]: Merge branch 'mozilla-develop' into develop (Nikola Milojević) #911
- [dff9c31]: Merge branch 'develop' into sops-age-key-env (AJ Bahnken) #1006
- [c586534]: Change labeling and upload linux arm64 (AJ Bahnken) #1014
- [d6bc216]: README and author tweaks (AJ Bahnken) #1016
- [822ce48]: Add arm64 .deb and .rpm builds (Janis Peisenieks) #891
- [baec2a5]: Merge branch 'develop' into feature/testsSholdNotFailFast (ikedam) #909
- [035672f]: prep v3.7.2 (AJ Bahnken) #1020
- [b67c7a7]: Fixed CHANGELOG formatting (AJ Bahnken) #1020
v3.7.1
Commits
- [9cc95d4]: Add release workflow (AJ Bahnken) #843
- [dfc7af2]: swap to fork of action-automatic-releases (AJ Bahnken) #843
- [fdf4517]: Trim space from age keys (Johan Fleury) #846
- [1504dbc]: Run CI tests against master as well (AJ Bahnken) #848
- [8a2fbc0]: Initial patch for advisory (AJ Bahnken) #852
- [e5bf171]: go.sum fix (AJ Bahnken) #852
- [706d0c7]: Merge pull request from GHSA-x5c7-x7m2-rhmf (AJ Bahnken) #852
- [8838db6]: v3.7.1 prep (AJ Bahnken) #852
- [68e2a82]: fix release workflow (AJ Bahnken)
v3.7.0
v3.6.1
v3.6.0
Features:
- Support for encrypting data through the use of Hashicorp Vault (#655)
sops publish
now supports--recursive
flag for publishing all files in a directory (#602)sops publish
now supports--omit-extensions
flag for omitting the extension in the destination path (#602)- sops now supports JSON arrays of arrays (#642)
Improvements:
- Updates and standardization for the dotenv store (#612, #622)
- Close temp files after using them for edit command (#685)
Bug fixes:
- AWS SDK usage now correctly resolves the
~/.aws/config
file (#680) sops updatekeys
now correctly matches config rules (#682)sops updatekeys
now correctly uses the config path cli flag (#672)- Partially empty sops config files don't break the use of sops anymore (#662)
- Fix possible infinite loop in PGP's passphrase prompt call (#690)
Project changes:
v3.5.0
Features:
* `sops exec-env` and `sops exec-file`, two new commands for utilizing sops secrets within a temporary file or env vars
Bug fixes:
* Sanitize AWS STS session name, as sops creates it based off of the machines hostname
* Fix for `decrypt.Data` to support `.ini` files
* Various package fixes related to switching to Go Modules
* Fixes for Vault-related tests running locally and in CI.
Project changes:
* Change to proper use of go modules, changing to primary module name to `go.mozilla.org/sops/v3`
* Change tags to requiring a `v` prefix.
* Add documentation for `sops updatekeys` command
3.4.0
Features:
sops publish
, a new command for publishing sops encrypted secrets to S3, GCS, or Hashicorp Vault- Support for multiple Azure authentication mechanisms
- Azure Keyvault support to the sops config file
encrypted_regex
option to the sops config file
Bug fixes:
- Return non-zero exit code for invalid CLI flags
- Broken path handling for sops editing on Windows
go lint/fmt
violations- Check for pgp fingerprint before slicing it
Project changes:
- Build container using golang 1.12
- Switch to using go modules
- Hashicorp Vault server in Travis CI build
- Mozilla Publice License file to repo
- Replaced expiring test gpg keys
3.3.1
Bug fixes:
- Make sure the pgp key fingerprint is longer than 16 characters before
slicing it. (#463) - Allow for
--set
value to be a string. (#461)
Project changes:
- Using
develop
as a staging branch to create releases off of. What
is inmaster
is now the current stable release. - Upgrade to using Go 1.12 to build sops
- Updated all vendored packages