Security Tools¶
provide.testkit.quality.security
¶
Security analysis integration for provide-testkit.
Provides comprehensive security scanning using multiple security tools: - Bandit: Python SAST (static application security testing) - pip-audit: Dependency vulnerability scanning (PyPI advisories) - Safety: Dependency vulnerability scanning (PyUp database) - GitLeaks: Secret detection (fast, pattern-based) - TruffleHog: Deep secret detection (entropy analysis, verification) - Semgrep: Pattern-based SAST with custom rules
Features: - Multiple vulnerability scanners for comprehensive coverage - Dependency vulnerability scanning - Secret/credential detection - Security issue reporting and classification - Integration with quality gates - Artifact management for CI/CD
Usage
Basic security scanning (Bandit)¶
def test_with_security(security_scanner): result = security_scanner.scan(path) assert result.passed
Dependency vulnerability scanning¶
from provide.testkit.quality.security import PipAuditScanner scanner = PipAuditScanner() result = scanner.analyze(path)
Secret detection¶
from provide.testkit.quality.security import GitLeaksScanner scanner = GitLeaksScanner() result = scanner.analyze(path)
Classes¶
GitLeaksScanner
¶
Secret detection scanner using GitLeaks.
Scans codebases for hardcoded secrets, API keys, passwords, and other sensitive information using pattern matching.
Note: GitLeaks is a Go binary and must be installed separately. Install via: brew install gitleaks (macOS) or download from GitHub releases.
Initialize GitLeaks scanner.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
dict[str, Any] | None
|
Scanner configuration options. If "config_file" is not specified, will auto-detect .provide/security/gitleaks.toml if it exists. |
None
|
Source code in provide/testkit/quality/security/gitleaks_scanner.py
Functions¶
analyze
¶
Run GitLeaks analysis on the given path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
Path
|
Path to scan for secrets |
required |
**kwargs
|
Any
|
Additional options including artifact_dir |
{}
|
Returns:
| Type | Description |
|---|---|
QualityResult
|
QualityResult with secret detection data |
Source code in provide/testkit/quality/security/gitleaks_scanner.py
report
¶
Generate report from QualityResult.
Source code in provide/testkit/quality/security/gitleaks_scanner.py
PipAuditScanner
¶
Dependency vulnerability scanner using pip-audit.
Scans Python dependencies for known security vulnerabilities using the PyPI security advisory database.
Note: pip-audit does not support config files. All configuration must be passed via CLI flags or the config dict. See wrknv.toml for CLI usage.
Initialize pip-audit scanner.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
dict[str, Any] | None
|
Scanner configuration options. Supported keys: - strict: Enable strict mode - local: Only scan locally installed packages - skip_editable: Skip editable installations - timeout: Command timeout in seconds |
None
|
Source code in provide/testkit/quality/security/pip_audit_scanner.py
Functions¶
analyze
¶
Run pip-audit analysis on the given path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
Path
|
Path to analyze (directory with requirements or pyproject.toml) |
required |
**kwargs
|
Any
|
Additional options including artifact_dir |
{}
|
Returns:
| Type | Description |
|---|---|
QualityResult
|
QualityResult with vulnerability analysis data |
Source code in provide/testkit/quality/security/pip_audit_scanner.py
report
¶
Generate report from QualityResult.
Source code in provide/testkit/quality/security/pip_audit_scanner.py
SafetyScanner
¶
Dependency vulnerability scanner using Safety.
Scans Python dependencies against the PyUp Safety database for known security vulnerabilities.
Initialize safety scanner.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
dict[str, Any] | None
|
Scanner configuration options. If "policy_file" is not specified, will auto-detect .provide/security/safety-policy.yml if it exists. |
None
|
Source code in provide/testkit/quality/security/safety_scanner.py
Functions¶
analyze
¶
Run safety analysis on the given path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
Path
|
Path to analyze (directory with requirements or pyproject.toml) |
required |
**kwargs
|
Any
|
Additional options including artifact_dir |
{}
|
Returns:
| Type | Description |
|---|---|
QualityResult
|
QualityResult with vulnerability analysis data |
Source code in provide/testkit/quality/security/safety_scanner.py
report
¶
Generate report from QualityResult.
Source code in provide/testkit/quality/security/safety_scanner.py
SecurityFixture
¶
Bases: BaseQualityFixture
Pytest fixture for security scanning integration.
Initialize security fixture.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
dict[str, Any] | None
|
Security scanner configuration |
None
|
artifact_dir
|
Path | None
|
Directory for artifacts |
None
|
Source code in provide/testkit/quality/security/fixture.py
Functions¶
generate_report
¶
Generate security report.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
format
|
str
|
Report format (terminal, json) |
'terminal'
|
Returns:
| Type | Description |
|---|---|
str
|
Formatted report |
Source code in provide/testkit/quality/security/fixture.py
scan
¶
Perform security scan.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
Path
|
Path to scan |
required |
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Security scan results |
Source code in provide/testkit/quality/security/fixture.py
setup
¶
Setup security scanning.
Source code in provide/testkit/quality/security/fixture.py
SecurityScanner
¶
Security vulnerability scanner using bandit and other tools.
Provides high-level interface for security analysis with automatic artifact management and integration with the quality framework.
Configuration
max_high_severity: Maximum allowed high severity issues (default: 0) max_medium_severity: Maximum allowed medium severity issues (default: 5) min_score: Minimum security score to pass (default: 80.0) verbosity: Output verbosity ('quiet', 'normal', 'verbose') exclude: List of file patterns to exclude from scanning
Initialize security scanner.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
dict[str, Any] | None
|
Security scanner configuration options |
None
|
Raises:
| Type | Description |
|---|---|
QualityToolError
|
If bandit is not available |
Source code in provide/testkit/quality/security/scanner.py
Functions¶
analyze
¶
Run security analysis on the given path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
Path
|
Path to analyze |
required |
**kwargs
|
Any
|
Additional options: - artifact_dir: Directory for output artifacts - verbosity: Override scanner's verbosity level |
{}
|
Returns:
| Type | Description |
|---|---|
QualityResult
|
QualityResult with security analysis data |
Source code in provide/testkit/quality/security/scanner.py
report
¶
Generate report from QualityResult (implements QualityTool protocol).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
result
|
QualityResult
|
Security result |
required |
format
|
str
|
Report format |
'terminal'
|
Returns:
| Type | Description |
|---|---|
str
|
Formatted report |
Source code in provide/testkit/quality/security/scanner.py
SemgrepScanner
¶
Pattern-based static analysis security scanner using Semgrep.
Scans code for security vulnerabilities, bugs, and anti-patterns using customizable pattern rules. Supports many languages including Python, JavaScript, Go, Java, and more.
Initialize Semgrep scanner.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
dict[str, Any] | None
|
Scanner configuration options. If "config" is not specified, will auto-detect .provide/security/semgrep.yml if it exists. |
None
|
Source code in provide/testkit/quality/security/semgrep_scanner.py
Functions¶
analyze
¶
Run Semgrep analysis on the given path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
Path
|
Path to scan |
required |
**kwargs
|
Any
|
Additional options including artifact_dir |
{}
|
Returns:
| Type | Description |
|---|---|
QualityResult
|
QualityResult with security analysis data |
Source code in provide/testkit/quality/security/semgrep_scanner.py
report
¶
Generate report from QualityResult.
Source code in provide/testkit/quality/security/semgrep_scanner.py
TruffleHogScanner
¶
Deep secret detection scanner using TruffleHog.
Scans codebases for secrets using entropy analysis and pattern matching. Can optionally verify if discovered credentials are still active.
Note: TruffleHog is a Go binary and must be installed separately. Install via: brew install trufflehog (macOS) or download from GitHub releases.
Initialize TruffleHog scanner.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config
|
dict[str, Any] | None
|
Scanner configuration options. If "config_file" is not specified, will auto-detect .provide/security/trufflehog.yml if it exists. |
None
|
Source code in provide/testkit/quality/security/trufflehog_scanner.py
Functions¶
analyze
¶
Run TruffleHog analysis on the given path.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
path
|
Path
|
Path to scan for secrets |
required |
**kwargs
|
Any
|
Additional options including artifact_dir |
{}
|
Returns:
| Type | Description |
|---|---|
QualityResult
|
QualityResult with secret detection data |
Source code in provide/testkit/quality/security/trufflehog_scanner.py
report
¶
Generate report from QualityResult.
Source code in provide/testkit/quality/security/trufflehog_scanner.py
๐ค AI-Generated Content
This documentation was generated with AI assistance and is still being audited. Some, or potentially a lot, of this information may be inaccurate. Learn more.
options:
show_source: true
show_root_heading: true
members_order: source
show_if_no_docstring: false
filters:
- "!^_"
- "^__init__$"