I know that pushing a commit with an API key is something for which a developer should have his balls cut off, but…

…I’m wondering what I should do if, somehow, I accidentally commit an API key or other sensitive information, an environment variable to the repo.

Should I just revoke the access and leave it as is, or maybe locally remove this commit and force-push a new one without the key? How do you guys handle this situation in a professional environment?

  • @[email protected]
    link
    fedilink
    841 month ago

    Other answers have only called out rotating the secret which is how you fix this specific failure. After you’ve rotated, delete the key from the repo because secrets don’t belong in repos. Next look at something like git-secrets or gitleaks to use as a local pre-commit hook to help prevent future failures. You’re human and you’re going to make mistakes; plan for them.

    Another good habit to be in is to only access secrets from environment variables. I personally use direnv whose configuration file is globally ignored via the core.excludesfile.

    You can add other strategies for good defense-in-depth such as a pre-receive hook checking for secrets to ensure no one can push them (eg they didn’t install hooks).

    • @[email protected]
      link
      fedilink
      91 month ago

      only access secrets from environment variables

      I kind of think this is a bad idea because environment variables can be read from anywhere and aren’t designed to be secret.

      But I’m not sure what a better solution is tbh.

      • @calcopiritus
        link
        131 month ago

        Storing them in files with correct permissions.

        • katy ✨
          link
          fedilink
          329 days ago

          also storing them outside of the webserver directory

      • Pup Biru
        link
        fedilink
        English
        31 month ago

        you’re not entirely wrong, but this is the current standard/accepted advice for local development - probably what we’re talking about given this thread is about git commits - because the chance of exploit via this mechanism requires local access… with such access, you’re pretty screwed in far more ways