Show HN: Infisical – open-source secrets manager
232 points| vmatsiiako | 3 years ago |github.com
We know secret managers exist but, in our experience, they’re too complicated, not comprehensive, not user-friendly, or a mix of all three — other nicer ones are closed-source and don’t have self-hosted options available. That’s why we’re on a mission to make secret management more accessible to every developer — not just security teams.
We’ve launched this repo under the MIT license so any developer can use the tool. The goal is to not charge individual developers. We make money by charging a license fee for some future enterprise features as well as providing a hosted version and support.
In the coming weeks, we plan to add features like key rotation, access logs + more integrations. We’d love to hear your thoughts and any feature requests!
Give it a try (https://github.com/Infisical/infisical), and let us know what you think!
Main website: https://infisical.com/
[+] [-] jbotz|3 years ago|reply
The TLDR is, first environment variables are visible to every process running as the same user on the system (try 'ps eww') and second they leak very easily in debug logs, etc.
[+] [-] vmatsiiako|3 years ago|reply
We started developing Infisical for the majority of people using environment variables right now. We actually have some plans for accommodating for other more secure approaches very soon. Stay tuned.
Feel free to join our Slack for any updates: https://join.slack.com/t/infisical-users/shared_invite/zt-1k...
[+] [-] klabb3|3 years ago|reply
[+] [-] benatkin|3 years ago|reply
The post strongly recommends storing the secret in a file instead of an environment variable, but it doesn't say anything about unmounting the secrets after initialization. Usually if you have access to one you also have access to the other. It also doesn't mention that you might not have any subprocess, or that if you do have a subprocess the subprocess might need the secrets.
If you're using containers to maintain the principle of least privilege, it's important to carefully examine everything that has access to the container, but having different levels of access within the container beyond what the programming language provides is a niche use case.
The programming language helps you know what the inputs, outputs, and side effects are - so you can be confident a module doesn't actually have access to things it doesn't need, even if writing some code would do it. Things like WebAssembly, vm2, and Deno are helping with that, and all are guarded against environment variable leakage.
Edit: For WebAssembly I looked into WASI and there are some explicit and implicit ways of providing environment variables. Gotta be careful with the implicit ones. There's this that can be used to give a WASM module access only to specific environment variables or none - don't call inherit_env https://docs.rs/wasmtime-wasi/0.21.0/wasmtime_wasi/struct.Wa... There is this that provides a convenience function for creating a WasiCtx that has access to all environment variables though: https://docs.rs/wasmtime-wasi/0.21.0/wasmtime_wasi/struct.Wa...
[+] [-] encryptluks2|3 years ago|reply
[+] [-] wryun|3 years ago|reply
[+] [-] gregwebs|3 years ago|reply
[+] [-] thamer|3 years ago|reply
See the page for Vault: https://www.hashicorp.com/vault-compliance
Or 1Password: https://support.1password.com/security-assessments/
As the comment from jbotz mentioned, exposing secrets in environment variables seems like a major issue and it would be one of the first points covered in such an audit.
[+] [-] vmatsiiako|3 years ago|reply
[+] [-] turtledragonfly|3 years ago|reply
I'm so tired of systems handling highly-confidential information (such as passwords and secrets material) being Cloud-only. Or even cloud-first.
[+] [-] vmatsiiako|3 years ago|reply
[+] [-] eyakubovich|3 years ago|reply
[+] [-] gregwebs|3 years ago|reply
The main thing stopping me from using Vault is that it can become a central point of failure. If the cloud provider secret managers are down then its likely that something else in the cloud is having major issues as well so from an uptime perspective and easy of operations that has always seemed a safe approach, although the pricing is kind of outrageous. But just storing (e2e encrypted, etc) in cloud object storage is also an option. Berglass for example gives the option of storing in the secret manager or in cloud storage directly: https://github.com/GoogleCloudPlatform/berglas
[+] [-] vmatsiiako|3 years ago|reply
Vault's pricing is outrageous indeed! This is something that we tried to do differently with Infisical by providing a very generous free plan, so that community and small developer teams can use the service for free.
The point about downtime is fair! Though, being open-source is also a big advantage here. You can self-host Infisical in the same place where you self-host your main app. This (slightly) minimises the risk of downtime with respect to your main project.
[+] [-] ponytech|3 years ago|reply
On a previous project I used the HVAC python library to get secrets from Vault and configure a Django project. (thus not using env vars at all) It would be nice to be able to do the same with Infisical.
[+] [-] tony-infisical|3 years ago|reply
There is a backend API (that the web UI and CLI connect to) but it's not yet publicly documented. We've wanted to do that for a while now but have just been swamped with requests for features honestly — It's just a matter of time :)
Would love to keep you updated with the progress of that over at our Slack community!
[+] [-] vmatsiiako|3 years ago|reply
This way, you can stay updated about when it's ready. Thank you!
[+] [-] tony-infisical|3 years ago|reply
Stoked to show y'all what we've been working on this past few months.
Appreciate your feedback and will be hanging out here to answer any questions :)
[+] [-] eranation|3 years ago|reply
My 3 cents: To save issues with enterprise lawyers not approving to use your repo because it has a non standard MIT license, I would HIGHLY recommend creating a separate repo for the paid features, and leaving the open source one intact. A small additional effort to break your monorepo into 2, a huge time saver when you try to monetize it and realize this small addition goes from "automatically approved, regular MIT license" to "I need to open a ticket with legal as our open source compliance tools (e.g. blackduck) flagged it as non standard"
[+] [-] mberning|3 years ago|reply
[+] [-] linuxdude314|3 years ago|reply
Injection at runtime is the target secret managers should be trying to hit.
[+] [-] NathanFlurry|3 years ago|reply
The first thing that strikes me is the flat organizational structure of secrets. We have at least 45 KV secrets per environment in Vault organized in a directory structure over at Rivet. Managing access policies and organizing these without a directory structure would not be fun.
[+] [-] vmatsiiako|3 years ago|reply
Since it's still early days for Infisical, we don't support more advanced organisational structures yet. You're very welcome to join our Slack to stay up-to-date when we release it: https://join.slack.com/t/infisical-users/shared_invite/zt-1k...
[+] [-] DrBenCarson|3 years ago|reply
[+] [-] IncRnd|3 years ago|reply
[+] [-] vmatsiiako|3 years ago|reply
Infisical is designed to be both easy and efficient enough to store any environment variables, but also secure and end-to-end encrypted to store secrets.
[+] [-] TommyDANGerous|3 years ago|reply
[+] [-] tony-infisical|3 years ago|reply
[+] [-] mousetree|3 years ago|reply
[+] [-] vmatsiiako|3 years ago|reply
[+] [-] stuaxo|3 years ago|reply
I will have to have a play with this.
After losing a laptop I've been wanting setting to manage env vars for local dev projects that keeps on them encrypted at rest.
[+] [-] vmatsiiako|3 years ago|reply
You can join our Slack if you need anything: https://join.slack.com/t/infisical-users/shared_invite/zt-1k...
[+] [-] shrisukhani|3 years ago|reply
[+] [-] Alifatisk|3 years ago|reply
[+] [-] vmatsiiako|3 years ago|reply
[+] [-] olekenneth|3 years ago|reply
[+] [-] vorpalhex|3 years ago|reply
How do you intend to react to open source clones of such plugins?
[+] [-] vmatsiiako|3 years ago|reply
[+] [-] yardenst|3 years ago|reply
[+] [-] candiddevmike|3 years ago|reply
[+] [-] vmatsiiako|3 years ago|reply
While Hashicorp Vault has a lot of features, I found it to be quite overwhelming... We created Infisical to take a modern approach to secret management by simplifying the whole process of configuring secrets and injecting them into your stack with the least friction possible.
We also invested a lot of effort in the UI/UX in order to make everything more intuitive for developers when compared to Vault or Conjur. Plus, we have a handful of features in store for the future that Vault does not have yet! You should try and let me know what you think
[+] [-] goodpoint|3 years ago|reply
[+] [-] dang|3 years ago|reply
If you wouldn't mind reviewing https://news.ycombinator.com/newsguidelines.html and taking the intended spirit of the site more to heart, we'd be grateful.
[+] [-] ahofmann|3 years ago|reply