Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SOPS and KMS with IAM all together - missing guide? #1481

Open
kingdonb opened this issue Apr 26, 2023 · 2 comments
Open

SOPS and KMS with IAM all together - missing guide? #1481

kingdonb opened this issue Apr 26, 2023 · 2 comments

Comments

@kingdonb
Copy link
Member

Also related, (is it a guide I'm talking about, or a use case? Why not both...)

It came up the topic of validate.sh and skipping secrets. That's a separate topic and I'll open more issues to avoid conflating them all, here I thought we might be missing a guide, can these tools all be used together productively, and should we have a full example that demonstrates that, if we think so? SOPS + KMS with IAM for source repo authorization, used for environment secrets.

I think we should probably have better coverage of the way that SOPS and KMS can be used productively together. We already cover these topics separately, KMS is covered in the SOPS guide, and cloud-specific guides for AWS, Azure, and Google are available that all address private source repositories through ambient credentials.

There's no doc though today that discusses to build an access-controlled repo for secrets, only authorized by the cloud provider's IAM, and storing the SOPS-encrypted secrets there; using a KMS key to encrypt that secret data in the repo with SOPS for KMS. Is this a good pattern that we should promote, or is it an anti-pattern keeping secrets in Git at all?

I know there are some Flux (Kustomize) features that you can only access when the secret is kept in the repo together with the deployment configuration or HelmReleases etc.

Perhaps this is a guide that belongs in another separate repo: we've been having a related conversation over at fluxcd-community/github-app-secret - though not as focused on documentation, more practically focused around GitHub as an identity provider.

@kingdonb
Copy link
Member Author

For some groups / architecture decisions / the idea of secrets in the repo will get rejected to even think of doing this way, since git repos are not key vaults I think many will opt not to keep secrets there, even encrypted. That's a fine policy but...

If we cannot stop the users from committing secrets accidentally, (or maybe we can)

It would be good to mention in an existing guide also: kubeconform takes the option -skip=Secret

@kingdonb
Copy link
Member Author

kingdonb commented Apr 26, 2023

I think the SOPS guide should be expanded to cover more generally, use with KMS and IAM to keep KMS-protected secrets that are SOPS-encrypted in the IAM-authorized repository. (If this gets too large and far off-topic for Flux itself, maybe it belongs in Weave GitOps instead. If there isn't agreement about how it should work, that's a different problem and I'd like to talk more about it.)

Then again, maybe what I'm looking for isn't a new guide, maybe it's a product feature that just doesn't exist yet. I think there are some goals around this area that have been better explored from a product perspective in Weave GitOps. A button that users click on is always going to reach more people than a long drafty guide covering .... xyz, etc.

Trying to think of what is the ideal experience for secrets management with Flux, if we can assume you have the UI to support creating a secret or if we need to guide users through how to create a repo and make it secret with keys rotation, all processes that people talk about but rarely if ever implement unless they are statutorily bound. It would be good to find a real way to help our users with that issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant