diff --git a/pkg/k8s/commands/cluster.go b/pkg/k8s/commands/cluster.go index c753ff512a6..f3cc4bd520c 100644 --- a/pkg/k8s/commands/cluster.go +++ b/pkg/k8s/commands/cluster.go @@ -3,12 +3,15 @@ package commands import ( "context" + "golang.org/x/exp/slices" + "golang.org/x/xerrors" + + "github.com/aquasecurity/trivy-kubernetes/pkg/artifacts" "github.com/aquasecurity/trivy-kubernetes/pkg/k8s" "github.com/aquasecurity/trivy-kubernetes/pkg/trivyk8s" "github.com/aquasecurity/trivy/pkg/flag" "github.com/aquasecurity/trivy/pkg/log" - - "golang.org/x/xerrors" + "github.com/aquasecurity/trivy/pkg/types" ) // clusterRun runs scan on kubernetes cluster @@ -16,10 +19,18 @@ func clusterRun(ctx context.Context, opts flag.Options, cluster k8s.Cluster) err if err := validateReportArguments(opts); err != nil { return err } - - artifacts, err := trivyk8s.New(cluster, log.Logger).ListArtifactAndNodeInfo(ctx) - if err != nil { - return xerrors.Errorf("get k8s artifacts error: %w", err) + var artifacts []*artifacts.Artifact + var err error + if opts.Scanners.AnyEnabled(types.MisconfigScanner) && slices.Contains(opts.Components, "infra") { + artifacts, err = trivyk8s.New(cluster, log.Logger).ListArtifactAndNodeInfo(ctx) + if err != nil { + return xerrors.Errorf("get k8s artifacts with node info error: %w", err) + } + } else { + artifacts, err = trivyk8s.New(cluster, log.Logger).ListArtifacts(ctx) + if err != nil { + return xerrors.Errorf("get k8s artifacts error: %w", err) + } } runner := newRunner(opts, cluster.GetCurrentContext())