providers: implement SOPS provider#58
Conversation
|
Could we for starters use sops cli? |
|
@domenkozar to clarify: Are you saying as part of an MVP to utilize the SOPS CLI and later explore this direct integration with the SOPS code, or are you saying this is a direction you don't want to go down at all? Using the CLI means requiring having that separately installed, but I suppose that's the standard approach for the integrations supported by secretspec. |
|
I'd also be fine using sops-ffi if it was an externally maintained crate |
Ah, but I don't want to maintain it either 😅. When I get around to it I'll refactor this to assume the sops CLI is available in the environment. |
|
@domenkozar Just listened to the Devenv 2.0 Full Time Nix episode and heard you mentioning the FFI-based approach for the SOPS integration 😅. |
I think it's the right way long term, but I really want to maintain it separately. Maybe we create a repo on cachix and then transfer it over? |
Okay, I've parked the current implementation at https://github.com/euphemism/secretspec/tree/sops-integration-via-ffi. I will rework this MVP to call out to the SOPS CLI. |
adfcf2d to
537b654
Compare
|
Okay, back to square one (ish). Invokes the SOPS CLI. Still need to do a heavy review and refactor pass on all of this generated code, and flesh out the test cases. |
e2929ba to
6732d6a
Compare
|
Initial review and refactor done. Getting closer, not quite yet ready to transition out of draft. Some further refactoring and tests writing remains. |
eb729f8 to
67a4708
Compare
26cfccd to
81c1e2e
Compare
2ada7e8 to
4577097
Compare
| 3. `docs/src/content/docs/concepts/providers.md` - Add a row to the "Available Providers" table | ||
| 4. `docs/src/content/docs/reference/providers.md` - Add a provider section **and** a row in the "Security Considerations" table | ||
| 5. `docs/src/pages/index.astro` - Add to the `providerMetadata` array (top of file) **and** to the `secretspec config init` mini-terminal in the hero | ||
| 5. `docs/src/pages/index.astro` - Add to the `providerMetadata` array (top of file). |
There was a problem hiding this comment.
This did not appear to be a thing?
4577097 to
59573dc
Compare
|
@domenkozar This is generally ready for review. |
59573dc to
e9092d4
Compare
| | AWSSM | ✅ AWS KMS | Cloud (AWS) | ✅ Yes | | ||
| | Vault/OpenBao | ✅ Vault encryption | Vault/OpenBao server | ✅ Yes | | ||
| | BWS | ✅ End-to-end | Cloud (Bitwarden) | ✅ Yes | | ||
| | SOPS | ✅ Assorted | Local Filesystem | ✅ Yes | |
There was a problem hiding this comment.
I added an entry to the table here, but apart from the table this page seems vestigial? It is duplication of content available on the individual providers' pages.
028edfb to
fe4324e
Compare
|
The testing workflows are failing for a few reasons. The non-Windows ones are failing here: Implying Node modules are not being installed, so in attempt to address this I set The Windows run fails with: This makes sense, |
fe4324e to
83a85c8
Compare
|
Please emit only the file location plus non-secret attribution and drop the credential params. The values still reach (Not caught today because |
83a85c8 to
a990f62
Compare
a990f62 to
de7c23a
Compare
Oops. Added a
I believe this is the sum total of sensitive fields, but you should probably double check this. |


Hey all,
This implements a SOPS-backed provider, supporting the full range of SOPS capabilities (I think [I am unable to realistically test this]).
This is some LLM output that I am in the process of cleaning up, but I wanted to get the draft in front of you for some initial feedback. Instead of using a re-implementation of SOPS à la rops, this uses Rust's FFI support to interop with the Go library through a C FFI. I feel more comfortable with this from a security perspective, and it allows for utilizing the full feature set/API surface of SOPS.Closes #5