Infisical – open-source HashiCorp Vault alternative
github.com
github.com
Ultimately, it just means that HashiCorp is not an open source company anymore. One of the biggest benefits of open source is building on top of open source software to create even better software. HashiCorp's move makes it impossible and simply slows down innovation. In fact, in their blog post, they say that they will start referring to their previously-open-source product as "community".
Infisical is an open source alternative to HashiCorp Vault. The main difference is that it provides more tools in one platform. Some examples of these are automatic secret scanning and leak prevention, CLI for local development, integrations with services like GitHub Actions, Circle CI, etc.
The core of Infisical is available under the MIT license with only very few features being enterprise-licensed – some will say it's not ideal but at least this type of license does not impose legal risks on our users while gives us the ability to monetize the product efficiently and support the open source (MIT-based) part of the product.
Over the last year, lots of developers and companies of all sizes (from tiny startups to Fortune 10 companies) have partially or fully switched to Infisical. For them, we now process over 300 million secrets per month.
Check out our git repo here: https://github.com/Infisical/infisical
Check out this demo as well: https://www.youtube.com/watch?v=PK23097-25I&ab_channel=Infis...
We put a lot of work into engineering but also the design and messaging of the platform to developers as well :)
This bait&switch is no longer novel. Be open source friendly to leverage the community and then pull the rug is probably taught strategy in VC themed business schools by this point.
If you're going to do the same thing in a while anyway, one may as well stay with hashicorp. Is there a reason to believe you will remain viable as an open source product long into the future?
Does this product do things like that? I couldn't find anywhere where it does those things in the docs, though I admit I only scanned them.
This repo available under the MIT expat license, with the exception of the ee directory which will contain premium enterprise features requiring a Infisical license.
I just sprained my eye sockets from rolling my eyes too hard.Sentry looks like a good model for OSS, and it's proof that you can make a living from OSS. I also don't have anything against "enterprise features" for which you need a license, while most features are available in OSS version.
Sentry is using the BSL, the very same license that HashiCorp has switched to but that change has not been received well.
It's the bait and switch and bullshit language ("evolving open source") that gets people riled up.
Every single open source company eventually learns this when they have a strong competitor. Eventually you are forced to stop being open source, because no business wants to compete solely on the strength of their service quality.
Moreover: a community is antithetical to a corporation's interest in the software. Corporations don't give a shit what people want changed in the code, for good reason: their purpose is to make money, not make good software. So business source always ends up annoying and limited while community open source provides the functions the users need, in the way they want them.
So, yeah, you can make money while letting people read your source code. But the actual quality of the end result, the user's happiness, the ability to contribute to the whole thing, is much different in a real community project.
Many of the open source companies are their own strongest competitor, see HashiCorp.
Either that or they have to go at least semi-proprietary.
TBH my view is that the frustration towards open source companies around changing their licenses is sort of misguided. If there's a bad guy in the room, it's AWS. AWS is very good at commercializing open source -- they make literally billions of dollars doing so: Elasticache (Redis), AWS Managed Elastic, RDS etc. Changing the license becomes one of the only ways to hold them off, and the companies that have done so more proactively have fared much better. I think everyone agrees that in an ideal world this wouldn't have to happen, and indeed it didn't really happen until recently when the AWS thing started to become an issue.
Ultimately, SOMEONE is going to leverage the open source for financial gain. So, the question becomes which would you rather have:
- The company commercializing the open source (which is in almost every successful case includes the original creator(s) as a founder, CEO, or employee) benefit from the projects success, which in turn allows them to make further investment in the project.
- AWS benefit from the projects success and (generally speaking) contribute very little back.
Of course, there are plenty of projects that are NOT venture funded that see great success through purely community development. That's great! I just think commercial open source is beneficial as well, especially for larger more complex projects (databases, etc.) that need the funding. The two are not mutually exclusive.
I am also of the belief that the additional funding (both from revenue and from venture investment) that goes into these projects gives them the ability to hire more people, which in turn makes the software better for everyone.
Disclaimer: I am investor that invests predominantly in commercial open source companies. Previously I was developer who used a lot of open source, which is what led me here.
Infisical is an open core business model. While there is a proprietary crust, the core is truly open source.
Disclaimer: I run an open core venture
For example: Open source database that works on one machine. If you like it and want want to scale up, you can pay for the replication and authorization features with paid support.
I’m a pretty rusted on Odoo developer, this has been their business model for years and it’s worked thus far, even when facing off with the likes of the SAP and Dynamics of the world.
Just ask Docker. There's thousands of companies using Docker Desktop that should be paying for it but aren't. Same for most other Open Source companies with business licenses. Because they set themselves up as an "open source" company, all the villagers revolt when you finally ask to get paid, or stop allowing competitors to steal your lunch. You can survive, but it's very hard, and eventually they die away. (But that's also because most software gets replaced after a decade)
You have to treat your business as a business first and foremost if you want to remain profitable and competitive. You can use Open Source for your business, but you will not survive for long if you're hoping people will pay you just because they can read your code. Eventually reality, and competitors, come knocking.
OSS != FOSS
https://opencoreventures.com/blog/2023-07-open-core-is-misun...
While this statement is technically true, I don't think it has any relevance to the topic at hand. While there are some relatively obscure licenses that are OSS but not FOSS (e.g., the Sybase Open Watcom Public License), isn't everything under discussion here either both free and open source, or neither free nor open source? In particular, the "core" of Open Core is both, but the extras are neither.
Open Core is also a thing, and I think it's better than BSL because at least the core part is truly open.
As for Open Core, there is one case in which I think that's fine: when none of the proprietary parts would be useful at all in an otherwise 100% FOSS environment. For example, if Linux support were FOSS but all the Windows- and macOS-specific code were proprietary, or if a plugin to talk to Bugzilla were FOSS but a plugin to talk to JIRA were proprietary, I wouldn't see a problem.
How well would your example companies deal with a PR adding open source macOS platform support, or an open source JIRA bridge?
> The Business Source License (this document, or the “License”) is not an Open Source license. However, the Licensed Work will eventually be made available under an Open Source License, as stated in this License.
I think the real issue is that people want more community driven OSS. Stuff that is collaboratively built and not built for a commercial purpose. They want something I think along the lines of KDE where there are paid people to work on it, but it's also contributed to by a community and there isn't someone constantly trying to a make a buck off of it.
Where is this community funding supposed to come from? Would OP here really personally donate to a team making a secrets management tool?
It's turtles all the way down
Using BSL strikes me as trying to have a cake but eat it too: look, we're good open source guys using an open license. Feel free to use our code, but only after it is well beyond its best before date!
If you want to write software, in a community, for the betterment of that everyone, no matter what anyone else does with that software, then release it as open source.
Can you still make a comfortable living writing open source software? Perhaps, but if that's your goal, you're doing it wrong(tm).
There are many examples of such approach: Spark/Databricks, Cassandra/Datastax.
When you rely on OSS products that are developed almost exclusively by companies, you just need to assume that one day there's going to be a rug pull and plan accordingly.
I think license they chose doesn't allow to change licensing, unless they require 3p contributors to sign some agreement to give up copyright rights like Hashi asked to do.
So, we can check right away if infisical asks to sign agreement or not.
yes, and in case of Hashi, people agreed on CLA granted all rights exclusively to Hashi, not "anyone else"
This is a good point. Open source software by definition must be made by monks that have taken a vow of asceticism. I won’t use any OSS made by anyone that eg drives a car or has been to a dentist.
Only solution I can see is to stigmatize the CLA.
Don't use this untested mess to store your secrets.
We have a comparison with Vault here: https://www.envkey.com/compare/hashicorp-vault/
We'll probably write up a comparison with Infisical soon as well but I'd say the main thing is that our end-to-end encryption has no opt-outs (as Infisical does for many of its integrations), and we use native apps and a CLI rather than offering a web UI. End-to-end encryption in a web browser offers minimal security benefit for reasons discussed in this thread: https://news.ycombinator.com/item?id=21838795 (the discussion is from 2019 and the original NCCGroup link from 2011 is now dead, but all the same issues still apply).
Also, I'm not sure if this has been addressed yet, but it has previously been noted that Infisical was completely lacking in automated tests. EnvKey has an extensive test suite ( core tests here: https://github.com/envkey/envkey/tree/main/public/app/tests and tests for all our sdks are included in each: https://github.com/envkey/envkey/tree/main/public/sdks).
I'd also note that we are able to offer all the features you list without requiring users to opt-out of end-to-end encryption.
Curious how you are able to create a native integration with, let's say, Vercel without requiring users to opt-out of end-to-end encryption?
I imagine they'll regret this if you have a security incident.
"Curious how you are able to create a native integration with, let's say, Vercel without requiring users to opt-out of end-to-end encryption?"
We don't have a native integration with Vercel (you didn't list that in your comment, which is what I was referring to). We don't really have a need for one since all that's required to integrate EnvKey with Vercel is setting a single environment variable. That said, if we did decide to build an official Vercel integration, we wouldn't require removing end-to-end encryption to use it.
But, of course, too few features can be just impractical.
How easy is this to achieve using EnvKey? Only allusion I see on the comparison page is "Easy Integration: Vault=Poor, EnvKey=Strong" but I have a feeling something else was in mind there.
Dynamic secrets generation isn't built in to EnvKey, but we do offer a CLI that makes it straightforward to generate or rotate credentials/roles as part of your deployment. Rather than baking in this kind of thing, we are more taking a 'give you simple building blocks so you can do anything' approach to automations. For your postgres example, it would look something like this:
# Set variables for an EnvKey environment that includes postgres admin creds in shell
eval $(envkey-source)
# Use the admin credentials from EnvKey to rotate credentials for app role in Postgres.
# You could also create new roles, grant privileges, etc., as needed.
NEW_PASSWORD=$(openssl rand -base64 32)
psql -h $DB_HOST -U $DB_ADMIN_USER -d $DATABASE_NAME -c "ALTER ROLE $ROLE_NAME WITH PASSWORD '$NEW_PASSWORD';"
# Update the credentials in EnvKey for your app.
envkey set app-name production DB_PASSWORD=$NEW_PASSWORD --commit --json
Meanwhile, if you prefix your app start command like this: envkey-source --watch -- ./run-my-app.sh
Your app process will then be automatically restarted after the `envkey set` command with the latest postgres password in its environment. If you're running multiple instances, you could also use rolling restarts to avoid downtime. envkey-source --watch --rolling -- ./run-my-app.sh
So it's a bit more work compared to Vault for the postgres use-case, but on the other hand, with EnvKey you get a lot of flexibility to setup these kinds of automations for any service or tool.For acting as a CA, we have some ideas on how to accomplish this that I think would be both simpler and more secure than Vault's approach, but we haven't gotten to it yet.
One is envkey-source (https://docs-v2.envkey.com/docs/envkey-source), which contains core client-side decryption and verification logic. It can be used standalone from the shell like this:
# some-command runs with EnvKey vars in its environment
$ envkey-source -- ./some-command
Or like this: # EnvKey vars are set in current shell
$ eval $(envkey-source)
$ echo $SOME_ENVKEY_VAR
And second, envkey-source is also wrapped by our language-specific SDKs, including one for Go: https://github.com/envkey/envkey/tree/main/public/sdks/langu...It allows you to integrate with a Go project like this:
// main.go
import (
"os"
_ "github.com/envkey/envkeygo/v2"
)
// assuming you have GITHUB_TOKEN set in EnvKey
token := os.Getenv("GITHUB_TOKEN") // this will stay in sync
We're planning to do a docs-improvement pass soon so I'm very interested in how we could clear up any confusing aspects of how the different pieces fit together.We do try to mention in the docs for each SDK that envkey-source can be used from the shell instead, but I’m sure we can make it clearer. Thanks again!
That's not nice. It's OK to limit SSO access to OSS and stuff like that. But limiting essential features - team members is a no-go.
I think there may be a mix-up here with Infisical Cloud which is the managed service with subscription tiers.
Yeah, I've noticed that the app is not enforcing that limit ATM, but the limit was clearly visible in the dashboard when I tried it a couple of months ago (OSS, docker)
Personally, I can't wrap my head around people wanting to use Infiscal for better security while *not* using SSO.
Is that (still) true? If so: No
I like the idea of a Vault alternative, but I won't use a security product in production that is not automatically tested for vulnerabilities and regressions.
Currently, we are in the process of adding tests, and the test coverage will only keep increasing over the next few weeks. You can learn more about this in our community Slack: https://infisical.com/slack
Any reason to believe this to be true this time around?
It's also worth noting that you're doing this in the wrong order. The "We can test it all later, ship! ship! ship!" strategy works fine for trivial apps, not security software.
And there will the same backlash by people pretending that the change is some sort of grave slight and make bold claims about how they're switching away because they actually have to pay for stuff now.
And the cycle will repeat ad nauseam.
Vault has some at-rest encryption but IIRC explicitly says then don’t have any mitigations against a compromised unsealed node. My understanding is that if someone ever gets a root access to a machine running Vault, the game is over. Which makes me wonder ifI can deploy Infiscial to some completely untrusted machine (without any orchestration or networking concerns) and still have some guarantees that all my secrets are safe in some way (cannot be decrypted, cannot be replaced, maybe even cannot be rolled back, etc)?
Definitely, we have more details on the cryptography in our documentation here: https://infisical.com/docs/security/overview.
Put simply, Infisical operates E2EE by default which means the platform itself can’t decrypt secrets. This is unless you opt out of E2EE (secrets remain encrypted at rest) to use select features like native integrations - this is, however, not necessary to use the platform. In your case, you might wish to run Infisical in E2EE mode for maximum security.
That said, it’s always important for you to keep your instance of Infisical secure that is ideally to not allow bad actors to gain root access to the machine.
It's pretty shitty what happened with mongodb and aws. Morally it always felt wrong.
What are some of the biggest challenges you've run into so far?
also how’s it going with loops?
...it's annoying that a kubernetes-like complex system exists and it doesn't have to. And now they have a SaaS version for small numbers of secrets....
It lacks of the most important feature: Auto save your form.
We will make sure to prioritize the OIDC support depending on how many people ask for it
Ultimately, we intend each initiative of our roadmap to have synergies with the rest of the platform.
You can check out our past and immediate roadmap here: https://www.notion.so/be2d2585a6694e40889b03aef96ea36b?v=5b1...