Aribot Security Platform SDK by Aristiun & Ayurak - Threat modeling, compliance, and cloud security APIs
Project description
Aribot Python SDK
Official Python SDK for the Aribot Security Platform.
Installation
pip install aribot
Quick Start
from aribot import Aribot
client = Aribot(api_key="your_api_key")
# Analyze architecture diagram for threats
result = client.threat_modeling.analyze_diagram("architecture.png")
print(f"Found {result['threat_count']} threats")
# Get detailed threats
threats = client.threat_modeling.get_threats(result['diagram_id'])
for threat in threats:
print(f"[{threat['severity']}] {threat['title']}")
Features
- Threat Modeling - Upload diagrams, detect components, identify threats
- Compliance Scanning - ISO 27001, SOC2, GDPR, HIPAA, PCI-DSS, NIST
- Cloud Security - Scan AWS, Azure, GCP for misconfigurations
- Pipeline Security - SAST, SCA, secrets detection in CI/CD
API Reference
Threat Modeling
# Upload and analyze a diagram
result = client.threat_modeling.analyze_diagram(
"architecture.png",
analysis_depth="comprehensive", # basic, comprehensive, detailed
wait=True, # wait for analysis to complete
timeout=300 # max wait time in seconds
)
# List diagrams
diagrams = client.threat_modeling.list(page=1, limit=25)
# Get diagram details
diagram = client.threat_modeling.get(diagram_id)
# Get threats for a diagram
threats = client.threat_modeling.get_threats(diagram_id)
# Get detected components
components = client.threat_modeling.get_components(diagram_id)
# Run AI-powered analysis
ai_result = client.threat_modeling.analyze_with_ai(
diagram_id,
analysis_types=["attack_paths", "data_flow"]
)
# Delete a diagram
client.threat_modeling.delete(diagram_id)
# Get dashboard metrics
dashboard = client.threat_modeling.dashboard(period="month")
Compliance Scanning
# Run compliance scan
result = client.compliance.scan(
diagram_id,
standards=["ISO27001", "SOC2", "GDPR"],
include_recommendations=True
)
print(f"Compliance score: {result['overall_score']}%")
# Get compliance report
report = client.compliance.get_report(diagram_id, format="json")
# List available standards
standards = client.compliance.list_standards()
# Get standard details
iso = client.compliance.get_standard("ISO27001")
# List controls for a standard
controls = client.compliance.list_controls("SOC2", category="access_control")
# Get compliance gaps
gaps = client.compliance.get_gaps(diagram_id, standard_id="ISO27001")
# Create custom standard
custom = client.compliance.add_custom_standard(
name="Internal Security Policy",
description="Company security requirements",
controls=[
{
"id": "ISP-001",
"name": "Data Encryption",
"description": "All data must be encrypted at rest",
"severity": "high"
}
]
)
# Get compliance dashboard
dashboard = client.compliance.dashboard(period="quarter")
Cloud Security
# Run cloud security scan
scan = client.cloud.scan(
project_id="123456789012",
provider="aws",
services=["iam", "s3", "ec2"],
compliance_standards=["CIS-AWS"]
)
# Get scan results
scan = client.cloud.get_scan(scan_id)
# List scans
scans = client.cloud.list_scans(provider="aws", status="completed")
# Get findings
findings = client.cloud.get_findings(
scan_id,
severity="critical",
service="s3"
)
# Connect AWS account
account = client.cloud.connect_account(
provider="aws",
credentials={
"role_arn": "arn:aws:iam::123456789012:role/AribotSecurityRole",
"external_id": "your-external-id"
},
name="Production AWS"
)
# Connect GCP project
account = client.cloud.connect_account(
provider="gcp",
credentials={
"service_account_key": "{ ... }",
"project_id": "my-project-123"
}
)
# Connect Azure subscription
account = client.cloud.connect_account(
provider="azure",
credentials={
"tenant_id": "...",
"client_id": "...",
"client_secret": "..."
}
)
# List connected accounts
accounts = client.cloud.list_accounts(provider="aws")
# Get remediation steps
remediation = client.cloud.get_remediation(finding_id)
# Resolve a finding
client.cloud.resolve_finding(
finding_id,
resolution="fixed",
notes="Patched in deployment v1.2.3"
)
# Suppress a finding
client.cloud.suppress_finding(
finding_id,
reason="Accepted risk per security review",
duration_days=90
)
# Get cloud security dashboard
dashboard = client.cloud.dashboard(project_id="123456789012")
Pipeline Security
# Create a project
project = client.pipeline.create_project(
name="my-api",
repository_url="https://github.com/org/my-api",
scan_types=["sast", "sca", "secrets"]
)
# Run security scan
result = client.pipeline.scan(
project_id,
commit_sha="abc123def456",
branch="main",
scan_types=["sast", "sca", "secrets"],
fail_on_severity="high",
wait=True
)
if result['status'] == 'failed':
print("Security gate failed!")
for finding in result['blocking_findings']:
print(f" [{finding['severity']}] {finding['title']}")
# Get scan details
scan = client.pipeline.get_scan(scan_id)
# Get specific finding types
sast_findings = client.pipeline.get_sast_findings(scan_id)
sca_findings = client.pipeline.get_sca_findings(scan_id)
secrets = client.pipeline.get_secrets_findings(scan_id)
# Configure security gates
client.pipeline.configure_gates(
project_id,
gates={
"fail_on_critical": True,
"fail_on_high": True,
"max_high_findings": 5,
"block_secrets": True,
"required_scan_types": ["sast", "secrets"]
}
)
# Set baseline (suppress existing findings)
client.pipeline.add_baseline(project_id, scan_id)
# Suppress a finding
client.pipeline.suppress_finding(
finding_id,
reason="False positive - validated manually"
)
# Get pipeline dashboard
dashboard = client.pipeline.dashboard(project_id=project_id)
Error Handling
from aribot import (
Aribot,
AribotError,
AuthenticationError,
RateLimitError,
ValidationError,
NotFoundError,
ServerError
)
client = Aribot(api_key="your_api_key")
try:
result = client.threat_modeling.analyze_diagram("diagram.png")
except AuthenticationError:
print("Invalid API key")
except RateLimitError as e:
print(f"Rate limited. Retry after {e.retry_after} seconds")
except ValidationError as e:
print(f"Invalid request: {e.errors}")
except NotFoundError:
print("Resource not found")
except ServerError:
print("Server error - try again later")
except AribotError as e:
print(f"API error: {e.message}")
Configuration
# Custom base URL (for on-premise deployments)
client = Aribot(
api_key="your_api_key",
base_url="https://aribot.internal.company.com/api",
timeout=60
)
# Check API health
health = client.health()
# Get current user info
user = client.me()
# Get usage stats
usage = client.usage(period="month")
print(f"API calls used: {usage['calls_used']}/{usage['calls_limit']}")
CI/CD Integration
GitHub Actions
- name: Security Scan
env:
AYURAK_API_KEY: ${{ secrets.AYURAK_API_KEY }}
run: |
pip install aribot
python -c "
from aribot import Aribot
client = Aribot(api_key='$AYURAK_API_KEY')
result = client.pipeline.scan(
project_id='${{ vars.PROJECT_ID }}',
commit_sha='${{ github.sha }}',
fail_on_severity='high',
wait=True
)
if result['status'] == 'failed':
exit(1)
"
GitLab CI
security_scan:
script:
- pip install aribot
- python scripts/security_scan.py
variables:
AYURAK_API_KEY: $AYURAK_API_KEY
Support
- Documentation: https://developers.aribot.com/docs/python-sdk
- API Reference: https://developers.aribot.com/api
- Issues: https://github.com/AribotAI/aribot-python/issues
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aribot-1.0.0.tar.gz
(11.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
aribot-1.0.0-py3-none-any.whl
(15.5 kB
view details)
File details
Details for the file aribot-1.0.0.tar.gz.
File metadata
- Download URL: aribot-1.0.0.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ac0e4a9bec3f49c383d32a6cf794e6d25160df6323bb86f3727839c731b2dc7
|
|
| MD5 |
cf9488e3282eb58462d8b878b3089d7e
|
|
| BLAKE2b-256 |
eee8dcd226ae5ecd2a4479f14d5a49cdf033096f2e687fe5e4df0e4ffb32f3c2
|
File details
Details for the file aribot-1.0.0-py3-none-any.whl.
File metadata
- Download URL: aribot-1.0.0-py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c72cf081d9aeefd013847ca36a9bd030fb10b4a3a4e946278e30b696801ae7f7
|
|
| MD5 |
8198aaf4d9dd07bebce3c6aa2224b733
|
|
| BLAKE2b-256 |
3da402f36be4254d89ff5876a59b59da60c6995ea6f31878f82677984f66acaa
|