Open cr1cr1 opened 2 years ago
Good issue
What fortuitous timing! I was literally yesterday thinking about how we could move our secret providers to a one of our plugin interfaces. Both to help with some internal build dependencies (The actually pulumi engine executable wouldn't have to link directly to the aws sdk for example) but also to allow community members to contribute their own secret plugins.
We've got a hackweek coming up soon, I'll see if I can put a framework together for this then.
So I did look into this for our hackweek. It looks quite doable, and I think I've already got a good idea of what the cloud and passphrase providers look like when pulled into plugins, which also defines what the grpc interface would look like. You can see these on my pluginSecrets branch, eg. https://github.com/pulumi/pulumi/tree/fraser/pluginSecrets/cloud-secrets.
There's a load of clean up we need to do through the main engine to enable this though, but I'm going to try and do that in small refactor passes over the coming weeks.
In the meantime it would help if you had a look at the proto definition for the secrets service: https://github.com/pulumi/pulumi/blob/fraser/pluginSecrets/proto/pulumi/secrets/secrets.proto
And comment here if you think it would be possible to implement an AGE provider against that interface. Happy to answer any questions you've got about the interface here on on community slack (@Fraser Waters
, not @Fraser
)
Is there any development on this? We use age/sops in our repos and this would be pretty awesome.
I've been chipping away at it over the months to get in the refactors needed to make it more feasible to switch over to the plugin system, but this hasn't been priority work so it's been slow going.
I expect this will be possible at some point, but it's very hard to guess time scales for it right now.
@rafaribe Do have an example of using Pulumi
with SOPS
or age
?
Do have an example of using Pulumi with SOPS or age?
You can treat the Pulumi.<stack>.yaml
file as an input to sops to encrypt every value there. The Pulumi secret backend can simply be local password with empty string, for example.
This issue is dead? Sops with age would be super cool feature.
This issue is dead? Sops with age would be super cool feature.
Not dead, just very low priority. Some small bits have been done over the last few months to progress this forward.
/xref https://github.com/pulumi/home/issues/3297
Cross-referencing this to an internal post mortem issue, since pluginifying the secret manager came up there as a potential action item.
Using SOPS to encrypt secrets and state would be a great improvement over passphrase encryption
Hello!
Issue details
passphrase
provider, so a good addition would be able to use other encryption mechanisms like age--secrets-provider="age://age1mkllh99324xaywsh3uzr85pzwa05w7muhaga30denf5zmm88ufdsxqtyct,ssh-ed25519 AAAA...,ssh-rsa AAAA..."
--secrets-provider="age:///path/to/recipients.txt"
I would like to try and implement this feature myself, as I believe is not very difficult to do.
Affected area/feature