Skip to main content

Automatically mask sensitive values (API keys, passwords, tokens) in logs and print output

Project description

philiprehberger-masked-print

Tests PyPI version License

Automatically mask sensitive values (API keys, passwords, tokens) in logs and print output.

Install

pip install philiprehberger-masked-print

Usage

from philiprehberger_masked_print import mask, mask_dict, MaskedFormatter

# Mask a single string
masked = mask("sk-abc123secret456xyz")
# "sk-a*************xyz"

Mask dictionaries

config = {
    "host": "localhost",
    "password": "super-secret-value",
    "database": {
        "connection_string": "postgres://admin:pass@localhost/db",
    },
}

safe = mask_dict(config)
# {
#     "host": "localhost",
#     "password": "supe***********lue",
#     "database": {
#         "connection_string": "post*****************/db",
#     },
# }

Auto-mask log output

import logging
from philiprehberger_masked_print import MaskedFormatter

handler = logging.StreamHandler()
handler.setFormatter(MaskedFormatter("%(levelname)s: %(message)s"))

logger = logging.getLogger("app")
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)

logger.info("Using key sk-proj-abc123def456ghi789jkl012mno")
# INFO: Using key sk-p*************************mno

API

Function / Class Description
mask(value, *, show_first=4, show_last=3, mask_char="*") Mask a string, keeping the first and last N characters visible
mask_dict(data, *, sensitive_keys=None, show_first=4, show_last=3) Recursively mask sensitive key values in a dictionary
MaskedFormatter(fmt) Logging formatter that auto-redacts secret patterns (sk-..., eyJ..., AKIA..., URL credentials)

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

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

philiprehberger_masked_print-0.1.5.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

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

philiprehberger_masked_print-0.1.5-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_masked_print-0.1.5.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_masked_print-0.1.5.tar.gz
Algorithm Hash digest
SHA256 82fae1c16d4de305ec2bb0635f82d6ec17bd7772a450f109589eea495aee8bd5
MD5 0069279eaeef16844e9a3f5eb1d5bfb4
BLAKE2b-256 c7fd415af5b5fbe758d788d887973f5a3175f2880a61058455f9dacba6b20981

See more details on using hashes here.

File details

Details for the file philiprehberger_masked_print-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_masked_print-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 83f3b71bdb14563c530bd9ad400f9396ebbb6601d370535849b9661d86ad83bb
MD5 ee5dd5d69574ec45c705b35291746a83
BLAKE2b-256 ed58ff964cbcbba4ed789397a4b9ff180f87f03fcb13c9248fd3f6a303e0b018

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