SupernaZeroTrust
Run Superna Zero Trust ransomware containment actions (critical path snapshot, user lockout/unlock) via the Superna API.
Utilities · Superna Zero Trust
Details
| ID | SupernaZeroTrust |
|---|---|
| Category | Utilities |
| From Version | 8.9.0 |
| Docker Image | demisto/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
- Navigate to Settings > Integrations > Servers & Services
- Search for Superna Zero Trust
- 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 |
- 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-userLock out a user from NAS storage access.
-
superna-zt-snapshot-critical-pathsCreate a snapshot of Superna critical paths for ransomware rapid recovery.
-
superna-zt-unlock-userUnlock 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"}