Skip to main content

aiSSEMBLE™ Extensions Data Encryption Vault Python

PyPI PyPI - Python Version PyPI - Wheel

This module provides a package for encrypting Python based pipeline data. There are multiple encryption algorithms available. Each with their own strengths and weaknesses as outlined below.

Strategy Description
VaultRemoteEncryptionStrategy Leverages the Hashicorp Vault secrets as a service capabilities. This is a highly recommended strategy given it follows best practices and has the advantage of a large developer base working to secure the service.
VaultLocalEncryptionStrategy Leverages the Vault service to provide encryption keys (key rotation and secure storage) but allows for local encryption. This is a good option if you have to encrypt large data objects. It can also provide a performance boost over remote Vault encryption given there is no need for a roundtrip to the server for each data element.
AesCbcEncryptionStrategy A good basic 128 bit encryption strategy. To use this you only need to supply a single encryption key in the encrypt.properties file (128 bit or 16 character). This algorithm works well, but is less efficient than the AES GCM algorithm.
AesGcm96EncryptionStrategy This is a good strategy for most encryption needs. It is efficient and strong against most attacks. You can optionally use an encryption key retrieved from the Vault service with this strategy.

The following example illustrates how to perform encryption.

  1. Example usage

    • Add the following to your code

    VaultRemoteEncryptionStrategy

    # Uses remote Vault encryption
    from aissemble_encrypt.vault_remote_encryption_strategy import VaultRemoteEncryptionStrategy
    
    vault_remote = VaultRemoteEncryptionStrategy()
    
    # encrypt plain text data using Vault
    encrypted_value = vault_remote.encrypt('SOME PLAIN TEXT')
    
    # decrypt cipher text data using Vault
    decrypted_value = vault_remote.decrypt(encrypted_value)
    

    NOTE: If you are encrypting your data through a User Defined Function (udf) in PySpark you need to use the VaultLocalEncryptionStrategy (see below). Currently the remote version causes threading issues. This issue will likely be resolved in a future update to the Hashicorp Vault client

    VaultLocalEncryptionStrategy

    # Uses an encryption key retrieved from the Vault server, but performs the encryption locally.
    from aissemble_encrypt.vault_local_encryption_strategy import VaultLocalEncryptionStrategy
    
    vault_local = VaultLocalEncryptionStrategy()
    
    # encrypt plain text data using local Vault
    encrypted_value = vault_local.encrypt('SOME PLAIN TEXT')
    
    # decrypt cipher text data using local Vault
    decrypted_value = vault_local.decrypt(encrypted_value)
    

    AesCbcEncryptionStrategy

    # Uses the AES CBC encryption
    from aissemble_encrypt.aes_cbc_encryption_strategy import AesCbcEncryptionStrategy
    
    aes_cbc = AesCbcEncryptionStrategy()
    
    # encrypt plain text data using AES CBC
    encrypted_value = aes_cbc.encrypt('SOME PLAIN TEXT')
    
    # decrypt cipher text data using AES CBC
    decrypted_value = aes_cbc.decrypt(encrypted_value)
    

    AesGcm96EncryptionStrategy

    # AES GCM encryption with a 96 bit initialization vector (same algorithm as Vault)
    from aissemble_encrypt.aes_gcm_96_encryption_strategy import AesGcm96EncryptionStrategy
    
    aes_gcm_96 = AesGcm96EncryptionStrategy()
    
    # encrypt plain text data using AES GCM
    encrypted_value = aes_gcm_96.encrypt('SOME PLAIN TEXT')
    
    # decrypt cipher text data using AES CBC
    decrypted_value = aes_gcm_96.decrypt(encrypted_value)
    

AISSEMBLE Data Encryption

This package includes one security client for calling the "Secrets as a Service" encryption service.

Vault encryption

See the extensions-encryption README for more information on how to configure Vault encryption.

Metadata

Release files for aissemble-extensions-encryption-vault-python 1.12.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aissemble-extensions-encryption-vault-python 1.12.1
File Size Uploaded Provenance Actions
aissemble_extensions_encryption_vault_python-1.12.1.tar.gz 10.4 kB Without provenance Details for aissemble_extensions_encryption_vault_python-1.12.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for aissemble-extensions-encryption-vault-python 1.12.1
File Interpreter ABI Platform Actions
aissemble_extensions_encryption_vault_python-1.12.1-py3-none-any.whl Python 3 none any Details for aissemble_extensions_encryption_vault_python-1.12.1-py3-none-any.whl

Total release size: 26.1 kB

Release files / aissemble_extensions_encryption_vault_python-1.12.1.tar.gz

Download URL aissemble_extensions_encryption_vault_python-1.12.1.tar.gz
Size 10.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ff0bc012830feaab14f79962679e02966b832c799ecd1ee9f5b1762858320271
BLAKE2b-256 checksum
How to use checksums
75a0fc12f23d367b001b8d4e9044b3cb7ca1eb33127887fd047dcb9135bbd067
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.11.4 Linux/6.1.128-136.201.amzn2023.aarch64

Release files / aissemble_extensions_encryption_vault_python-1.12.1-py3-none-any.whl

Download URL aissemble_extensions_encryption_vault_python-1.12.1-py3-none-any.whl
Size 15.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c01e8c43392b0b55f18193e0d82ff59be762ccec50d08b4256fa69cc7abf1328
BLAKE2b-256 checksum
How to use checksums
fca77d5b43061669c71d18b05a04430223ad9ac9fc80da471fc52a541a0c0f72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.11.4 Linux/6.1.128-136.201.amzn2023.aarch64

Security for aissemble-extensions-encryption-vault-python 1.12.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.12.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page