Skip to main content

Universal secret manager for applications and CI/CD tools with CLI interface and multi-cloud support

Project description

AnySecret Library - Open Source Universal Secret Management

PyPI version Python Support Tests License: AGPL-3.0

Open source Python library for universal secret and configuration management across all major cloud providers.

Overview

This is the core open source library that powers AnySecret.io. It provides a unified interface for secret and configuration management across AWS, Google Cloud, Azure, Kubernetes, HashiCorp Vault, and local file systems.

Key Features

  • 🚀 Universal API - Single interface for all providers
  • 🤖 Smart Classification - Automatic routing of secrets vs parameters
  • 🔄 Multi-Cloud - AWS, GCP, Azure, K8s, Vault support
  • ⚡ Async First - Built for modern Python applications
  • 🛡️ Security-Focused - No logging/caching of sensitive values
  • 📦 Zero Config - Auto-detects cloud environments

Quick Start

Installation

# Basic installation
pip install anysecret-io

# With cloud providers
pip install anysecret-io[aws,gcp,azure,k8s,vault]

Basic Usage

import asyncio
import anysecret

async def main():
    # Auto-classification handles routing
    db_password = await anysecret.get("database.password")  # → Secure storage
    db_host = await anysecret.get("database.host")          # → Config storage
    
    # Get all secrets for your app
    config = await anysecret.get_config_manager()
    secrets = await config.get_secrets_by_prefix("myapp")

asyncio.run(main())

CLI Usage

# Get secrets/parameters
anysecret get database.password
anysecret get api.timeout

# List all
anysecret list

# Bulk operations
anysecret bulk export --output .env
anysecret bulk import secrets.json

# Provider management
anysecret providers list
anysecret config validate

Architecture

Core Components

  • anysecret.config_manager - Main configuration manager with auto-classification
  • anysecret.secret_manager - Base secret manager interface
  • anysecret.parameter_manager - Base parameter manager interface
  • anysecret.providers.* - Cloud provider implementations
  • anysecret.cli.* - Command-line interface

Provider Support

Provider Secrets Parameters Status
AWS Secrets Manager Parameter Store ✅ Production
GCP Secret Manager Config Connector ✅ Production
Azure Key Vault App Configuration ✅ Production
Kubernetes Secrets ConfigMaps ✅ Production
HashiCorp Vault KV v1/v2 KV v1/v2 ✅ Production
Encrypted Files AES-256 JSON/YAML ✅ Production
Environment Files .env .env ✅ Production

Development

Requirements

  • Python 3.10+ (3.8/3.9 support dropped for modern compatibility)
  • Optional cloud provider dependencies

Setup

# Clone repository
git clone https://github.com/anysecret-io/anysecret-lib.git
cd anysecret-lib

# Create virtual environment
python -m venv venv
source venv/bin/activate

# Install development dependencies
pip install -e ".[dev,all]"

# Run tests
pytest

# Run specific test suites
python run_tests.py smoke    # Quick smoke tests
python run_tests.py cli      # CLI tests only
python run_tests.py unit     # Unit tests only

Test Suite

  • 246 passing tests across all providers and functionality
  • 20 integration tests skipped (require cloud credentials)
  • Comprehensive coverage of all core features
  • CI/CD integration with GitHub Actions

Code Quality

# Format code
black anysecret tests
isort anysecret tests

# Type checking
mypy anysecret

# Linting
flake8 anysecret

Configuration

Environment Detection

The library automatically detects your environment and configures appropriate providers:

# AWS (auto-detected from EC2/Lambda/ECS)
import anysecret
config = await anysecret.get_config_manager()  # Uses AWS Secrets Manager

# GCP (auto-detected from GCE/Cloud Run/GKE)  
config = await anysecret.get_config_manager()  # Uses GCP Secret Manager

# Local development
config = await anysecret.get_config_manager()  # Uses .env files

Manual Configuration

from anysecret import ConfigManager

# Explicit provider configuration
config = ConfigManager({
    'secret_manager': {
        'type': 'aws',
        'region': 'us-west-2'
    },
    'parameter_manager': {
        'type': 'aws', 
        'region': 'us-west-2'
    }
})

API Reference

Core Methods

# Get values with auto-classification
value = await anysecret.get(key, default=None, hint=None)

# Explicit secret retrieval
secret = await config.get_secret(key)
secret_with_meta = await config.get_secret_with_metadata(key)

# Explicit parameter retrieval  
param = await config.get_parameter(key)
param_with_meta = await config.get_parameter_with_metadata(key)

# Bulk operations
secrets = await config.get_secrets_by_prefix(prefix)
all_keys = await config.list_all_keys()

# Health checks
healthy = await config.health_check()

Provider-Specific Managers

# Direct provider access
from anysecret.providers import (
    AwsSecretManager, 
    GcpSecretManager,
    AzureSecretManager,
    VaultSecretManager
)

aws_manager = AwsSecretManager({'region': 'us-west-2'})
secret = await aws_manager.get_secret_with_metadata('api-key')

Security Best Practices

  1. Never log secrets - Library never logs sensitive values
  2. Use auto-classification - Reduces risk of misconfiguration
  3. Environment-specific configs - Different providers per environment
  4. Encrypted local storage - For development environments
  5. Regular rotation - Use provider native rotation features

Contributing

Bug Reports

  1. Check existing issues
  2. Include Python version, provider type, and error details
  3. Provide minimal reproduction case

Feature Requests

  1. Open GitHub Discussion
  2. Describe use case and expected behavior
  3. Check if it fits with existing architecture

Pull Requests

  1. Fork the repository
  2. Create feature branch from main
  3. Add tests for new functionality
  4. Ensure all tests pass: pytest
  5. Follow existing code style
  6. Update documentation if needed

License

GNU Affero General Public License v3.0 (AGPL-3.0)

  • ✅ Free for all users and commercial use
  • ✅ Modify and distribute freely
  • ⚠️ Must open-source modifications if offering as a service

For commercial licenses without AGPL requirements, visit anysecret.io/license.

Links

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

anysecret_io-1.1.0.tar.gz (157.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anysecret_io-1.1.0-py3-none-any.whl (127.7 kB view details)

Uploaded Python 3

File details

Details for the file anysecret_io-1.1.0.tar.gz.

File metadata

  • Download URL: anysecret_io-1.1.0.tar.gz
  • Upload date:
  • Size: 157.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for anysecret_io-1.1.0.tar.gz
Algorithm Hash digest
SHA256 b1ce245f05cb72d3bf8c4ade0820a28f2f797a1ba1df253a1b58993a4841d339
MD5 551a39ab9cbf254137746f0077d5961f
BLAKE2b-256 1abbdf4d53cc07d0f102919d8dfe8733e1c161799844f184a73d6bfd3ac0fc7c

See more details on using hashes here.

File details

Details for the file anysecret_io-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: anysecret_io-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 127.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for anysecret_io-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d6b014c97443e6f8f30ec66e667364fc6090f69aa725bec080b449eebcefbde
MD5 c6f14384bf2cb9972e8ed2a17ae1d009
BLAKE2b-256 4536b59627fa58b81cfa803f0beace6efb1392c5d87cc3c4d3691ca4fb7d6a62

See more details on using hashes here.

Supported by

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