From 8bdff31693652d73fe24ef21e4353ae0c82d9688 Mon Sep 17 00:00:00 2001 From: dwertent Date: Sun, 6 Feb 2022 11:13:33 +0200 Subject: [PATCH] replace print with logger --- README.md | 8 +++++++- cautils/customerloader.go | 5 +++-- clihandler/clisubmit.go | 1 + clihandler/cmd/cluster_get.go | 3 ++- clihandler/cmd/cluster_set.go | 3 ++- clihandler/cmd/framework.go | 6 ++---- clihandler/cmd/rbac.go | 7 ++----- clihandler/cmd/results.go | 4 ++-- clihandler/cmd/submit.go | 3 +++ clihandler/cmd/version.go | 5 ++--- clihandler/initcliutils.go | 2 +- resultshandling/printer/printresults.go | 5 +++-- resultshandling/printer/v1/jsonprinter.go | 4 ++-- resultshandling/printer/v1/junit.go | 9 ++++----- resultshandling/printer/v1/prometheusprinter.go | 4 ++-- resultshandling/printer/v2/junit.go | 7 +++---- .../printer/v2/resourcemapping/jsonprinter.go | 4 ++-- resultshandling/results.go | 5 ++--- 18 files changed, 45 insertions(+), 40 deletions(-) create mode 100644 clihandler/clisubmit.go diff --git a/README.md b/README.md index 5bf1a38b..dfc80bc8 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ Set-ExecutionPolicy RemoteSigned -scope CurrentUser | `--use-from` | | Load local framework object from specified path. If not used will download latest | | `--use-artifacts-from` | | Load artifacts (frameworks, control-config, exceptions) from local directory. If not used will download them | | | `--use-default` | `false` | Load local framework object from default path. If not used will download latest | `true`/`false` | -| `--exceptions` | | Path to an [exceptions obj](examples/exceptions.json). If not set will download exceptions from Armo management portal | +| `--exceptions` | | Path to an exceptions obj, [examples](examples/exceptions/README.md). Default will download exceptions from Kubescape SaaS | | `--controls-config` | | Path to a controls-config obj. If not set will download controls-config from ARMO management portal | | | `--submit` | `false` | If set, Kubescape will send the scan results to Armo management portal where you can see the results in a user-friendly UI, choose your preferred compliance framework, check risk results history and trends, manage exceptions, get remediation recommendations and much more. By default the results are not sent | `true`/`false` | | `--keep-local` | `false` | Kubescape will not send scan results to Armo management portal. Use this flag if you ran with the `--submit` flag in the past and you do not want to submit your current scan results | `true`/`false` | @@ -114,6 +114,12 @@ Set-ExecutionPolicy RemoteSigned -scope CurrentUser ### Examples + +#### Scan a running Kubernetes cluster and submit results to the [Kubescape SaaS version](https://portal.armo.cloud/) +``` +kubescape scan --submit +``` + #### Scan a running Kubernetes cluster with [`nsa`](https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) framework and submit results to the [Kubescape SaaS version](https://portal.armo.cloud/) ``` kubescape scan framework nsa --submit diff --git a/cautils/customerloader.go b/cautils/customerloader.go index d2263a2c..fa97bd7a 100644 --- a/cautils/customerloader.go +++ b/cautils/customerloader.go @@ -11,6 +11,7 @@ import ( "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/kubescape/cautils/getter" + "github.com/armosec/kubescape/cautils/logger" corev1 "k8s.io/api/core/v1" ) @@ -114,7 +115,7 @@ func NewLocalConfig(backendAPI getter.IBackend, customerGUID, clusterName string if lc.configObj.AccountID != "" { if err := lc.SetTenant(); err != nil { - fmt.Println(err) + logger.L().Error(err.Error()) } } @@ -229,7 +230,7 @@ func NewClusterConfig(k8s *k8sinterface.KubernetesApi, backendAPI getter.IBacken if c.configObj.AccountID != "" { if err := c.SetTenant(); err != nil { - fmt.Println(err) // TODO: print to log + logger.L().Error(err.Error()) } } diff --git a/clihandler/clisubmit.go b/clihandler/clisubmit.go new file mode 100644 index 00000000..4ee666a0 --- /dev/null +++ b/clihandler/clisubmit.go @@ -0,0 +1 @@ +package clihandler diff --git a/clihandler/cmd/cluster_get.go b/clihandler/cmd/cluster_get.go index 45cab878..d135172b 100644 --- a/clihandler/cmd/cluster_get.go +++ b/clihandler/cmd/cluster_get.go @@ -7,6 +7,7 @@ import ( "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/kubescape/cautils" "github.com/armosec/kubescape/cautils/getter" + "github.com/armosec/kubescape/cautils/logger" "github.com/spf13/cobra" ) @@ -40,7 +41,7 @@ var getCmd = &cobra.Command{ } return err } - fmt.Println(key + "=" + val) + logger.L().Info(key + "=" + val) return nil }, } diff --git a/clihandler/cmd/cluster_set.go b/clihandler/cmd/cluster_set.go index 4858e0bb..de68cc9d 100644 --- a/clihandler/cmd/cluster_set.go +++ b/clihandler/cmd/cluster_set.go @@ -7,6 +7,7 @@ import ( "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/kubescape/cautils" "github.com/armosec/kubescape/cautils/getter" + "github.com/armosec/kubescape/cautils/logger" "github.com/spf13/cobra" ) @@ -35,7 +36,7 @@ var setClusterCmd = &cobra.Command{ if err := clusterConfig.SetKeyValueInConfigmap(key, data); err != nil { return err } - fmt.Println("Value added successfully.") + logger.L().Info("value added successfully.") return nil }, } diff --git a/clihandler/cmd/framework.go b/clihandler/cmd/framework.go index 166e7db5..44e9e662 100644 --- a/clihandler/cmd/framework.go +++ b/clihandler/cmd/framework.go @@ -122,11 +122,9 @@ func init() { func flagValidationFramework() { if scanInfo.Submit && scanInfo.Local { - fmt.Println("You can use `keep-local` or `submit`, but not both") - os.Exit(1) + logger.L().Fatal("you can use `keep-local` or `submit`, but not both") } if 100 < scanInfo.FailThreshold { - fmt.Println("bad argument: out of range threshold") - os.Exit(1) + logger.L().Fatal("bad argument: out of range threshold") } } diff --git a/clihandler/cmd/rbac.go b/clihandler/cmd/rbac.go index 2762ddf7..d9cd493b 100644 --- a/clihandler/cmd/rbac.go +++ b/clihandler/cmd/rbac.go @@ -1,11 +1,9 @@ package cmd import ( - "fmt" - "os" - "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/kubescape/clihandler" "github.com/armosec/kubescape/clihandler/cliinterfaces" reporterv1 "github.com/armosec/kubescape/resultshandling/reporter/v1" @@ -41,8 +39,7 @@ var rabcCmd = &cobra.Command{ } if err := clihandler.Submit(submitInterfaces); err != nil { - fmt.Println(err) - os.Exit(1) + logger.L().Fatal(err.Error()) } return nil }, diff --git a/clihandler/cmd/results.go b/clihandler/cmd/results.go index 1932ccb9..ff791371 100644 --- a/clihandler/cmd/results.go +++ b/clihandler/cmd/results.go @@ -8,6 +8,7 @@ import ( "github.com/armosec/k8s-interface/k8sinterface" "github.com/armosec/k8s-interface/workloadinterface" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/kubescape/clihandler" "github.com/armosec/kubescape/clihandler/cliinterfaces" reporterv1 "github.com/armosec/kubescape/resultshandling/reporter/v1" @@ -79,8 +80,7 @@ var resultsCmd = &cobra.Command{ } if err := clihandler.Submit(submitInterfaces); err != nil { - fmt.Println(err) - os.Exit(1) + logger.L().Fatal(err.Error()) } return nil }, diff --git a/clihandler/cmd/submit.go b/clihandler/cmd/submit.go index 7677fa84..8ed1bbf9 100644 --- a/clihandler/cmd/submit.go +++ b/clihandler/cmd/submit.go @@ -10,6 +10,9 @@ import ( var submitInfo cliobjects.Submit +var submitCmdExamples = ` + +` var submitCmd = &cobra.Command{ Use: "submit ", Short: "Submit an object to the Kubescape SaaS version", diff --git a/clihandler/cmd/version.go b/clihandler/cmd/version.go index 7b016884..e2e7bb63 100644 --- a/clihandler/cmd/version.go +++ b/clihandler/cmd/version.go @@ -1,9 +1,8 @@ package cmd import ( - "fmt" - "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/spf13/cobra" ) @@ -14,7 +13,7 @@ var versionCmd = &cobra.Command{ RunE: func(cmd *cobra.Command, args []string) error { v := cautils.NewIVersionCheckHandler() v.CheckLatestVersion(cautils.NewVersionCheckRequest(cautils.BuildNumber, "", "", "version")) - fmt.Println("Your current version is: " + cautils.BuildNumber) + logger.L().Info("Your current version is: " + cautils.BuildNumber) return nil }, } diff --git a/clihandler/initcliutils.go b/clihandler/initcliutils.go index 150d11c9..cb1807e9 100644 --- a/clihandler/initcliutils.go +++ b/clihandler/initcliutils.go @@ -141,7 +141,7 @@ func setSubmitBehavior(scanInfo *cautils.ScanInfo, tenantConfig cautils.ITenantC if scanInfo.Submit { // submit - Create tenant & Submit report if err := tenantConfig.SetTenant(); err != nil { - fmt.Println(err) + logger.L().Error(err.Error()) } } } diff --git a/resultshandling/printer/printresults.go b/resultshandling/printer/printresults.go index 4ced0ac6..1ac75455 100644 --- a/resultshandling/printer/printresults.go +++ b/resultshandling/printer/printresults.go @@ -5,6 +5,7 @@ import ( "os" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" ) var INDENT = " " @@ -27,8 +28,8 @@ func GetWriter(outputFile string) *os.File { if outputFile != "" { f, err := os.OpenFile(outputFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { - fmt.Println("failed to open file for writing, reason: ", err.Error()) - return os.Stdout + logger.L().Error(fmt.Sprintf("failed to open file for writing, reason: %s", err.Error())) + return os.Stderr } return f } diff --git a/resultshandling/printer/v1/jsonprinter.go b/resultshandling/printer/v1/jsonprinter.go index dce9ebe0..59b7c22b 100644 --- a/resultshandling/printer/v1/jsonprinter.go +++ b/resultshandling/printer/v1/jsonprinter.go @@ -6,6 +6,7 @@ import ( "os" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/kubescape/resultshandling/printer" ) @@ -38,8 +39,7 @@ func (jsonPrinter *JsonPrinter) ActionPrint(opaSessionObj *cautils.OPASessionObj } if err != nil { - fmt.Println("Failed to convert posture report object!") - os.Exit(1) + logger.L().Fatal("failed to convert posture report object") } jsonPrinter.writer.Write(postureReportStr) } diff --git a/resultshandling/printer/v1/junit.go b/resultshandling/printer/v1/junit.go index 460b4662..baee79fd 100644 --- a/resultshandling/printer/v1/junit.go +++ b/resultshandling/printer/v1/junit.go @@ -6,6 +6,7 @@ import ( "os" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/kubescape/resultshandling/printer" "github.com/armosec/opa-utils/reporthandling" ) @@ -31,13 +32,11 @@ func (junitPrinter *JunitPrinter) ActionPrint(opaSessionObj *cautils.OPASessionO junitResult, err := convertPostureReportToJunitResult(opaSessionObj.PostureReport) if err != nil { - fmt.Println("Failed to convert posture report object!") - os.Exit(1) + logger.L().Fatal("failed to convert posture report object") } postureReportStr, err := xml.Marshal(junitResult) if err != nil { - fmt.Println("Failed to convert posture report object!") - os.Exit(1) + logger.L().Fatal("failed to convert posture report object") } junitPrinter.writer.Write(postureReportStr) } @@ -123,4 +122,4 @@ func convertPostureReportToJunitResult(postureResult *reporthandling.PostureRepo juResult.Suites = append(juResult.Suites, suite) } return &juResult, nil -} \ No newline at end of file +} diff --git a/resultshandling/printer/v1/prometheusprinter.go b/resultshandling/printer/v1/prometheusprinter.go index 861d7c28..be97038f 100644 --- a/resultshandling/printer/v1/prometheusprinter.go +++ b/resultshandling/printer/v1/prometheusprinter.go @@ -6,6 +6,7 @@ import ( "github.com/armosec/k8s-interface/workloadinterface" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/kubescape/resultshandling/printer" "github.com/armosec/opa-utils/reporthandling" ) @@ -90,7 +91,6 @@ func (printer *PrometheusPrinter) ActionPrint(opaSessionObj *cautils.OPASessionO err := printer.printReports(opaSessionObj.AllResources, opaSessionObj.PostureReport.FrameworkReports) if err != nil { - fmt.Println(err) - os.Exit(1) + logger.L().Fatal(err.Error()) } } diff --git a/resultshandling/printer/v2/junit.go b/resultshandling/printer/v2/junit.go index 283d4e04..84cbd757 100644 --- a/resultshandling/printer/v2/junit.go +++ b/resultshandling/printer/v2/junit.go @@ -6,6 +6,7 @@ import ( "os" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/kubescape/resultshandling/printer" reporthandlingv2 "github.com/armosec/opa-utils/reporthandling/v2" ) @@ -33,13 +34,11 @@ func (junitPrinter *JunitPrinter) FinalizeData(opaSessionObj *cautils.OPASession func (junitPrinter *JunitPrinter) ActionPrint(opaSessionObj *cautils.OPASessionObj) { junitResult, err := convertPostureReportToJunitResult(opaSessionObj.Report) if err != nil { - fmt.Println("Failed to convert posture report object!") - os.Exit(1) + logger.L().Fatal("failed to convert posture report object") } postureReportStr, err := xml.Marshal(junitResult) if err != nil { - fmt.Println("Failed to convert posture report object!") - os.Exit(1) + logger.L().Fatal("failed to convert posture report object") } junitPrinter.writer.Write(postureReportStr) } diff --git a/resultshandling/printer/v2/resourcemapping/jsonprinter.go b/resultshandling/printer/v2/resourcemapping/jsonprinter.go index fc221304..38194cb5 100644 --- a/resultshandling/printer/v2/resourcemapping/jsonprinter.go +++ b/resultshandling/printer/v2/resourcemapping/jsonprinter.go @@ -6,6 +6,7 @@ import ( "os" "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/kubescape/resultshandling/printer" ) @@ -30,8 +31,7 @@ func (jsonPrinter *JsonPrinter) ActionPrint(opaSessionObj *cautils.OPASessionObj postureReportStr, err := json.Marshal(opaSessionObj.Report) if err != nil { - fmt.Println("Failed to convert posture report object!") - os.Exit(1) + logger.L().Fatal("failed to convert posture report object") } jsonPrinter.writer.Write(postureReportStr) } diff --git a/resultshandling/results.go b/resultshandling/results.go index b20d9bb2..c9278292 100644 --- a/resultshandling/results.go +++ b/resultshandling/results.go @@ -1,9 +1,8 @@ package resultshandling import ( - "fmt" - "github.com/armosec/kubescape/cautils" + "github.com/armosec/kubescape/cautils/logger" "github.com/armosec/kubescape/resultshandling/printer" "github.com/armosec/kubescape/resultshandling/reporter" "github.com/armosec/opa-utils/reporthandling" @@ -30,7 +29,7 @@ func (resultsHandler *ResultsHandler) HandleResults(scanInfo *cautils.ScanInfo) resultsHandler.printerObj.ActionPrint(opaSessionObj) if err := resultsHandler.reporterObj.ActionSendReport(opaSessionObj); err != nil { - fmt.Println(err) + logger.L().Error(err.Error()) } score := opaSessionObj.Report.SummaryDetails.Score