Skip to main content

Secure Native SDK for python

Project description

SecureNative Logo

A Cloud-Native Security Monitoring and Protection for Modern Applications

Github Actions python version

Documentation | Quick Start | Blog | Chat with us on Slack!


SecureNative performs user monitoring by analyzing user interactions with your application and various factors such as network, devices, locations and access patterns to stop and prevent account takeover attacks.

Install the SDK

When using PyPi, run the following:

pip install securenative

Initialize the SDK

To get your API KEY, login to your SecureNative account and go to project settings page:

Option 1: Initialize via Config file

SecureNative can automatically load your config from securenative.ini file or from the file that is specified in your SECURENATIVE_CONFIG_FILE env variable:

from securenative.securenative import SecureNative


secureative =  SecureNative.init()

Option 2: Initialize via API Key

from securenative.securenative import SecureNative


securenative =  SecureNative.init_with_api_key("YOUR_API_KEY")

Option 3: Initialize via ConfigurationBuilder

from securenative.securenative import SecureNative


securenative = SecureNative.init_with_options(SecureNative.config_builder()
                                        .with_api_key("API_KEY")
                                        .with_max_events(10)
                                        .with_log_level("ERROR")
                                        .build())

Getting SecureNative instance

Once initialized, sdk will create a singleton instance which you can get:

from securenative.securenative import SecureNative


secureNative = SecureNative.get_instance()

Tracking events

Once the SDK has been initialized, tracking requests sent through the SDK instance. Make sure you build event with the EventBuilder:

from securenative.securenative import SecureNative
from securenative.event_options_builder import EventOptionsBuilder
from securenative.enums.event_types import EventTypes
from securenative.models.user_traits import UserTraits


securenative = SecureNative.get_instance()

context = SecureNative.context_builder().\
       with_ip("127.0.0.1").\
       with_client_token("SECURED_CLIENT_TOKEN").\
       with_headers({"user-agent", "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"}).\
       build()

event_options = EventOptionsBuilder(EventTypes.LOG_IN).\
with_user_id("USER_ID").\
       with_user_traits(UserTraits("USER_NAME", "USER_EMAIL")).\
       with_context(context).\
       with_properties({"prop1": "CUSTOM_PARAM_VALUE", "prop2": True, "prop3": 3}).\
       build()

securenative.track(event_options)

You can also create request context from requests:

from securenative.securenative import SecureNative
from securenative.event_options_builder import EventOptionsBuilder
from securenative.enums.event_types import EventTypes
from securenative.models.user_traits import UserTraits


def track(request):
    securenative = SecureNative.get_instance()
    context = SecureNative.context_builder().from_http_request(request).build()

    event_options = EventOptionsBuilder(EventTypes.LOG_IN).\
        with_user_id("USER_ID").\
        with_user_traits(UserTraits("USER_NAME", "USER_EMAIL")).\
        with_context(context).\
        with_properties({"prop1": "CUSTOM_PARAM_VALUE", "prop2": True, "prop3": 3}).\
        build()

    securenative.track(event_options)

Verify events

Example

from securenative.securenative import SecureNative
from securenative.event_options_builder import EventOptionsBuilder
from securenative.enums.event_types import EventTypes
from securenative.models.user_traits import UserTraits


def track(request):
    securenative = SecureNative.get_instance()
    context = SecureNative.context_builder().from_http_request(request).build()

    event_options = EventOptionsBuilder(EventTypes.LOG_IN).\
        with_user_id("USER_ID").\
        with_user_traits(UserTraits("USER_NAME", "USER_EMAIL")).\
        with_context(context).\
        with_properties({"prop1": "CUSTOM_PARAM_VALUE", "prop2": True, "prop3": 3}).\
        build()

    verify_result = securenative.verify(event_options)
    verify_result.risk_level  # Low, Medium, High
    verify_result.score  # Risk score: 0 -1 (0 - Very Low, 1 - Very High)
    verify_result.triggers  # ["TOR", "New IP", "New City"]

Webhook signature verification

Apply our filter to verify the request is from us, for example:

from securenative.securenative import SecureNative


def webhook_endpoint(request):
    securenative = SecureNative.get_instance()

    # Checks if request is verified
    is_verified = securenative.verify_request_payload(request)

Project details


Download files

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

Files for securenative, version 0.2.0
Filename, size File type Python version Upload date Hashes
Filename, size securenative-0.2.0-py3-none-any.whl (32.7 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size securenative-0.2.0.tar.gz (17.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page