mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-21 23:00:42 -08:00
75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
package scanner
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"github.com/aquasecurity/defsec/pkg/framework"
|
|
|
|
"github.com/aquasecurity/trivy/pkg/flag"
|
|
"github.com/aquasecurity/trivy/pkg/log"
|
|
|
|
"github.com/aquasecurity/defsec/pkg/scan"
|
|
"github.com/aquasecurity/defsec/pkg/scanners/cloud/aws"
|
|
"github.com/aquasecurity/defsec/pkg/scanners/options"
|
|
)
|
|
|
|
type AWSScanner struct {
|
|
}
|
|
|
|
func NewScanner() *AWSScanner {
|
|
return &AWSScanner{}
|
|
}
|
|
|
|
func (s *AWSScanner) Scan(ctx context.Context, option flag.Options) (scan.Results, error) {
|
|
|
|
var scannerOpts []options.ScannerOption
|
|
if !option.NoProgress {
|
|
tracker := newProgressTracker()
|
|
defer tracker.Finish()
|
|
scannerOpts = append(scannerOpts, aws.ScannerWithProgressTracker(tracker))
|
|
}
|
|
|
|
if len(option.Services) > 0 {
|
|
scannerOpts = append(scannerOpts, aws.ScannerWithAWSServices(option.Services...))
|
|
}
|
|
|
|
if option.Debug {
|
|
scannerOpts = append(scannerOpts, options.ScannerWithDebug(&defsecLogger{}))
|
|
}
|
|
|
|
if option.Region != "" {
|
|
scannerOpts = append(
|
|
scannerOpts,
|
|
aws.ScannerWithAWSRegion(option.Region),
|
|
)
|
|
}
|
|
|
|
if option.Endpoint != "" {
|
|
scannerOpts = append(
|
|
scannerOpts,
|
|
aws.ScannerWithAWSEndpoint(option.Endpoint),
|
|
)
|
|
}
|
|
|
|
scannerOpts = append(scannerOpts, options.ScannerWithFrameworks(
|
|
framework.Default,
|
|
framework.CIS_AWS_1_2,
|
|
))
|
|
|
|
defsecResults, err := aws.New(scannerOpts...).Scan(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return defsecResults, nil
|
|
}
|
|
|
|
type defsecLogger struct {
|
|
}
|
|
|
|
func (d *defsecLogger) Write(p []byte) (n int, err error) {
|
|
log.Logger.Debug("[defsec] " + strings.TrimSpace(string(p)))
|
|
return len(p), nil
|
|
}
|