From f896b65a874d1e202df3e479e8f33b26782965ac Mon Sep 17 00:00:00 2001 From: dwertent Date: Thu, 10 Feb 2022 08:55:28 +0200 Subject: [PATCH 1/4] fixed eks cluster name --- .github/workflows/build.yaml | 2 +- .github/workflows/build_dev.yaml | 2 +- build/Dockerfile | 4 ++-- cautils/logger/prettylogger/logger.go | 5 ++++- clihandler/cmd/version.go | 6 ++++-- clihandler/initcli.go | 21 ++++++++++++++++++--- docs/summary.png | Bin 61960 -> 72206 bytes go.mod | 2 +- go.sum | 4 ++-- hostsensorutils/hostsensorgetfrompod.go | 4 ++-- resourcehandler/ekssupport.go | 16 +++++++++------- resourcehandler/gkesupport.go | 8 +++----- resourcehandler/k8sresources.go | 2 +- 13 files changed, 48 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a99b0c516a..d5bba49517 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -87,7 +87,7 @@ jobs: run: echo '::set-output name=IMAGE_NAME::quay.io/${{ github.repository_owner }}/kubescape' - name: Build the Docker image - run: docker build . --file build/Dockerfile --tag ${{ steps.image-name.outputs.IMAGE_NAME }}:${{ steps.image-version.outputs.IMAGE_VERSION }} --build-arg run_number=${{ github.run_number }} + run: docker build . --file build/Dockerfile --tag ${{ steps.image-name.outputs.IMAGE_NAME }}:${{ steps.image-version.outputs.IMAGE_VERSION }} --build-arg image_version=${{ steps.image-version.outputs.IMAGE_VERSION }} - name: Re-Tag Image to latest run: docker tag ${{ steps.image-name.outputs.IMAGE_NAME }}:${{ steps.image-version.outputs.IMAGE_VERSION }} ${{ steps.image-name.outputs.IMAGE_NAME }}:latest diff --git a/.github/workflows/build_dev.yaml b/.github/workflows/build_dev.yaml index e2840b0118..3facff1ea5 100644 --- a/.github/workflows/build_dev.yaml +++ b/.github/workflows/build_dev.yaml @@ -65,7 +65,7 @@ jobs: run: echo '::set-output name=IMAGE_NAME::quay.io/${{ github.repository_owner }}/kubescape' - name: Build the Docker image - run: docker build . --file build/Dockerfile --tag ${{ steps.image-name.outputs.IMAGE_NAME }}:${{ steps.image-version.outputs.IMAGE_VERSION }} --build-arg run_number=${{ github.run_number }} + run: docker build . --file build/Dockerfile --tag ${{ steps.image-name.outputs.IMAGE_NAME }}:${{ steps.image-version.outputs.IMAGE_VERSION }} --build-arg image_version=${{ steps.image-version.outputs.IMAGE_VERSION }} - name: Login to Quay.io env: diff --git a/build/Dockerfile b/build/Dockerfile index 55e168c582..2047431093 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,9 +1,9 @@ FROM golang:1.17-alpine as builder #ENV GOPROXY=https://goproxy.io,direct -ARG run_number +ARG image_version -ENV RELEASE=v1.0.${run_number} +ENV RELEASE=image_version ENV GO111MODULE= diff --git a/cautils/logger/prettylogger/logger.go b/cautils/logger/prettylogger/logger.go index 4ae10bf7ea..f783fbf68c 100644 --- a/cautils/logger/prettylogger/logger.go +++ b/cautils/logger/prettylogger/logger.go @@ -57,7 +57,10 @@ func (pl *PrettyLogger) print(level helpers.Level, msg string, details ...helper if !level.Skip(pl.level) { pl.mutex.Lock() prefix(level)(pl.writer, "[%s] ", level.String()) - message(pl.writer, fmt.Sprintf("%s. %s\n", msg, detailsToString(details))) + if d := detailsToString(details); d != "" { + msg = fmt.Sprintf("%s. %s", msg, d) + } + message(pl.writer, fmt.Sprintf("%s\n", msg)) pl.mutex.Unlock() } diff --git a/clihandler/cmd/version.go b/clihandler/cmd/version.go index e2e7bb6337..7881ce3a2e 100644 --- a/clihandler/cmd/version.go +++ b/clihandler/cmd/version.go @@ -1,8 +1,10 @@ package cmd import ( + "fmt" + "os" + "github.com/armosec/kubescape/cautils" - "github.com/armosec/kubescape/cautils/logger" "github.com/spf13/cobra" ) @@ -13,7 +15,7 @@ var versionCmd = &cobra.Command{ RunE: func(cmd *cobra.Command, args []string) error { v := cautils.NewIVersionCheckHandler() v.CheckLatestVersion(cautils.NewVersionCheckRequest(cautils.BuildNumber, "", "", "version")) - logger.L().Info("Your current version is: " + cautils.BuildNumber) + fmt.Fprintln(os.Stdout, "Your current version is: "+cautils.BuildNumber) return nil }, } diff --git a/clihandler/initcli.go b/clihandler/initcli.go index 784a1c9e9b..a3398fc137 100644 --- a/clihandler/initcli.go +++ b/clihandler/initcli.go @@ -36,6 +36,7 @@ type componentInterfaces struct { func getInterfaces(scanInfo *cautils.ScanInfo) componentInterfaces { + // ================== setup k8s interface object ====================================== var k8s *k8sinterface.KubernetesApi if scanInfo.GetScanningEnvironment() == cautils.ScanCluster { k8s = getKubernetesApi() @@ -44,11 +45,20 @@ func getInterfaces(scanInfo *cautils.ScanInfo) componentInterfaces { } } + // ================== setup tenant object ====================================== + tenantConfig := getTenantConfig(scanInfo.Account, scanInfo.KubeContext, k8s) // Set submit behavior AFTER loading tenant config setSubmitBehavior(scanInfo, tenantConfig) + // ================== version testing ====================================== + + v := cautils.NewIVersionCheckHandler() + v.CheckLatestVersion(cautils.NewVersionCheckRequest(cautils.BuildNumber, policyIdentifierNames(scanInfo.PolicyIdentifier), "", scanInfo.GetScanningEnvironment())) + + // ================== setup host sensor object ====================================== + hostSensorHandler := getHostSensorHandler(scanInfo, k8s) if err := hostSensorHandler.Init(); err != nil { logger.L().Error("failed to init host sensor", helpers.Error(err)) @@ -59,24 +69,29 @@ func getInterfaces(scanInfo *cautils.ScanInfo) componentInterfaces { scanInfo.ExcludedNamespaces = fmt.Sprintf("%s,%s", scanInfo.ExcludedNamespaces, hostSensorHandler.GetNamespace()) } + // ================== setup registry adaptors ====================================== + registryAdaptors, err := resourcehandler.NewRegistryAdaptors() if err != nil { logger.L().Error("failed to initialize registry adaptors", helpers.Error(err)) } + // ================== setup resource collector object ====================================== + resourceHandler := getResourceHandler(scanInfo, tenantConfig, k8s, hostSensorHandler, registryAdaptors) + // ================== setup reporter & printer objects ====================================== + // reporting behavior - setup reporter reportHandler := getReporter(tenantConfig, scanInfo.Submit) - v := cautils.NewIVersionCheckHandler() - v.CheckLatestVersion(cautils.NewVersionCheckRequest(cautils.BuildNumber, policyIdentifierNames(scanInfo.PolicyIdentifier), "", scanInfo.GetScanningEnvironment())) - // setup printer printerHandler := printerv1.GetPrinter(scanInfo.Format, scanInfo.VerboseMode) // printerHandler = printerv2.GetPrinter(scanInfo.Format, scanInfo.VerboseMode) printerHandler.SetWriter(scanInfo.Output) + // ================== return interface ====================================== + return componentInterfaces{ tenantConfig: tenantConfig, resourceHandler: resourceHandler, diff --git a/docs/summary.png b/docs/summary.png index 2449b98a923c2bfccf14ba4bfed222c1374b0b21..565d0ae2f616fd92e015df78f536bd5c7e34c736 100644 GIT binary patch literal 72206 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 diff --git a/go.mod b/go.mod index 34e8d788e0..35cdc24cdd 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.17 require ( github.com/armosec/armoapi-go v0.0.49 github.com/armosec/k8s-interface v0.0.60 - github.com/armosec/opa-utils v0.0.107 + github.com/armosec/opa-utils v0.0.110 github.com/armosec/rbac-utils v0.0.14 github.com/armosec/utils-go v0.0.3 github.com/armosec/utils-k8s-go v0.0.1 diff --git a/go.sum b/go.sum index b28bd6fe0c..c1d4f78fd1 100644 --- a/go.sum +++ b/go.sum @@ -93,8 +93,8 @@ github.com/armosec/k8s-interface v0.0.50/go.mod h1:vHxGWqD/uh6+GQb9Sqv7OGMs+Rvc2 github.com/armosec/k8s-interface v0.0.60 h1:jTCiO15QQbHVuxFQ928rp4srf1rQoUzeybfcbv/cuss= github.com/armosec/k8s-interface v0.0.60/go.mod h1:g0jv/fG+VqpT5ivO6D2gJcJ/w68BiffDz+PcU9YFbL4= github.com/armosec/opa-utils v0.0.64/go.mod h1:6tQP8UDq2EvEfSqh8vrUdr/9QVSCG4sJfju1SXQOn4c= -github.com/armosec/opa-utils v0.0.107 h1:P+SACquUDMbXcOYIbQ+uzwcdJlrguXOTI42PHEJG2NU= -github.com/armosec/opa-utils v0.0.107/go.mod h1:Wc1P4gkB6UQeGW8I76zCuitGGl15Omp0bKw7N0tR9dk= +github.com/armosec/opa-utils v0.0.110 h1:qncGcbnYjiGULP3yK+4geRNNpRoWqKXQL+Xg+iXc1cM= +github.com/armosec/opa-utils v0.0.110/go.mod h1:Wc1P4gkB6UQeGW8I76zCuitGGl15Omp0bKw7N0tR9dk= github.com/armosec/rbac-utils v0.0.1/go.mod h1:pQ8CBiij8kSKV7aeZm9FMvtZN28VgA7LZcYyTWimq40= github.com/armosec/rbac-utils v0.0.14 h1:CKYKcgqJEXWF2Hen/B1pVGtS3nDAG1wp9dDv6oNtq90= github.com/armosec/rbac-utils v0.0.14/go.mod h1:Ex/IdGWhGv9HZq6Hs8N/ApzCKSIvpNe/ETqDfnuyah0= diff --git a/hostsensorutils/hostsensorgetfrompod.go b/hostsensorutils/hostsensorgetfrompod.go index e1cec0bb66..47e63fa8c3 100644 --- a/hostsensorutils/hostsensorgetfrompod.go +++ b/hostsensorutils/hostsensorgetfrompod.go @@ -157,7 +157,7 @@ func (hsh *HostSensorHandler) CollectResources() ([]hostsensor.HostSensorDataEnv return res, nil } - logger.L().Info("Accessing host sensor") + logger.L().Debug("Accessing host sensor") cautils.StartSpinner() defer cautils.StopSpinner() kcData, err := hsh.GetKubeletConfigurations() @@ -197,6 +197,6 @@ func (hsh *HostSensorHandler) CollectResources() ([]hostsensor.HostSensorDataEnv res = append(res, kcData...) // finish - logger.L().Success("Read host information from host sensor") + logger.L().Debug("Done reading information from host sensor") return res, nil } diff --git a/resourcehandler/ekssupport.go b/resourcehandler/ekssupport.go index 875798134b..21efc22192 100644 --- a/resourcehandler/ekssupport.go +++ b/resourcehandler/ekssupport.go @@ -58,15 +58,18 @@ func NewEKSProviderContext() *EKSProviderContext { } func (eksProviderContext *EKSProviderContext) getKubeClusterName() string { - cluster := k8sinterface.GetCurrentContext().Cluster - var splittedCluster []string + context := k8sinterface.GetCurrentContext() + if context == nil { + return "" + } + cluster := context.Cluster if cluster != "" { - splittedCluster = strings.Split(cluster, ".") + splittedCluster := strings.Split(cluster, ".") if len(splittedCluster) > 1 { return splittedCluster[0] } } - splittedCluster = strings.Split(k8sinterface.GetClusterName(), ".") + splittedCluster := strings.Split(k8sinterface.GetClusterName(), ".") if len(splittedCluster) > 1 { return splittedCluster[0] } @@ -78,9 +81,8 @@ func (eksProviderContext *EKSProviderContext) getKubeCluster() string { if context == nil { return "" } - cluster := context.Cluster - if cluster != "" { - return cluster + if context.Cluster != "" { + return context.Cluster } return k8sinterface.GetClusterName() } diff --git a/resourcehandler/gkesupport.go b/resourcehandler/gkesupport.go index 0dda579e9f..07dd0c615b 100644 --- a/resourcehandler/gkesupport.go +++ b/resourcehandler/gkesupport.go @@ -89,8 +89,7 @@ func (gkeProviderContext *GKEProviderContext) getKubeClusterName() string { if len(parsedName) < 3 { return "" } - clusterName = parsedName[3] - return clusterName + return parsedName[3] } func (gkeProviderContext *GKEProviderContext) getKubeCluster() string { @@ -98,9 +97,8 @@ func (gkeProviderContext *GKEProviderContext) getKubeCluster() string { if context == nil { return "" } - cluster := context.Cluster - if cluster != "" { - return cluster + if context.Cluster != "" { + return context.Cluster } return k8sinterface.GetClusterName() diff --git a/resourcehandler/k8sresources.go b/resourcehandler/k8sresources.go index c37b718795..2e41daea56 100644 --- a/resourcehandler/k8sresources.go +++ b/resourcehandler/k8sresources.go @@ -80,7 +80,7 @@ func (k8sHandler *K8sResourceHandler) GetResources(frameworks []reporthandling.F } cautils.StopSpinner() - logger.L().Success("Accessed successfully to Kubernetes objects") + logger.L().Success("Accessed to Kubernetes objects") return k8sResourcesMap, allResources, nil } From 4cda32771b62e27d91fa8c942e597e758550e306 Mon Sep 17 00:00:00 2001 From: dwertent Date: Thu, 10 Feb 2022 09:24:46 +0200 Subject: [PATCH 2/4] fixed url scanning --- clihandler/initcliutils.go | 1 + install.sh | 2 +- resourcehandler/urlloader.go | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/clihandler/initcliutils.go b/clihandler/initcliutils.go index cb1807e9dc..9f61c65ce1 100644 --- a/clihandler/initcliutils.go +++ b/clihandler/initcliutils.go @@ -58,6 +58,7 @@ func getReporter(tenantConfig cautils.ITenantConfig, submit bool) reporter.IRepo func getResourceHandler(scanInfo *cautils.ScanInfo, tenantConfig cautils.ITenantConfig, k8s *k8sinterface.KubernetesApi, hostSensorHandler hostsensorutils.IHostSensor, registryAdaptors *resourcehandler.RegistryAdaptors) resourcehandler.IResourceHandler { if len(scanInfo.InputPatterns) > 0 || k8s == nil { + // scanInfo.HostSensor.SetBool(false) return resourcehandler.NewFileResourceHandler(scanInfo.InputPatterns, registryAdaptors) } getter.GetArmoAPIConnector() diff --git a/install.sh b/install.sh index 452335f732..741ae52aa8 100755 --- a/install.sh +++ b/install.sh @@ -54,6 +54,6 @@ echo -e "\033[0m" $KUBESCAPE_EXEC version echo -echo -e "\033[35mUsage: $ $KUBESCAPE_EXEC scan --submit" +echo -e "\033[35mUsage: $ $KUBESCAPE_EXEC scan --submit --enable-host-scan" echo -e "\033[0m" diff --git a/resourcehandler/urlloader.go b/resourcehandler/urlloader.go index 9c1761142f..27b2a33219 100644 --- a/resourcehandler/urlloader.go +++ b/resourcehandler/urlloader.go @@ -28,11 +28,11 @@ func listUrls(patterns []string) []string { urls := []string{} for i := range patterns { if strings.HasPrefix(patterns[i], "http") { - if !isYaml(patterns[i]) || !isJson(patterns[i]) { // if url of repo + if !isYaml(patterns[i]) && !isJson(patterns[i]) { // if url of repo if yamls, err := ScanRepository(patterns[i], ""); err == nil { // TODO - support branch urls = append(urls, yamls...) } else { - fmt.Print(err) // TODO - handle errors + logger.L().Error(err.Error()) } } else { // url of single file urls = append(urls, patterns[i]) From 7177e77a8d24ac25fdb2564bbab7af9d6de47cf9 Mon Sep 17 00:00:00 2001 From: Bezalel Brandwine Date: Thu, 10 Feb 2022 11:23:55 +0200 Subject: [PATCH 3/4] track host sensor pods tighten --- hostsensorutils/hostsensor.yaml | 2 +- hostsensorutils/hostsensordeploy.go | 65 ++++++++++++++++++++++------- 2 files changed, 50 insertions(+), 17 deletions(-) diff --git a/hostsensorutils/hostsensor.yaml b/hostsensorutils/hostsensor.yaml index 3261b83fac..bc03b94cdf 100644 --- a/hostsensorutils/hostsensor.yaml +++ b/hostsensorutils/hostsensor.yaml @@ -42,7 +42,7 @@ spec: containerPort: 7888 resources: limits: - cpu: 1m + cpu: 0.1m memory: 200Mi requests: cpu: 1m diff --git a/hostsensorutils/hostsensordeploy.go b/hostsensorutils/hostsensordeploy.go index 1d029f1a99..ca919dd8e0 100644 --- a/hostsensorutils/hostsensordeploy.go +++ b/hostsensorutils/hostsensordeploy.go @@ -27,13 +27,14 @@ var ( ) type HostSensorHandler struct { - HostSensorPort int32 - HostSensorPodNames map[string]string //map from pod names to node names - IsReady <-chan bool //readonly chan - k8sObj *k8sinterface.KubernetesApi - DaemonSet *appsv1.DaemonSet - podListLock sync.RWMutex - gracePeriod int64 + HostSensorPort int32 + HostSensorPodNames map[string]string //map from pod names to node names + HostSensorUnshedulePodNames map[string]string //map from pod names to node names + IsReady <-chan bool //readonly chan + k8sObj *k8sinterface.KubernetesApi + DaemonSet *appsv1.DaemonSet + podListLock sync.RWMutex + gracePeriod int64 } func NewHostSensorHandler(k8sObj *k8sinterface.KubernetesApi) (*HostSensorHandler, error) { @@ -42,9 +43,10 @@ func NewHostSensorHandler(k8sObj *k8sinterface.KubernetesApi) (*HostSensorHandle return nil, fmt.Errorf("nil k8s interface received") } hsh := &HostSensorHandler{ - k8sObj: k8sObj, - HostSensorPodNames: map[string]string{}, - gracePeriod: int64(15), + k8sObj: k8sObj, + HostSensorPodNames: map[string]string{}, + HostSensorUnshedulePodNames: map[string]string{}, + gracePeriod: int64(15), } // Don't deploy on cluster with no nodes. Some cloud providers prevents termination of K8s objects for cluster with no nodes!!! if nodeList, err := k8sObj.KubernetesClient.CoreV1().Nodes().List(k8sObj.Context, metav1.ListOptions{}); err != nil || len(nodeList.Items) == 0 { @@ -140,12 +142,17 @@ func (hsh *HostSensorHandler) checkPodForEachNode() error { } hsh.podListLock.RLock() podsNum := len(hsh.HostSensorPodNames) + unschedPodNum := len(hsh.HostSensorUnshedulePodNames) hsh.podListLock.RUnlock() - if len(nodesList.Items) == podsNum { + if len(nodesList.Items) <= podsNum+unschedPodNum { break } if time.Now().After(deadline) { - return fmt.Errorf("host-sensor pods number (%d) differ than nodes number (%d) after deadline exceded", podsNum, len(nodesList.Items)) + hsh.podListLock.RLock() + podsMap := hsh.HostSensorPodNames + hsh.podListLock.RUnlock() + return fmt.Errorf("host-sensor pods number (%d) differ than nodes number (%d) after deadline exceded. We will take data only from the pods below: %v", + podsNum, len(nodesList.Items), podsMap) } time.Sleep(100 * time.Millisecond) } @@ -156,12 +163,17 @@ func (hsh *HostSensorHandler) checkPodForEachNode() error { func (hsh *HostSensorHandler) populatePodNamesToNodeNames() { go func() { - watchRes, err := hsh.k8sObj.KubernetesClient.CoreV1().Pods(hsh.DaemonSet.Namespace).Watch(hsh.k8sObj.Context, metav1.ListOptions{ + var watchRes watch.Interface + var err error + watchRes, err = hsh.k8sObj.KubernetesClient.CoreV1().Pods(hsh.DaemonSet.Namespace).Watch(hsh.k8sObj.Context, metav1.ListOptions{ Watch: true, LabelSelector: fmt.Sprintf("name=%s", hsh.DaemonSet.Spec.Template.Labels["name"]), }) if err != nil { - logger.L().Error("failed to watch over daemonset pods", helpers.Error(err)) + logger.L().Error("failed to watch over daemonset pods - are we missing watch pods permissions?", helpers.Error(err)) + } + if watchRes == nil { + return } for eve := range watchRes.ResultChan() { pod, ok := eve.Object.(*corev1.Pod) @@ -179,10 +191,31 @@ func (hsh *HostSensorHandler) updatePodInListAtomic(eventType watch.EventType, p switch eventType { case watch.Added, watch.Modified: - if podObj.Status.Phase == corev1.PodRunning && podObj.Status.ContainerStatuses[0].Ready { + if podObj.Status.Phase == corev1.PodRunning && len(podObj.Status.ContainerStatuses) > 0 && + podObj.Status.ContainerStatuses[0].Ready { hsh.HostSensorPodNames[podObj.ObjectMeta.Name] = podObj.Spec.NodeName + delete(hsh.HostSensorUnshedulePodNames, podObj.ObjectMeta.Name) } else { - delete(hsh.HostSensorPodNames, podObj.ObjectMeta.Name) + if podObj.Status.Phase == corev1.PodPending && len(podObj.Status.Conditions) > 0 && + podObj.Status.Conditions[0].Reason == corev1.PodReasonUnschedulable { + nodeName := "" + if podObj.Spec.Affinity != nil && podObj.Spec.Affinity.NodeAffinity != nil && + podObj.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution != nil && + len(podObj.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms) > 0 && + len(podObj.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms[0].MatchFields) > 0 && + len(podObj.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms[0].MatchFields[0].Values) > 0 { + nodeName = podObj.Spec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms[0].MatchFields[0].Values[0] + } + logger.L().Warning("One host-sensor pod is unable to schedule on node. We will fail to collect the data from this node", + helpers.String("message", podObj.Status.Conditions[0].Message), + helpers.String("nodeName", nodeName), + helpers.String("podName", podObj.ObjectMeta.Name)) + if nodeName != "" { + hsh.HostSensorUnshedulePodNames[podObj.ObjectMeta.Name] = nodeName + } + } else { + delete(hsh.HostSensorPodNames, podObj.ObjectMeta.Name) + } } default: delete(hsh.HostSensorPodNames, podObj.ObjectMeta.Name) From e685fe2b7d39252ea9f3b5ae3b375a1e96031e01 Mon Sep 17 00:00:00 2001 From: dwertent Date: Thu, 10 Feb 2022 11:42:42 +0200 Subject: [PATCH 4/4] update download readme --- README.md | 28 ++++++++++++++------------- cautils/logger/prettylogger/logger.go | 2 +- clihandler/cmd/download.go | 9 ++++++++- clihandler/initcliutils.go | 3 ++- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 78664813dd..ebaa5320e3 100644 --- a/README.md +++ b/README.md @@ -195,38 +195,40 @@ helm template bitnami/mysql --generate-name --dry-run | kubescape scan - ``` -### Offline Support +### Offline/Air-gaped Environment Support [Video tutorial](https://youtu.be/IGXL9s37smM) It is possible to run Kubescape offline! +#### Download all artifacts -First download the framework and then scan with `--use-from` flag - -1. Download and save in file, if file name not specified, will save in `~/.kubescape/.json` +1. Download and save in local directory, if path not specified, will save all in `~/.kubescape` ``` -kubescape download framework nsa --output nsa.json +kubescape download artifacts --output path/to/local/dir ``` +2. Copy the downloaded artifacts to the air-gaped/offline environment -2. Scan using the downloaded framework +3. Scan using the downloaded artifacts ``` -kubescape scan framework nsa --use-from nsa.json +kubescape scan --use-artifacts-from path/to/local/dir ``` +#### Download a single artifacts +You can also download a single artifacts and scan with the `--use-from` flag -You can also download all artifacts to a local path and then load them using `--use-artifacts-from` flag - -1. Download and save in local directory, if path not specified, will save all in `~/.kubescape` +1. Download and save in file, if file name not specified, will save in `~/.kubescape/.json` ``` -kubescape download artifacts --output path/to/local/dir +kubescape download framework nsa --output /path/nsa.json ``` +2. Copy the downloaded artifacts to the air-gaped/offline environment -2. Scan using the downloaded artifacts +3. Scan using the downloaded framework ``` -kubescape scan framework nsa --use-artifacts-from path/to/local/dir +kubescape scan framework nsa --use-from /path/nsa.json ``` + ## Scan Periodically using Helm - Contributed by [@yonahd](https://github.com/yonahd) [Please follow the instructions here](https://hub.armo.cloud/docs/installation-of-armo-in-cluster) [helm chart repo](https://github.com/armosec/armo-helm) diff --git a/cautils/logger/prettylogger/logger.go b/cautils/logger/prettylogger/logger.go index f783fbf68c..795ff4ac75 100644 --- a/cautils/logger/prettylogger/logger.go +++ b/cautils/logger/prettylogger/logger.go @@ -71,7 +71,7 @@ func detailsToString(details []helpers.IDetails) string { for i := range details { s += fmt.Sprintf("%s: %s", details[i].Key(), details[i].Value()) if i < len(details)-1 { - s += ";" + s += "; " } } return s diff --git a/clihandler/cmd/download.go b/clihandler/cmd/download.go index 8008554bed..8cd6b8fecb 100644 --- a/clihandler/cmd/download.go +++ b/clihandler/cmd/download.go @@ -2,6 +2,7 @@ package cmd import ( "fmt" + "path/filepath" "strings" "github.com/armosec/kubescape/cautils" @@ -65,10 +66,16 @@ var downloadCmd = &cobra.Command{ } func init() { - // cobra.OnInitialize(initConfig) + cobra.OnInitialize(initDownload) rootCmd.AddCommand(downloadCmd) downloadCmd.PersistentFlags().StringVarP(&downloadInfo.Account, "account", "", "", "Armo portal account ID. Default will load account ID from configMap or config file") downloadCmd.Flags().StringVarP(&downloadInfo.Path, "output", "o", "", "Output file. If not specified, will save in `~/.kubescape/.json`") } + +func initDownload() { + if filepath.Ext(downloadInfo.Path) == ".json" { + downloadInfo.Path, downloadInfo.FileName = filepath.Split(downloadInfo.Path) + } +} diff --git a/clihandler/initcliutils.go b/clihandler/initcliutils.go index 9f61c65ce1..a03a5d6243 100644 --- a/clihandler/initcliutils.go +++ b/clihandler/initcliutils.go @@ -8,6 +8,7 @@ import ( "github.com/armosec/kubescape/cautils" "github.com/armosec/kubescape/cautils/getter" "github.com/armosec/kubescape/cautils/logger" + "github.com/armosec/kubescape/cautils/logger/helpers" "github.com/armosec/kubescape/hostsensorutils" "github.com/armosec/kubescape/resourcehandler" "github.com/armosec/kubescape/resultshandling/reporter" @@ -198,7 +199,7 @@ func getConfigInputsGetter(ControlsInputs string, accountID string, downloadRele func getDownloadReleasedPolicy(downloadReleasedPolicy *getter.DownloadReleasedPolicy) getter.IPolicyGetter { if err := downloadReleasedPolicy.SetRegoObjects(); err != nil { // if failed to pull policy, fallback to cache - cautils.WarningDisplay(os.Stderr, "Warning: failed to get policies from github release, loading policies from cache\n") + logger.L().Warning("failed to get policies from github release, loading policies from cache", helpers.Error(err)) return getter.NewLoadPolicy(getDefaultFrameworksPaths()) } else { return downloadReleasedPolicy