
Research
Security News
The Growing Risk of Malicious Browser Extensions
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
git-secret-protector
Advanced tools
A tool for managing secrets in Git with AWS Parameter Store integration.
git-secret-protector
is a Python-based CLI tool designed to securely manage and protect sensitive files in your Git repositories. It integrates with Cloud Secret Storage Services to encrypt and decrypt secrets, ensuring that your sensitive data remains secure throughout your development process.
.gitattributes
file.pipx (Download)
You can install the git-secret-protector
module via pipx:
pipx install git-secret-protector
Create a .gitattributes
file in the root of your repository to define which files should be encrypted.
Sample .gitattributes
file:
dev/secrets* filter=sample-app-dev diff=sample-app-dev
prod/secrets* filter=sample-app-prod diff=sample-app-prod
.gitattributes !filter !diff
Set up the Git clean and smudge filters base on the filters defined in the .gitattributes
file.
git-secret-protector setup-filters
This command will configure the Git clean and smudge filters based on the patterns defined in the .gitattributes
file. The filters will automatically encrypt and decrypt files based on the specified patterns.
You can verify the configured filters in the .git/config
file, for example:
[filter "sample-app-dev"]
clean = git-secret-protector encrypt sample-app-dev
smudge = git-secret-protector decrypt sample-app-dev
required = true
The config.ini
file contains settings that customize the behavior of the git-secret-protector
module. The file should be located in the module's directory (by default: .git_secret_protector/config.ini
) and can be used to override the default values set in the code.
Sample config.ini
[DEFAULT]
module_name = git-secret-protector
log_file = /path/to/log/git_secret_protector.log
log_level = INFO
log_max_size = 1048576
log_backup_count = 3
magic_header = ENCRYPTED
storage_type = AWS_SSM
Configuration Parameters
module_name
: Name of the module.log_file
: Path to the log file.log_level
: Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL).log_max_size
: Maximum size of the log file in bytes.log_backup_count
: Number of log files to keep.magic_header
: Magic header to identify encrypted files.storage_type
: Cloud Secret Storage Service to use (AWS_SSM, GCP_SECRET_MANAGER).
Notes: Before executing this command, ensure you have the necessary permissions to manage resources in the using Cloud Secret Storage Services.
Command to set up AES key
git-secret-protector setup-aes-key <filter_name>
Sample command to set up an AES key for the sample-app-dev
filter:
git-secret-protector setup-aes-key sample-app-dev
Ensure that files are properly encrypted or decrypted by running:
git-secret-protector status
The status will display the files managed by the filter and their encryption status.
Notes Before encrypting or decrypting files, it's necessary to retrieve the relevant AES keys from the Cloud Secret Storage Service for filters:
git-secret-protector pull-aes-key <filter_name>
This command fetches the latest AES data key and IV from the Cloud Secret Storage Service for the designated filter and caches them locally for subsequent operations. This step ensures that you have the correct keys for encryption or decryption tasks related to the specified filter.
Set up the Git clean and smudge filters base on the filters defined in the .gitattributes
file.
git-secret-protector setup-filters
Refer to 1.2. Configure Git Filters for instructions to verify if filters have been configured properly.
Command to decrypt secret files:
git-secret-protector decrypt-files <filter_name>
Add the file
Update the .gitattributes
file to include the file under a path that matches a filter pattern. For example, to add live/dev/secret.auto.tfvars
, update the .gitattributes
file as follows:
live/dev/secret*.auto.tfvars filter=sample-app-dev diff=sample-app-dev
Encrypt the file
Use the following command to encrypt the file under the specified filter:
git-secret-protector encrypt-files <filter>
Replace <filter>
with the name of the filter (e.g., sample-app-dev
).
Verify encryption
Confirm that the file has been encrypted by running:
git-secret-protector status
Sample output
Filter: sample-app-dev
./live/dev/secrets.auto.tfvars: Encrypted
./config/slack/secrets.tf: Encrypted
Filter: sample-app-prod
...
Review before creating pull requests
Inspect the pull request to ensure encrypted files are included. Verify everything is correct before clicking the Create pull request
button.
In case you need to rotate the AES key due to security reasons or a team member leaving the project, you can rotate the keys using the following command:
Command to Rotate Keys
git-secret-protector rotate-key <filter_name>
This command will execute the following steps:
Post-Rotation Code Reset
After rotating the keys, it is necessary to clear the Git cache and re-checkout all files. This step ensures that the smudge filters are triggered, allowing the files to be decrypted with the new key.
# Remove all files from the index to clear the Git cache
git rm --cached -r .
# Force Git to re-checkout all files, triggering smudge filters
git reset --hard
Logs are stored in the .git_secret_protector/logs/
directory by default, and you can configure the log level and file rotation in the config.ini
file.
Unit Tests: Located in the tests/unit
directory, run them using pytest
.
poetry run pytest tests/unit
Integration Tests: Located in the tests/integration
directory, these tests interact with Secret Store in cloud and should be run manually.
poetry run pytest tests/integration
See CHANGELOG.md for a history of changes and updates.
If you encounter any issues while using the git-secret-protector
tool, try the following tips and solutions:
If the filters are not configured correctly, you might encounter errors when encrypting or decrypting files.
Solution:
Re-setup the filters based on your .gitattributes
file.
git-secret-protector setup-filters
If you fail to encrypt or decrypt files due to a missing or incorrect AES key, you will need to ensure that the keys are correctly fetched from the Cloud Secret Storage Service.
Solution: Pull the latest AES keys from the Cloud Secret Storage Service for the relevant filters.
git-secret-protector pull-aes-key <filter_name>
Lack of necessary permissions can result in errors while accessing Cloud Secret Storage Services.
Issue:
You receive an error when trying to decrypt files using the decrypt-files
command.
Solution:
Ensure that you have pulled the latest AES keys:
git-secret-protector pull-aes-key <filter_name>
Check if the filters are correctly set up:
git-secret-protector setup-filters
Attempt to decrypt the files again:
git-secret-protector decrypt-files <filter_name>
If the issue persists, verify your configurations in the config.ini
file, and consult the logs located in the logs/
directory for more detailed error information.
FAQs
A tool for managing secrets in Git with AWS Parameter Store integration.
We found that git-secret-protector demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover how browser extensions in trusted stores are used to hijack sessions, redirect traffic, and manipulate user behavior.
Research
Security News
An in-depth analysis of credential stealers, crypto drainers, cryptojackers, and clipboard hijackers abusing open source package registries to compromise Web3 development environments.
Security News
pnpm 10.12.1 introduces a global virtual store for faster installs and new options for managing dependencies with version catalogs.