SupernaZeroTrust

Run Superna Zero Trust ransomware containment actions (critical path snapshot, user lockout/unlock) via the Superna API.

Utilities · Superna Zero Trust

Details

IDSupernaZeroTrust
CategoryUtilities
From Version8.9.0
Docker Imagedemisto/python3:3.12.13.10116658

README

Superna Zero Trust

Integrates Cortex XSOAR with Superna Zero Trust to automate ransomware containment and recovery actions via the Superna SERA API.

Configure Superna Zero Trust on Cortex XSOAR

  1. Navigate to Settings > Integrations > Servers & Services
  2. Search for Superna Zero Trust
  3. Click Add instance and configure the following parameters:
Parameter Description Required
API URL Base URL of your Superna Zero Trust / SERA server (e.g. https://sera.example.local) True
API Key API key for authenticating to the Superna SERA API True
Trust any certificate (not secure) Skip TLS certificate verification. Enable only for self-signed certificates. False
Use system proxy settings Route API calls through the system proxy False
  1. Click Test to validate connectivity.

Commands

superna-zt-snapshot-critical-paths

Create a snapshot of Superna critical paths for ransomware rapid recovery.

Base Command

superna-zt-snapshot-critical-paths

Input

There are no input arguments for this command.

Context Output

Path Type Description
SupernaZeroTrust.Snapshot.Status String Result status: Success or AlreadyExists
SupernaZeroTrust.Snapshot.Message String Human-readable result message
SupernaZeroTrust.Snapshot.Result Unknown Raw API response from the snapshot operation

Command Example

!superna-zt-snapshot-critical-paths

Human Readable Output

✅ Snapshot created successfully

superna-zt-lockout-user

Lock out a user from NAS storage access.

Base Command

superna-zt-lockout-user

Input

Argument Name Description Required
username The username to lock out from NAS storage access Required

Context Output

Path Type Description
SupernaZeroTrust.Lockout.Username String The username that was locked out
SupernaZeroTrust.Lockout.Result Unknown Raw API response from the lockout operation

Command Example

!superna-zt-lockout-user username="jsmith"

superna-zt-unlock-user

Unlock a user from NAS storage access.

Base Command

superna-zt-unlock-user

Input

Argument Name Description Required
username The username to unlock from NAS storage access Required

Context Output

Path Type Description
SupernaZeroTrust.Unlock.Username String The username that was unlocked
SupernaZeroTrust.Unlock.Result Unknown Raw API response from the unlock operation

Command Example

!superna-zt-unlock-user username="jsmith"

Configuration parameters

  • base_url — API URL (e.g. https://sera.example.local) (required)
  • credentials — (required)
  • insecure — Trust any certificate (not secure)
  • proxy — Use system proxy settings

Commands (3)

  • superna-zt-lockout-user

    Lock out a user from NAS storage access.

  • superna-zt-snapshot-critical-paths

    Create a snapshot of Superna critical paths for ransomware rapid recovery.

  • superna-zt-unlock-user

    Unlock a user from NAS storage access.

"""Unit tests for SupernaZeroTrust integration"""

from SupernaZeroTrust import Client


def test_client_initialization():
    """Test that client initializes correctly"""
    client = Client(
        base_url="https://test.example.com",
        api_key="test-key",
        verify=False,
        proxy=False,
    )
    assert client._base_url.rstrip("/") == "https://test.example.com"


def test_snapshot_command(mocker):
    """Test snapshot-critical-paths command"""
    from SupernaZeroTrust import snapshot_critical_paths_command

    mock_client = mocker.Mock()
    mock_client.snapshot_critical_paths.return_value = {"status": "success"}

    result = snapshot_critical_paths_command(mock_client)

    assert result.outputs_prefix == "SupernaZeroTrust.Snapshot"
    assert result.outputs["Status"] == "Success"
    assert result.outputs["Result"] == {"status": "success"}


def test_lockout_command(mocker):
    """Test lockout-user command"""
    from SupernaZeroTrust import lockout_user_command

    mock_client = mocker.Mock()
    mock_client.lockout_user.return_value = {"status": "success"}

    result = lockout_user_command(mock_client, {"username": "testuser"})

    assert result.outputs_prefix == "SupernaZeroTrust.Lockout"
    assert result.outputs["Username"] == "testuser"
    assert result.outputs["Result"] == {"status": "success"}


def test_unlock_command(mocker):
    """Test unlock-user command"""
    from SupernaZeroTrust import unlock_user_command

    mock_client = mocker.Mock()
    mock_client.unlock_user.return_value = {"status": "success"}

    result = unlock_user_command(mock_client, {"username": "testuser"})

    assert result.outputs_prefix == "SupernaZeroTrust.Unlock"
    assert result.outputs["Username"] == "testuser"
    assert result.outputs["Result"] == {"status": "success"}