Skip to main content

Password Safe API integration written in Python, Abstract complexity of managing secrets with the API.

Project description

Password Safe API integration

License

Password Safe API integration written in Python, Abstract complexity of managing secrets with the API

Python version compatibility

This library is compatible with Python >= v3.11.

Install Package

# PyPI
pip install beyondtrust-bips-library

Arguments

Retrieve Secrets

  • api_url:
    • description: BeyondTrust Password Safe API URL.
    • type: string
    • required: True
  • api_key:
    • description: The API Key configured in BeyondInsight for your application. If not set, then client credentials must be provided.
    • type: string
    • required: False
  • client_id:
    • description: API OAuth Client ID.
    • type: string
    • required: True
  • client_secret:
    • description: API OAuth Client Secret.
    • type: string
    • required: True
  • secret_list:
    • description: List of secrets ["path/title","path/title"] or managed accounts ["ms/ma","ms/ma"] to be retrieved, separated by a comma.
    • type: list
    • required: True
  • certificate_path:
    • description: Password Safe API pfx Certificate Path. For use when authenticating using a Client Certificate.
    • type: string
    • required: False
  • certificate_password:
    • description: Password Safe API pfx Certificate Password. For use when authenticating using a Client Certificate.
    • type: string
    • required: False
  • verify_ca:
    • description: Indicates whether to verify the certificate authority on the Secrets Safe instance.
    • type: boolean
    • default: True
    • required: False

Methods

  • get_secrets(self, paths)
    • Invoked for Managed Account or Secrets Safe secrets.
    • Returns a list of secrets in the requested order.
  • get_secret(self, path)
    • Invoked for Managed Account or Secrets Safe secrets.
    • Returns the requested secret.

Example of usage

We strongly recommend you to use a virtual environment and install dependences from requirements.txt file.

Import secrets_safe_library

pip install -r ~/requirements.txt

By default urllib3 logs are not shown, If need to show them:

export URLLIB3_PROPAGATE=True

script example using library:

import  os
import  logging
from  secrets_safe_library  import  secrets_safe, authentication, utils, managed_account
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

env  =  os.environ
LOGGER_NAME  =  "custom_logger"

logging.basicConfig(format  =  '%(asctime)-5s  %(name)-15s  %(levelname)-8s  %(message)s',

level  =  logging.DEBUG)

# logger object is optional but is strongly recommended
logger  =  logging.getLogger(LOGGER_NAME)

TIMEOUT_CONNECTION_SECONDS = 30
TIMEOUT_REQUEST_SECONDS = 30

CERTIFICATE = env['CERTIFICATE']
CERTIFICATE_KEY = env['CERTIFICATE_KEY']

def  main():
    try:
        with requests.Session() as session:
            retry_strategy = Retry(
                total=3,
                backoff_factor=0.2,
                status_forcelist=[400, 408, 500, 502, 503, 504],
            )
            adapter = HTTPAdapter(max_retries=retry_strategy)
            session.mount("https://", adapter)
            session.mount("http://", adapter)
            
            certificate, certificate_key = utils.prepare_certificate_info(CERTIFICATE, CERTIFICATE_KEY)
            
            authentication_obj = authentication.Authentication(
                req=session,
                timeout_connection=TIMEOUT_CONNECTION_SECONDS,
                timeout_request=TIMEOUT_REQUEST_SECONDS,
                api_url="https://example.com:443/BeyondTrust/api/public/v3",
                client_id="<client_id>",
                client_secret="<client_secret>",
                certificate=certificate,
                certificate_key=certificate_key,
                verify_ca=True,
                logger=None
            )

            # sign app in password safe API
            get_api_access_response  =  authentication_obj.get_api_access()

            if  get_api_access_response.status_code ==  200:
                # instantiate secrets safe object
                secrets_safe_obj  =  secrets_safe.SecretsSafe(authentication_obj, logger)

                get_secrets_response  =  secrets_safe_obj.get_secrets(["oagrp/text,oagrp/credential"])
                utils.print_log(logger, f"=> Retrive secrets: {get_secrets_response}", logging.DEBUG)
            else:
                print(f"Please check credentials, error {get_api_access_response.text}")
            
            authentication_obj.sign_app_out()

    except  Exception  as  e:
        utils.print_log(logger, f"Error: {e}", logging.ERROR)

# calling main method
main()

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

beyondtrust_bips_library-1.43.0.tar.gz (66.5 kB view details)

Uploaded Source

Built Distribution

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

beyondtrust_bips_library-1.43.0-py3-none-any.whl (122.4 kB view details)

Uploaded Python 3

File details

Details for the file beyondtrust_bips_library-1.43.0.tar.gz.

File metadata

File hashes

Hashes for beyondtrust_bips_library-1.43.0.tar.gz
Algorithm Hash digest
SHA256 8f0d56e4418f7981f74ef4e5d7a545c27a2cdb094975baba9e48f26d753fa1ab
MD5 e6a66320b41fa24ccb5b2850bcf25205
BLAKE2b-256 f85eb7b5570ffd88faa9f9a486287c230d768cc9f9333c4677339b9a3f50a2fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for beyondtrust_bips_library-1.43.0.tar.gz:

Publisher: release.yml on BeyondTrust/ps-integration-library

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file beyondtrust_bips_library-1.43.0-py3-none-any.whl.

File metadata

File hashes

Hashes for beyondtrust_bips_library-1.43.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a0bb3a6fa567fecc2912125e594f883d08bf03ac96a8cf293ef6c7b62ae0c69b
MD5 747e95bc0f7c1fafa5658d2c823be376
BLAKE2b-256 f0d0acf374f2d09e86ed989d8d3e7ab458bd31af4ab3a096bbf19ed0b50c0209

See more details on using hashes here.

Provenance

The following attestation bundles were made for beyondtrust_bips_library-1.43.0-py3-none-any.whl:

Publisher: release.yml on BeyondTrust/ps-integration-library

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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