Skip to main content

A CLI tool to whisper your secrets between secure vault and your local environment

Project description

Downloads Coverage Status

Whispr

Logo

Whispr (Pronounced as whisper) is a CLI tool to safely inject secrets from your favorite secret vault (Ex: AWS Secrets Manager, Azure Key Vault etc.) into your app's environment. This is very useful for enabling secure local software development.

Whispr uses keys (with empty values) specified in a .env file and fetches respective secrets from a vault, and sets them as environment variables before launching an application.

Key Features of Whispr:

  • Safe Secret Injection: Fetch and inject secrets from your desired vault using HTTPS, SSL encryption, strict CERT validation.
  • Just In Time (JIT) Privilege: Set environment variables for developers only when they're needed.
  • Secure Development: Eliminate plain-text secret storage and ensure a secure development process.
  • Customizable Configurations: Configure project-level settings to manage multiple secrets for multiple projects.
  • No Custom Scripts Required: Whispr eliminates the need for custom bash scripts or cloud CLI tools to manage secrets, making it easy to get started.
  • Easy Installation: Cross-platform installation with PyPi.

Supported Vault Technologies:

Supported-vaults

Why use Whispr ?

The MITRE ATT&CK Framework Tactic 8 (Credential Access) suggests that adversaries can exploit plain-text secrets and sensitive information stored in files like .env. It is essential to avoid storing sensitive information in unencrypted files. To help developers, Whispr can safely fetch and inject secrets from a vault into the current shell environment. This enables developers to securely manage credentials and mitigate advisory exploitation tactics.

Installation and Setup

Installing Whispr

To get started with Whispr, simply run:

pip install whispr

Configuring Your Project

Step 1: Initialize Whispr

Run whispr init <vault_type> in your terminal to create a whispr.yaml file in your project root. This file will store your configuration settings.

The available vault types are: aws, azure, and gcp.

Example whispr.yaml contents (For: AWS):

env_file: '.env'
secret_name: <your_secret>
vault: aws

This default configuration will inject fetched secrets into os.environ of main process. If your app instead want to receive secrets as STDIN arguments, use no_env: true field. This is a secure way than default control but app now should parse arguments itself.

env_file: '.env'
secret_name: <your_secret>
vault: aws
no_env: true # Setting true will send KEY1=VAL1 secret pairs as command args

Setting Up Your Injectable Secrets

Step 2: Create or Configure a Secret File

Create a new .env file with empty values for your secret keys. For example:

POSTGRES_USERNAME=
POSTGRES_PASSWORD=

Note: You can also control filename with env_file key in your whispr.yaml.

Step 3: Authenticating to Your Vault (Ex:AWS)

  • Authenticate to AWS using Short-term credentials.
  • Alternatively, set temporary AWS credentials using a config file or environment variables.

Note: Use respective authentication methods for other vaults.

Launch any Application using Whispr

Now, you can run any app using: whispr run '<your_app_command_with_args>' (mind the single quotes around command) to inject your secrets before starting the subprocess.

Examples:

whispr run 'python main.py' # Inject secrets and run a Python program
whispr run 'node server.js --threads 4' # Inject secrets and run a Node.js express server
whispr run 'django manage.py runserver' # Inject secrets and start a Django server
whispr run '/bin/sh ./script.sh' # Inject secrets and run a custom bash script. Script should be permitted to execute
whispr run 'semgrep scan --pro' # Inject Semgrep App Token and scan current directory with Semgrep SAST tool.

Programmatic Access

Whispr can also be used programmatically from Python code. See this guide for more information.

https://github.com/narenaryan/whispr/blob/docs/main/usage-guides/programmatic-access.md

TODO

  • Support HashiCorp Vault
  • Support 1Password Vault

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whispr-0.3.0.tar.gz (165.3 kB view details)

Uploaded Source

Built Distribution

whispr-0.3.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file whispr-0.3.0.tar.gz.

File metadata

  • Download URL: whispr-0.3.0.tar.gz
  • Upload date:
  • Size: 165.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for whispr-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d02e2ad9f22e4720802bd7d4414df67f3805483de7951bafcddca315bbbe30cf
MD5 0d538145a1418359738c02d1b2c5a069
BLAKE2b-256 7007f079d234f9276161404779cea54a95793efeafa29a4c938cd346dc33f2b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for whispr-0.3.0.tar.gz:

Publisher: release.yml on narenaryan/whispr

Attestations:

File details

Details for the file whispr-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: whispr-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for whispr-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 40bc36cf77723ff03448f1ec490f32cf88e5199cd6bd6401eeec60b330427d82
MD5 fa44d23adac00c9c10287c992bec2e94
BLAKE2b-256 23b7ebe0a967a9cc51584fc72bb4e11a8101352852295a5d7352a7f4d32c9e67

See more details on using hashes here.

Provenance

The following attestation bundles were made for whispr-0.3.0-py3-none-any.whl:

Publisher: release.yml on narenaryan/whispr

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page