From 76f400d0aa1dd1a347c1a634b3b3682aee94d5eb Mon Sep 17 00:00:00 2001 From: Daniel-GrunbergerCA Date: Sun, 10 Oct 2021 13:06:51 +0300 Subject: [PATCH 01/19] fix TestConvertLabelsToString test --- cautils/strutils_test.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cautils/strutils_test.go b/cautils/strutils_test.go index fd2495f6..6c93227b 100644 --- a/cautils/strutils_test.go +++ b/cautils/strutils_test.go @@ -13,7 +13,13 @@ func TestConvertLabelsToString(t *testing.T) { spilltedA := strings.Split(rsrt, ";") spilltedB := strings.Split(str, ";") for i := range spilltedA { - if spilltedA[i] != spilltedB[i] { + exists := false + for j := range spilltedB { + if spilltedB[j] == spilltedA[i] { + exists = true + } + } + if !exists { t.Errorf("%s != %s", spilltedA[i], spilltedB[i]) } } From e0e0a811eb13fa657728e1617c65fcc3bf64d087 Mon Sep 17 00:00:00 2001 From: Daniel-GrunbergerCA Date: Sun, 10 Oct 2021 14:01:35 +0300 Subject: [PATCH 02/19] Add supported frameworks to help msg --- cmd/framework.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmd/framework.go b/cmd/framework.go index 34d24549..e4ef0146 100644 --- a/cmd/framework.go +++ b/cmd/framework.go @@ -23,6 +23,7 @@ import ( var scanInfo cautils.ScanInfo var supportedFrameworks = []string{"nsa", "mitre"} +var validFrameworks = strings.Join(supportedFrameworks, ", ") type CLIHandler struct { policyHandler *policyhandler.PolicyHandler @@ -30,7 +31,8 @@ type CLIHandler struct { } var frameworkCmd = &cobra.Command{ - Use: "framework [``/`-`] [flags]", + + Use: fmt.Sprintf("framework [``/`-`] [flags]\nSupported frameworks: %s", validFrameworks), Short: fmt.Sprintf("The framework you wish to use. Supported frameworks: %s", strings.Join(supportedFrameworks, ", ")), Long: "Execute a scan on a running Kubernetes cluster or `yaml`/`json` files (use glob) or `-` for stdin", ValidArgs: supportedFrameworks, From 0eba51c80be8940ae9f027a561e095653d129992 Mon Sep 17 00:00:00 2001 From: Daniel-GrunbergerCA Date: Sun, 10 Oct 2021 14:38:14 +0300 Subject: [PATCH 03/19] beautify help msgs --- cmd/download.go | 2 +- cmd/framework.go | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmd/download.go b/cmd/download.go index dfe69a58..a27123ac 100644 --- a/cmd/download.go +++ b/cmd/download.go @@ -11,7 +11,7 @@ import ( var downloadInfo cautils.DownloadInfo var downloadCmd = &cobra.Command{ - Use: "download framework ", + Use: fmt.Sprintf("Download framework [flags]\nSupported frameworks: %s", validFrameworks), Short: "Download framework controls", Long: ``, Args: func(cmd *cobra.Command, args []string) error { diff --git a/cmd/framework.go b/cmd/framework.go index e4ef0146..ae6fb83f 100644 --- a/cmd/framework.go +++ b/cmd/framework.go @@ -87,12 +87,12 @@ func isValidFramework(framework string) bool { func init() { scanCmd.AddCommand(frameworkCmd) scanInfo = cautils.ScanInfo{} - frameworkCmd.Flags().StringVar(&scanInfo.UseFrom, "use-from", "", "Path to load framework from") - frameworkCmd.Flags().BoolVar(&scanInfo.UseDefault, "use-default", false, "Load framework from default path") - frameworkCmd.Flags().StringVar(&scanInfo.UseExceptions, "exceptions", "", "Path to file containing list of exceptions") - frameworkCmd.Flags().StringVarP(&scanInfo.ExcludedNamespaces, "exclude-namespaces", "e", "", "Namespaces to exclude from check") - frameworkCmd.Flags().StringVarP(&scanInfo.Format, "format", "f", "pretty-printer", `Output format. supported formats: "pretty-printer"/"json"/"junit"`) - frameworkCmd.Flags().StringVarP(&scanInfo.Output, "output", "o", "", "Output file. print output to file and not stdout") + frameworkCmd.Flags().StringVar(&scanInfo.UseFrom, "use-from", "", "Load local framework object from specified path. If not used will download latest") + frameworkCmd.Flags().BoolVar(&scanInfo.UseDefault, "use-default", false, "Load local framework object from default path. If not used will download latest") + frameworkCmd.Flags().StringVar(&scanInfo.UseExceptions, "exceptions", "", "Path to an exceptions obj. If not set will download exceptions from Armo management portal") + frameworkCmd.Flags().StringVarP(&scanInfo.ExcludedNamespaces, "exclude-namespaces", "e", "", "Namespaces to exclude from scanning. Recommended: kube-system, kube-public") + frameworkCmd.Flags().StringVarP(&scanInfo.Format, "format", "f", "pretty-printer", `Output format. Supported formats: "pretty-printer"/"json"/"junit"`) + frameworkCmd.Flags().StringVarP(&scanInfo.Output, "output", "o", "", "Output file. Print output to file and not stdout") frameworkCmd.Flags().BoolVarP(&scanInfo.Silent, "silent", "s", false, "Silent progress messages") frameworkCmd.Flags().Uint16VarP(&scanInfo.FailThreshold, "fail-threshold", "t", 0, "Failure threshold is the percent bellow which the command fails and returns exit code -1") frameworkCmd.Flags().BoolVarP(&scanInfo.DoNotSendResults, "results-locally", "", false, "Kubescape sends scan results to Armosec backend to allow users to control exceptions and maintain chronological scan results. Use this flag if you do not wish to use these features") From 659647353eea0926496c6dbd448f684b32d14c3a Mon Sep 17 00:00:00 2001 From: Daniel-GrunbergerCA Date: Sun, 10 Oct 2021 15:43:08 +0300 Subject: [PATCH 04/19] fix return code in help msg --- cmd/framework.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/framework.go b/cmd/framework.go index ae6fb83f..9738e365 100644 --- a/cmd/framework.go +++ b/cmd/framework.go @@ -94,7 +94,7 @@ func init() { frameworkCmd.Flags().StringVarP(&scanInfo.Format, "format", "f", "pretty-printer", `Output format. Supported formats: "pretty-printer"/"json"/"junit"`) frameworkCmd.Flags().StringVarP(&scanInfo.Output, "output", "o", "", "Output file. Print output to file and not stdout") frameworkCmd.Flags().BoolVarP(&scanInfo.Silent, "silent", "s", false, "Silent progress messages") - frameworkCmd.Flags().Uint16VarP(&scanInfo.FailThreshold, "fail-threshold", "t", 0, "Failure threshold is the percent bellow which the command fails and returns exit code -1") + frameworkCmd.Flags().Uint16VarP(&scanInfo.FailThreshold, "fail-threshold", "t", 0, "Failure threshold is the percent bellow which the command fails and returns exit code 1") frameworkCmd.Flags().BoolVarP(&scanInfo.DoNotSendResults, "results-locally", "", false, "Kubescape sends scan results to Armosec backend to allow users to control exceptions and maintain chronological scan results. Use this flag if you do not wish to use these features") } From 59741b84d13dfc4288d4373943e18f68f24e9ead Mon Sep 17 00:00:00 2001 From: dwertent Date: Mon, 11 Oct 2021 15:00:23 +0300 Subject: [PATCH 05/19] Update default upload of results to be opt-in --- .github/workflows/build.yaml | 1 + .github/workflows/build_dev.yaml | 4 + README.md | 26 +-- build.py | 2 +- cautils/customerloader.go | 324 +++++++++++++++++++++---------- cautils/getter/getpolicies.go | 3 + cautils/scaninfo.go | 23 ++- cmd/framework.go | 17 +- cmd/local_get.go | 3 +- install.sh | 14 +- 10 files changed, 268 insertions(+), 149 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 5b891444..a5db2601 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -5,6 +5,7 @@ on: branches: [ master ] pull_request: branches: [ master ] + types: [ closed ] jobs: once: name: Create release diff --git a/.github/workflows/build_dev.yaml b/.github/workflows/build_dev.yaml index a3dc0086..bc5f11ff 100644 --- a/.github/workflows/build_dev.yaml +++ b/.github/workflows/build_dev.yaml @@ -20,6 +20,10 @@ jobs: uses: actions/setup-go@v2 with: go-version: 1.17 + + - name: Test + run: go test -v ./... + - name: Build env: RELEASE: v1.0.${{ github.run_number }} diff --git a/README.md b/README.md index 609d0514..5208d8a9 100644 --- a/README.md +++ b/README.md @@ -58,10 +58,13 @@ Set-ExecutionPolicy RemoteSigned -scope CurrentUser ``` ## Install on macOS -``` -brew tap armosec/kubescape -brew install kubescape -``` + +1. ``` + brew tap armosec/kubescape + ``` +2. ``` + brew install kubescape + ``` ## Flags @@ -75,21 +78,22 @@ brew install kubescape | `--use-from` | | Load local framework object from specified path. If not used will download latest | | `--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 | -| `--results-locally` | `false` | Kubescape sends scan results to Armo management portal to allow users to control exceptions and maintain chronological scan results. Use this flag if you do not wish to use these features | `true`/`false`| +| `--submit` | `false` | If set, Kubescape will send scan results to Armo management portal to allow users to control exceptions and maintain chronological scan results. By default the results are not sent | `true`/`false`| +| `--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`| ## Usage & Examples ### Examples -* Scan a running Kubernetes cluster with [`nsa`](https://www.nsa.gov/News-Features/Feature-Stories/Article-View/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) framework +* Scan a running Kubernetes cluster with [`nsa`](https://www.nsa.gov/News-Features/Feature-Stories/Article-View/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) framework and submit results to Armo portal ``` -kubescape scan framework nsa --exclude-namespaces kube-system,kube-public +kubescape scan framework nsa --exclude-namespaces kube-system,kube-public --submit ``` -* Scan a running Kubernetes cluster with [`mitre`](https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/) framework +* Scan a running Kubernetes cluster with [`mitre`](https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/) framework and submit results to Armo portal ``` -kubescape scan framework mitre --exclude-namespaces kube-system,kube-public +kubescape scan framework mitre --exclude-namespaces kube-system,kube-public --submit ``` * Scan local `yaml`/`json` files before deploying @@ -135,12 +139,12 @@ It is possible to run Kubescape offline! First download the framework and then scan with `--use-from` flag -* Download and save in file, if file name not specified, will store save to `~/.kubescape/.json` +1. Download and save in file, if file name not specified, will store save to `~/.kubescape/.json` ``` kubescape download framework nsa --output nsa.json ``` -* Scan using the downloaded framework +2. Scan using the downloaded framework ``` kubescape scan framework nsa --use-from nsa.json ``` diff --git a/build.py b/build.py index f18f0de5..7a623811 100644 --- a/build.py +++ b/build.py @@ -59,7 +59,7 @@ def main(): checkStatus(status, "Failed to get dependencies") except OSError: - print("An error occured: (Hint: check if go is installed)") + print("An error occurred: (Hint: check if go is installed)") raise # Build kubescape diff --git a/cautils/customerloader.go b/cautils/customerloader.go index c9fd39b1..3b08ea28 100644 --- a/cautils/customerloader.go +++ b/cautils/customerloader.go @@ -17,9 +17,15 @@ import ( const ( configMapName = "kubescape" - ConfigFileName = "config" + configFileName = "config" ) +func ConfigFileFullPath() string { return getter.GetDefaultPath(configFileName + ".json") } + +// ====================================================================================== +// =============================== Config structure ===================================== +// ====================================================================================== + type ConfigObj struct { CustomerGUID string `json:"customerGUID"` Token string `json:"invitationParam"` @@ -33,52 +39,103 @@ func (co *ConfigObj) Json() []byte { return []byte{} } +// ====================================================================================== +// =============================== interface ============================================ +// ====================================================================================== type IClusterConfig interface { - SetCustomerGUID() error + // setters + SetCustomerGUID(customerGUID string) error + + // getters GetCustomerGUID() string + GetConfigObj() *ConfigObj + GetK8sAPI() *k8sinterface.KubernetesApi + GetBackendAPI() getter.IBackend + GetDefaultNS() string GenerateURL() } -type ClusterConfig struct { - k8s *k8sinterface.KubernetesApi - defaultNS string - armoAPI *getter.ArmoAPI - configObj *ConfigObj +// ClusterConfigSetup - Setup the desired cluster behavior regarding submittion to the Armo BE +func ClusterConfigSetup(scanInfo *ScanInfo, k8s *k8sinterface.KubernetesApi, beAPI getter.IBackend) IClusterConfig { + /* + + If "First run (local config not found)" - + Default - Do not send report (local) + Local - Do not send report + Submit - Create tenant & Submit report + + If "Submitted but not signed up" - + Default - Submit report (submit) + Local - Delete local config & Do not send report + Submit - Submit report + + If "Signed up user" - + Default - Submit report (submit) + Local - Do not send report + Submit - Submit report + + */ + clusterConfig := NewClusterConfig(k8s, beAPI) + if !IsSubmitted(clusterConfig) { + if scanInfo.Submit { + return clusterConfig // submit - Create tenant & Submit report + } + return NewEmptyConfig() // local/default - Do not send report + } + if !IsRegistered(clusterConfig) { + if scanInfo.Local { + DeleteConfig(k8s) + return NewEmptyConfig() // local - Delete local config & Do not send report + } + return clusterConfig // submit/default - Submit report + } + if scanInfo.Local { + return NewEmptyConfig() // local - Do not send report + } + return clusterConfig // submit/default - Submit report } +// ====================================================================================== +// ============================= Mock Config ============================================ +// ====================================================================================== type EmptyConfig struct { } +func NewEmptyConfig() *EmptyConfig { return &EmptyConfig{} } +func (c *EmptyConfig) GetConfigObj() *ConfigObj { return &ConfigObj{} } +func (c *EmptyConfig) SetCustomerGUID(customerGUID string) error { return nil } +func (c *EmptyConfig) GetCustomerGUID() string { return "" } +func (c *EmptyConfig) GetK8sAPI() *k8sinterface.KubernetesApi { return nil } // TODO: return mock obj +func (c *EmptyConfig) GetDefaultNS() string { return k8sinterface.GetDefaultNamespace() } +func (c *EmptyConfig) GetBackendAPI() getter.IBackend { return nil } // TODO: return mock obj func (c *EmptyConfig) GenerateURL() { + message := fmt.Sprintf("If you wish to submit your cluster so you can control exceptions and maintain chronological scan results, please run Kubescape with the `--submit` flag or sign-up here: https://%s", getter.ArmoFEURL) + InfoTextDisplay(os.Stdout, message+"\n") } -func (c *EmptyConfig) SetCustomerGUID() error { - return nil +// ====================================================================================== +// ========================== Cluster Config ============================================ +// ====================================================================================== + +type ClusterConfig struct { + k8s *k8sinterface.KubernetesApi + defaultNS string + backendAPI getter.IBackend + configObj *ConfigObj } -func (c *EmptyConfig) GetCustomerGUID() string { - return "" -} - -func NewEmptyConfig() *EmptyConfig { - return &EmptyConfig{} -} - -func NewClusterConfig(k8s *k8sinterface.KubernetesApi, armoAPI *getter.ArmoAPI) *ClusterConfig { +func NewClusterConfig(k8s *k8sinterface.KubernetesApi, backendAPI getter.IBackend) *ClusterConfig { return &ClusterConfig{ - k8s: k8s, - armoAPI: armoAPI, - defaultNS: k8sinterface.GetDefaultNamespace(), + k8s: k8s, + backendAPI: backendAPI, + defaultNS: k8sinterface.GetDefaultNamespace(), } } -func createConfigJson() { - os.WriteFile(getter.GetDefaultPath(ConfigFileName+".json"), nil, 0664) +func (c *ClusterConfig) GetConfigObj() *ConfigObj { return c.configObj } +func (c *ClusterConfig) GetK8sAPI() *k8sinterface.KubernetesApi { return c.k8s } +func (c *ClusterConfig) GetDefaultNS() string { return c.defaultNS } +func (c *ClusterConfig) GetBackendAPI() getter.IBackend { return c.backendAPI } -} - -func update(configObj *ConfigObj) { - os.WriteFile(getter.GetDefaultPath(ConfigFileName+".json"), configObj.Json(), 0664) -} func (c *ClusterConfig) GenerateURL() { u := url.URL{} u.Scheme = "https" @@ -109,6 +166,82 @@ func (c *ClusterConfig) GetCustomerGUID() string { return "" } +func (c *ClusterConfig) SetCustomerGUID(customerGUID string) error { + + updateConfig := false + createConfig := false + + // get from configMap + if c.existsConfigMap() { + c.configObj, _ = c.loadConfigFromConfigMap() + } else if existsConfigFile() { // get from file + c.configObj, _ = loadConfigFromFile() + } else { + c.configObj = &ConfigObj{} + createConfig = true + } + if customerGUID != "" && c.GetCustomerGUID() != customerGUID { + c.configObj.CustomerGUID = customerGUID // override config customerGUID + updateConfig = true + } + + customerGUID = c.GetCustomerGUID() + + // get from armoBE + tenantResponse, err := c.backendAPI.GetCustomerGUID(customerGUID) + if err == nil && tenantResponse != nil { + if tenantResponse.AdminMail != "" { // this customer already belongs to some user + c.configObj.CustomerAdminEMail = tenantResponse.AdminMail + } else { + c.configObj.Token = tenantResponse.Token + c.configObj.CustomerGUID = tenantResponse.TenantID + } + updateConfig = true + } else { + if err != nil && !strings.Contains(err.Error(), "already exists") { + return err + } + } + if createConfig { + c.createConfigMap() + c.createConfigFile() + } else if updateConfig { + if c.existsConfigMap() { + c.updateConfigMap() + } + if existsConfigFile() { + c.updateConfigFile() + } + } + return nil +} +func (c *ClusterConfig) ToMapString() map[string]interface{} { + m := map[string]interface{}{} + bc, _ := json.Marshal(c.configObj) + json.Unmarshal(bc, &m) + return m +} +func (c *ClusterConfig) loadConfigFromConfigMap() (*ConfigObj, error) { + if c.k8s == nil { + return nil, nil + } + configMap, err := c.k8s.KubernetesClient.CoreV1().ConfigMaps(c.defaultNS).Get(context.Background(), configMapName, metav1.GetOptions{}) + if err != nil { + return nil, err + } + + if bData, err := json.Marshal(configMap.Data); err == nil { + return readConfig(bData) + } + return nil, nil +} + +func (c *ClusterConfig) existsConfigMap() bool { + _, err := c.k8s.KubernetesClient.CoreV1().ConfigMaps(c.defaultNS).Get(context.Background(), configMapName, metav1.GetOptions{}) + // TODO - check if has customerGUID + return err == nil +} + func (c *ClusterConfig) GetValueByKeyFromConfigMap(key string) (string, error) { configMap, err := c.k8s.KubernetesClient.CoreV1().ConfigMaps(c.defaultNS).Get(context.Background(), configMapName, metav1.GetOptions{}) @@ -121,16 +254,17 @@ func (c *ClusterConfig) GetValueByKeyFromConfigMap(key string) (string, error) { } else { return "", fmt.Errorf("value does not exist") } - } func GetValueFromConfigJson(key string) (string, error) { - data, err := os.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json")) + data, err := os.ReadFile(ConfigFileFullPath()) if err != nil { return "", err } var obj map[string]interface{} - err = json.Unmarshal(data, &obj) + if err := json.Unmarshal(data, &obj); err != nil { + return "", err + } if val, ok := obj[key]; ok { return fmt.Sprint(val), nil } else { @@ -140,7 +274,7 @@ func GetValueFromConfigJson(key string) (string, error) { } func SetKeyValueInConfigJson(key string, value string) error { - data, err := os.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json")) + data, err := os.ReadFile(ConfigFileFullPath()) if err != nil { return err } @@ -156,7 +290,7 @@ func SetKeyValueInConfigJson(key string, value string) error { return err } - return os.WriteFile(getter.GetDefaultPath(ConfigFileName+".json"), newData, 0664) + return os.WriteFile(ConfigFileFullPath(), newData, 0664) } @@ -186,76 +320,11 @@ func (c *ClusterConfig) SetKeyValueInConfigmap(key string, value string) error { return err } -func (c *ClusterConfig) SetCustomerGUID() error { - - // get from configMap - if c.existsConfigMap() { - c.configObj, _ = c.loadConfigFromConfigMap() - } else if existsConfigJson() { // get from file - c.configObj, _ = loadConfigFromFile() - } else { - c.createConfigMap() - createConfigJson() - } - - customerGUID := c.GetCustomerGUID() - - // get from armoBE - tenantResponse, err := c.armoAPI.GetCustomerGUID(customerGUID) - if err == nil && tenantResponse != nil { - if tenantResponse.AdminMail != "" { // this customer already belongs to some user - if existsConfigJson() { - update(&ConfigObj{CustomerGUID: customerGUID, CustomerAdminEMail: tenantResponse.AdminMail}) - } - if c.existsConfigMap() { - c.configObj.CustomerAdminEMail = tenantResponse.AdminMail - c.updateConfigMap() - } - } else { - if existsConfigJson() { - update(&ConfigObj{CustomerGUID: tenantResponse.TenantID, Token: tenantResponse.Token}) - } - if c.existsConfigMap() { - c.configObj = &ConfigObj{CustomerGUID: tenantResponse.TenantID, Token: tenantResponse.Token} - c.updateConfigMap() - } - } - } else { - if err != nil && strings.Contains(err.Error(), "already exists") { - return nil - } - return err - } - return nil -} - -func (c *ClusterConfig) loadConfigFromConfigMap() (*ConfigObj, error) { - if c.k8s == nil { - return nil, nil - } - configMap, err := c.k8s.KubernetesClient.CoreV1().ConfigMaps(c.defaultNS).Get(context.Background(), configMapName, metav1.GetOptions{}) - if err != nil { - return nil, err - } - - if bData, err := json.Marshal(configMap.Data); err == nil { - return readConfig(bData) - } - return nil, nil -} - -func (c *ClusterConfig) existsConfigMap() bool { - _, err := c.k8s.KubernetesClient.CoreV1().ConfigMaps(c.defaultNS).Get(context.Background(), configMapName, metav1.GetOptions{}) +func existsConfigFile() bool { + _, err := os.ReadFile(ConfigFileFullPath()) return err == nil } -func existsConfigJson() bool { - _, err := os.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json")) - - return err == nil - -} - func (c *ClusterConfig) createConfigMap() error { if c.k8s == nil { return nil @@ -287,6 +356,20 @@ func (c *ClusterConfig) updateConfigMap() error { return err } +func (c *ClusterConfig) updateConfigFile() error { + if err := os.WriteFile(ConfigFileFullPath(), c.configObj.Json(), 0664); err != nil { + return err + } + return nil +} + +func (c *ClusterConfig) createConfigFile() error { + if err := os.WriteFile(ConfigFileFullPath(), c.configObj.Json(), 0664); err != nil { + return err + } + return nil +} + func (c *ClusterConfig) updateConfigData(configMap *corev1.ConfigMap) { if len(configMap.Data) == 0 { configMap.Data = make(map[string]string) @@ -299,7 +382,7 @@ func (c *ClusterConfig) updateConfigData(configMap *corev1.ConfigMap) { } } func loadConfigFromFile() (*ConfigObj, error) { - dat, err := os.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json")) + dat, err := os.ReadFile(ConfigFileFullPath()) if err != nil { return nil, err } @@ -316,9 +399,38 @@ func readConfig(dat []byte) (*ConfigObj, error) { return configObj, err } -func (c *ClusterConfig) ToMapString() map[string]interface{} { - m := map[string]interface{}{} - bc, _ := json.Marshal(c.configObj) - json.Unmarshal(bc, &m) - return m + +// Check if the customer is submitted +func IsSubmitted(clusterConfig *ClusterConfig) bool { + return clusterConfig.existsConfigMap() || existsConfigFile() +} + +// Check if the customer is registered +func IsRegistered(clusterConfig *ClusterConfig) bool { + + // get from armoBE + tenantResponse, err := clusterConfig.backendAPI.GetCustomerGUID(clusterConfig.GetCustomerGUID()) + if err == nil && tenantResponse != nil { + if tenantResponse.AdminMail != "" { // this customer already belongs to some user + return true + } + } + return false +} + +func DeleteConfig(k8s *k8sinterface.KubernetesApi) error { + if err := DeleteConfigMap(k8s); err != nil { + return err + } + if err := DeleteConfigFile(); err != nil { + return err + } + return nil +} +func DeleteConfigMap(k8s *k8sinterface.KubernetesApi) error { + return k8s.KubernetesClient.CoreV1().ConfigMaps(k8sinterface.GetDefaultNamespace()).Delete(context.Background(), configMapName, metav1.DeleteOptions{}) +} + +func DeleteConfigFile() error { + return os.Remove(ConfigFileFullPath()) } diff --git a/cautils/getter/getpolicies.go b/cautils/getter/getpolicies.go index c66fb11c..59974d38 100644 --- a/cautils/getter/getpolicies.go +++ b/cautils/getter/getpolicies.go @@ -12,3 +12,6 @@ type IPolicyGetter interface { type IExceptionsGetter interface { GetExceptions(customerGUID, clusterName string) ([]armotypes.PostureExceptionPolicy, error) } +type IBackend interface { + GetCustomerGUID(customerGUID string) (*TenantResponse, error) +} diff --git a/cautils/scaninfo.go b/cautils/scaninfo.go index b0e681c6..5d8607dd 100644 --- a/cautils/scaninfo.go +++ b/cautils/scaninfo.go @@ -10,16 +10,19 @@ import ( type ScanInfo struct { Getters PolicyIdentifier opapolicy.PolicyIdentifier - UseExceptions string - UseFrom string - UseDefault bool - Format string - Output string - ExcludedNamespaces string - InputPatterns []string - Silent bool - FailThreshold uint16 - DoNotSendResults bool + UseExceptions string // Load exceptions configuration + UseFrom string // Load framework from local file (instead of download). Use when running offline + UseDefault bool // Load framework from cached file (instead of download). Use when running offline + Format string // Format results (table, json, junit ...) + Output string // Store results in an output file, Output file name + ExcludedNamespaces string // DEPRECATED? + InputPatterns []string // Yaml files input patterns + Silent bool // Silent mode - Do not print progress logs + FailThreshold uint16 // Failure score threshold + DoNotSendResults bool // DEPRECATED + Submit bool // Submit results to Armo BE + Local bool // Do not submit results + Account string // account ID } type Getters struct { diff --git a/cmd/framework.go b/cmd/framework.go index 9738e365..222d3056 100644 --- a/cmd/framework.go +++ b/cmd/framework.go @@ -95,7 +95,11 @@ func init() { frameworkCmd.Flags().StringVarP(&scanInfo.Output, "output", "o", "", "Output file. Print output to file and not stdout") frameworkCmd.Flags().BoolVarP(&scanInfo.Silent, "silent", "s", false, "Silent progress messages") frameworkCmd.Flags().Uint16VarP(&scanInfo.FailThreshold, "fail-threshold", "t", 0, "Failure threshold is the percent bellow which the command fails and returns exit code 1") - frameworkCmd.Flags().BoolVarP(&scanInfo.DoNotSendResults, "results-locally", "", false, "Kubescape sends scan results to Armosec backend to allow users to control exceptions and maintain chronological scan results. Use this flag if you do not wish to use these features") + frameworkCmd.Flags().BoolVarP(&scanInfo.DoNotSendResults, "results-locally", "", false, "Kubescape sends scan results to Armo backend to allow users to control exceptions and maintain chronological scan results. Use this flag if you do not wish to use these features") + frameworkCmd.Flags().BoolVarP(&scanInfo.Submit, "submit", "", false, "Use this flag if you wish to send your Kubescape results to Armo backend to control exceptions and maintain chronological scan results. By default the results are not submitted") + frameworkCmd.Flags().BoolVarP(&scanInfo.Local, "local", "", false, "If you do not want your Kubescape results reported to Armo backend. Use this flag if you ran with the `--submit` flag in the past and you do not want to submit your current scan results") + frameworkCmd.Flags().StringVarP(&scanInfo.Account, "account", "", "", "Account ID. Default will load accout ID from configMap/file") + } func CliSetup() error { @@ -119,15 +123,10 @@ func CliSetup() error { // policy handler setup policyHandler := policyhandler.NewPolicyHandler(&processNotification, k8s) - // load cluster config - var clusterConfig cautils.IClusterConfig - if !scanInfo.DoNotSendResults && k8sinterface.ConnectedToCluster { - clusterConfig = cautils.NewClusterConfig(k8s, getter.NewArmoAPI()) - } else { - clusterConfig = cautils.NewEmptyConfig() - } + // setup cluster config + clusterConfig := cautils.ClusterConfigSetup(&scanInfo, k8s, getter.NewArmoAPI()) - if err := clusterConfig.SetCustomerGUID(); err != nil { + if err := clusterConfig.SetCustomerGUID(scanInfo.Account); err != nil { fmt.Println(err) } cautils.CustomerGUID = clusterConfig.GetCustomerGUID() diff --git a/cmd/local_get.go b/cmd/local_get.go index e8499681..9807e794 100644 --- a/cmd/local_get.go +++ b/cmd/local_get.go @@ -5,7 +5,6 @@ import ( "strings" "github.com/armosec/kubescape/cautils" - "github.com/armosec/kubescape/cautils/getter" "github.com/spf13/cobra" ) @@ -31,7 +30,7 @@ var localGetCmd = &cobra.Command{ val, err := cautils.GetValueFromConfigJson(key) if err != nil { if err.Error() == "value does not exist." { - fmt.Printf("Could net get value from: %s, reason: %s\n", getter.GetDefaultPath(cautils.ConfigFileName+".json"), err) + fmt.Printf("Could net get value from: %s, reason: %s\n", cautils.ConfigFileFullPath(), err) return nil } return err diff --git a/install.sh b/install.sh index 56dab602..c9cc5ceb 100755 --- a/install.sh +++ b/install.sh @@ -9,23 +9,17 @@ KUBESCAPE_EXEC=kubescape osName=$(uname -s) if [[ $osName == *"MINGW"* ]]; then - osName=windows-latest + osName=windows elif [[ $osName == *"Darwin"* ]]; then - osName=macos-latest + osName=macos else - osName=ubuntu-latest + osName=ubuntu fi -GITHUB_OWNER=armosec - -DOWNLOAD_URL=$(curl --silent "https://api.github.com/repos/$GITHUB_OWNER/kubescape/releases/latest" | grep -o "browser_download_url.*${osName}.*") -DOWNLOAD_URL=${DOWNLOAD_URL//\"} -DOWNLOAD_URL=${DOWNLOAD_URL/browser_download_url: /} - mkdir -p $BASE_DIR OUTPUT=$BASE_DIR/$KUBESCAPE_EXEC - +DOWNLOAD_URL="https://github.com/armosec/kubescape/releases/latest/download/kubescape-${osName}-latest" curl --progress-bar -L $DOWNLOAD_URL -o $OUTPUT # Checking if SUDO needed/exists From 0c79df7299c693e4df7be40130c07aaf86611bff Mon Sep 17 00:00:00 2001 From: dwertent Date: Mon, 11 Oct 2021 16:29:26 +0300 Subject: [PATCH 06/19] restore id after local run, update readme --- README.md | 5 +++-- cautils/customerloader.go | 3 +++ cmd/config.go | 1 - cmd/framework.go | 28 ++++++++++++++++++---------- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 5208d8a9..bf984bd0 100644 --- a/README.md +++ b/README.md @@ -80,18 +80,19 @@ Set-ExecutionPolicy RemoteSigned -scope CurrentUser | `--exceptions` | | Path to an [exceptions obj](examples/exceptions.json). If not set will download exceptions from Armo management portal | | `--submit` | `false` | If set, Kubescape will send scan results to Armo management portal to allow users to control exceptions and maintain chronological scan results. By default the results are not sent | `true`/`false`| | `--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`| +| `--account` | | Armo portal account ID. Default will load account ID from configMap or config file | | ## Usage & Examples ### Examples -* Scan a running Kubernetes cluster with [`nsa`](https://www.nsa.gov/News-Features/Feature-Stories/Article-View/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) framework and submit results to Armo portal +* Scan a running Kubernetes cluster with [`nsa`](https://www.nsa.gov/News-Features/Feature-Stories/Article-View/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) framework and submit results to [Armo portal](https://portal.armo.cloud/) ``` kubescape scan framework nsa --exclude-namespaces kube-system,kube-public --submit ``` -* Scan a running Kubernetes cluster with [`mitre`](https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/) framework and submit results to Armo portal +* Scan a running Kubernetes cluster with [`mitre`](https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/) framework and submit results to [Armo portal](https://portal.armo.cloud/) ``` kubescape scan framework mitre --exclude-namespaces kube-system,kube-public --submit ``` diff --git a/cautils/customerloader.go b/cautils/customerloader.go index 3b08ea28..339c4ddf 100644 --- a/cautils/customerloader.go +++ b/cautils/customerloader.go @@ -76,6 +76,9 @@ func ClusterConfigSetup(scanInfo *ScanInfo, k8s *k8sinterface.KubernetesApi, beA */ clusterConfig := NewClusterConfig(k8s, beAPI) + if err := clusterConfig.SetCustomerGUID(scanInfo.Account); err != nil { + fmt.Println(err) + } if !IsSubmitted(clusterConfig) { if scanInfo.Submit { return clusterConfig // submit - Create tenant & Submit report diff --git a/cmd/config.go b/cmd/config.go index 9b4e4d4a..10b0f3ec 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -10,7 +10,6 @@ var configCmd = &cobra.Command{ Short: "Set configuration", Long: ``, Run: func(cmd *cobra.Command, args []string) { - }, } diff --git a/cmd/framework.go b/cmd/framework.go index 222d3056..f4589e3b 100644 --- a/cmd/framework.go +++ b/cmd/framework.go @@ -95,20 +95,16 @@ func init() { frameworkCmd.Flags().StringVarP(&scanInfo.Output, "output", "o", "", "Output file. Print output to file and not stdout") frameworkCmd.Flags().BoolVarP(&scanInfo.Silent, "silent", "s", false, "Silent progress messages") frameworkCmd.Flags().Uint16VarP(&scanInfo.FailThreshold, "fail-threshold", "t", 0, "Failure threshold is the percent bellow which the command fails and returns exit code 1") - frameworkCmd.Flags().BoolVarP(&scanInfo.DoNotSendResults, "results-locally", "", false, "Kubescape sends scan results to Armo backend to allow users to control exceptions and maintain chronological scan results. Use this flag if you do not wish to use these features") + frameworkCmd.Flags().BoolVarP(&scanInfo.DoNotSendResults, "results-locally", "", false, "Deprecated. Please use `--local` instead") frameworkCmd.Flags().BoolVarP(&scanInfo.Submit, "submit", "", false, "Use this flag if you wish to send your Kubescape results to Armo backend to control exceptions and maintain chronological scan results. By default the results are not submitted") frameworkCmd.Flags().BoolVarP(&scanInfo.Local, "local", "", false, "If you do not want your Kubescape results reported to Armo backend. Use this flag if you ran with the `--submit` flag in the past and you do not want to submit your current scan results") - frameworkCmd.Flags().StringVarP(&scanInfo.Account, "account", "", "", "Account ID. Default will load accout ID from configMap/file") + frameworkCmd.Flags().StringVarP(&scanInfo.Account, "account", "", "", "Armo portal account ID. Default will load account ID from configMap or config file") } func CliSetup() error { flag.Parse() - - if 100 < scanInfo.FailThreshold { - fmt.Println("bad argument: out of range threshold") - os.Exit(1) - } + flagValidation() var k8s *k8sinterface.KubernetesApi if !scanInfo.ScanRunningCluster() { @@ -126,9 +122,6 @@ func CliSetup() error { // setup cluster config clusterConfig := cautils.ClusterConfigSetup(&scanInfo, k8s, getter.NewArmoAPI()) - if err := clusterConfig.SetCustomerGUID(scanInfo.Account); err != nil { - fmt.Println(err) - } cautils.CustomerGUID = clusterConfig.GetCustomerGUID() cautils.ClusterName = k8sinterface.GetClusterName() @@ -188,3 +181,18 @@ func (clihandler *CLIHandler) Scan() error { } return nil } + +func flagValidation() { + if scanInfo.DoNotSendResults { + fmt.Println("Deprecated. Please use `--local` instead") + } + + if scanInfo.Submit && scanInfo.Local { + fmt.Println("You can use `local` or `submit`, but not both") + os.Exit(1) + } + if 100 < scanInfo.FailThreshold { + fmt.Println("bad argument: out of range threshold") + os.Exit(1) + } +} From ce2f3dafae1d4371db6bd7f3c565f27f1d425eb9 Mon Sep 17 00:00:00 2001 From: Ferhat Yildiz Date: Fri, 8 Oct 2021 13:51:16 +0200 Subject: [PATCH 07/19] removed references to go mod tidy since there is a go.sum file now --- README.md | 40 +++++++++++++++++++--------------------- build.py | 11 +---------- build/Dockerfile | 3 +-- 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index bf984bd0..023b0c88 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Kubescape is the first tool for testing if Kubernetes is deployed securely as defined in [Kubernetes Hardening Guidance by NSA and CISA](https://www.nsa.gov/Press-Room/News-Highlights/Article/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) -Use Kubescape to test clusters or scan single YAML files and integrate it to your processes. +Use Kubescape to test clusters or scan single YAML files and integrate it to your processes. @@ -28,16 +28,16 @@ If you wish to scan all namespaces in your cluster, remove the `--exclude-namesp -### Click [πŸ‘](https://github.com/armosec/kubescape/stargazers) if you want us to continue to develop and improve Kubescape πŸ˜€ +### Click [πŸ‘](https://github.com/armosec/kubescape/stargazers) if you want us to continue to develop and improve Kubescape πŸ˜€ # Being part of the team -We invite you to our team! We are excited about this project and want to return the love we get. +We invite you to our team! We are excited about this project and want to return the love we get. Want to contribute? Want to discuss something? Have an issue? * Open a issue, we are trying to respond within 48 hours -* [Join us](https://armosec.github.io/kubescape/) in a discussion on our discord server! +* [Join us](https://armosec.github.io/kubescape/) in a discussion on our discord server! [logo](https://armosec.github.io/kubescape/) @@ -73,7 +73,7 @@ Set-ExecutionPolicy RemoteSigned -scope CurrentUser | `-e`/`--exclude-namespaces` | Scan all namespaces | Namespaces to exclude from scanning. Recommended to exclude `kube-system` and `kube-public` namespaces | | `-s`/`--silent` | Display progress messages | Silent progress messages | | `-t`/`--fail-threshold` | `0` (do not fail) | fail command (return exit code 1) if result bellow threshold| `0` -> `100` | -| `-f`/`--format` | `pretty-printer` | Output format | `pretty-printer`/`json`/`junit` | +| `-f`/`--format` | `pretty-printer` | Output format | `pretty-printer`/`json`/`junit` | | `-o`/`--output` | print to stdout | Save scan result in file | | `--use-from` | | Load local framework object from specified path. If not used will download latest | | `--use-default` | `false` | Load local framework object from default path. If not used will download latest | `true`/`false` | @@ -83,10 +83,10 @@ Set-ExecutionPolicy RemoteSigned -scope CurrentUser | `--account` | | Armo portal account ID. Default will load account ID from configMap or config file | | ## Usage & Examples - + ### Examples -* Scan a running Kubernetes cluster with [`nsa`](https://www.nsa.gov/News-Features/Feature-Stories/Article-View/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) framework and submit results to [Armo portal](https://portal.armo.cloud/) +* Scan a running Kubernetes cluster with [`nsa`](https://www.nsa.gov/News-Features/Feature-Stories/Article-View/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) framework and submit results to [Armo portal](https://portal.armo.cloud/) ``` kubescape scan framework nsa --exclude-namespaces kube-system,kube-public --submit ``` @@ -103,17 +103,17 @@ kubescape scan framework nsa *.yaml ``` -* Scan `yaml`/`json` files from url +* Scan `yaml`/`json` files from url ``` kubescape scan framework nsa https://raw.githubusercontent.com/GoogleCloudPlatform/microservices-demo/master/release/kubernetes-manifests.yaml ``` -* Output in `json` format +* Output in `json` format ``` kubescape scan framework nsa --exclude-namespaces kube-system,kube-public --format json --output results.json ``` -* Output in `junit xml` format +* Output in `junit xml` format ``` kubescape scan framework nsa --exclude-namespaces kube-system,kube-public --format junit --output results.xml ``` @@ -125,7 +125,7 @@ kubescape scan framework nsa --exceptions examples/exceptions.json ### Helm Support -* Render the helm chart using [`helm template`](https://helm.sh/docs/helm/helm_template/) and pass to stdout +* Render the helm chart using [`helm template`](https://helm.sh/docs/helm/helm_template/) and pass to stdout ``` helm template [NAME] [CHART] [flags] --dry-run | kubescape scan framework nsa - ``` @@ -145,14 +145,14 @@ First download the framework and then scan with `--use-from` flag kubescape download framework nsa --output nsa.json ``` -2. Scan using the downloaded framework +2. Scan using the downloaded framework ``` kubescape scan framework nsa --use-from nsa.json ``` Kubescape is an open source project, we welcome your feedback and ideas for improvement. We’re also aiming to collaborate with the Kubernetes community to help make the tests themselves more robust and complete as Kubernetes develops. -# How to build +# How to build ## Build using python script @@ -182,7 +182,7 @@ git clone https://github.com/armosec/kubescape.git kubescape && cd "$_" 2. Build ``` -go mod tidy && go build -o kubescape . +go build -o kubescape . ``` 3. Run @@ -209,14 +209,14 @@ docker build -t kubescape -f build/Dockerfile . ## Tests Kubescape is running the following tests according to what is defined by [Kubernetes Hardening Guidance by NSA and CISA](https://www.nsa.gov/News-Features/Feature-Stories/Article-View/Article/2716980/nsa-cisa-release-kubernetes-hardening-guidance/) * Non-root containers -* Immutable container filesystem -* Privileged containers +* Immutable container filesystem +* Privileged containers * hostPID, hostIPC privileges * hostNetwork access * allowedHostPaths field * Protecting pod service account tokens * Resource policies -* Control plane hardening +* Control plane hardening * Exposed dashboard * Allow privilege escalation * Applications credentials in configuration files @@ -233,12 +233,10 @@ Kubescape is running the following tests according to what is defined by [Kubern ## Technology -Kubescape based on OPA engine: https://github.com/open-policy-agent/opa and ARMO's posture controls. +Kubescape based on OPA engine: https://github.com/open-policy-agent/opa and ARMO's posture controls. -The tools retrieves Kubernetes objects from the API server and runs a set of [regos snippets](https://www.openpolicyagent.org/docs/latest/policy-language/) developed by [ARMO](https://www.armosec.io/). +The tools retrieves Kubernetes objects from the API server and runs a set of [regos snippets](https://www.openpolicyagent.org/docs/latest/policy-language/) developed by [ARMO](https://www.armosec.io/). The results by default printed in a pretty "console friendly" manner, but they can be retrieved in JSON format for further processing. Kubescape is an open source project, we welcome your feedback and ideas for improvement. We’re also aiming to collaborate with the Kubernetes community to help make the tests themselves more robust and complete as Kubernetes develops. - - diff --git a/build.py b/build.py index 7a623811..2687e0ef 100644 --- a/build.py +++ b/build.py @@ -53,15 +53,6 @@ def main(): if not os.path.isdir(buildDir): os.makedirs(buildDir) - # Get dependencies - try: - status = subprocess.call(["go", "mod", "tidy"]) - checkStatus(status, "Failed to get dependencies") - - except OSError: - print("An error occurred: (Hint: check if go is installed)") - raise - # Build kubescape ldflags = "-w -s -X %s=%s -X %s=%s -X %s=%s -X %s=%s" \ % (buildUrl, releaseVersion, BE_SERVER_CONST, ArmoBEServer, @@ -79,4 +70,4 @@ def main(): print("Build Done") if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/build/Dockerfile b/build/Dockerfile index 9e3fee01..4cf8dcb3 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -4,13 +4,12 @@ ENV GO111MODULE=on WORKDIR /work ADD . . -RUN go mod tidy RUN GOOS=linux CGO_ENABLED=0 go build -ldflags="-s -w " -installsuffix cgo -o kubescape . FROM alpine COPY --from=builder /work/kubescape /usr/bin/kubescape -# # Download the frameworks. Use the "--use-default" flag when running kubescape +# # Download the frameworks. Use the "--use-default" flag when running kubescape # RUN kubescape download framework nsa && kubescape download framework mitre CMD ["kubescape"] From 07443548c99de9c7b826be1e1a7c63415c2ed530 Mon Sep 17 00:00:00 2001 From: dwertent Date: Tue, 12 Oct 2021 07:59:41 +0300 Subject: [PATCH 08/19] split setCustomer func --- cautils/customerloader.go | 51 +++++++++++++++++++-------------------- cmd/framework.go | 3 +++ 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/cautils/customerloader.go b/cautils/customerloader.go index 339c4ddf..12722a58 100644 --- a/cautils/customerloader.go +++ b/cautils/customerloader.go @@ -76,9 +76,8 @@ func ClusterConfigSetup(scanInfo *ScanInfo, k8s *k8sinterface.KubernetesApi, beA */ clusterConfig := NewClusterConfig(k8s, beAPI) - if err := clusterConfig.SetCustomerGUID(scanInfo.Account); err != nil { - fmt.Println(err) - } + clusterConfig.LoadConfig() + if !IsSubmitted(clusterConfig) { if scanInfo.Submit { return clusterConfig // submit - Create tenant & Submit report @@ -171,21 +170,8 @@ func (c *ClusterConfig) GetCustomerGUID() string { func (c *ClusterConfig) SetCustomerGUID(customerGUID string) error { - updateConfig := false - createConfig := false - - // get from configMap - if c.existsConfigMap() { - c.configObj, _ = c.loadConfigFromConfigMap() - } else if existsConfigFile() { // get from file - c.configObj, _ = loadConfigFromFile() - } else { - c.configObj = &ConfigObj{} - createConfig = true - } if customerGUID != "" && c.GetCustomerGUID() != customerGUID { c.configObj.CustomerGUID = customerGUID // override config customerGUID - updateConfig = true } customerGUID = c.GetCustomerGUID() @@ -199,25 +185,38 @@ func (c *ClusterConfig) SetCustomerGUID(customerGUID string) error { c.configObj.Token = tenantResponse.Token c.configObj.CustomerGUID = tenantResponse.TenantID } - updateConfig = true } else { if err != nil && !strings.Contains(err.Error(), "already exists") { return err } } - if createConfig { + + // update/create config + if c.existsConfigMap() { + c.updateConfigMap() + } else { c.createConfigMap() - c.createConfigFile() - } else if updateConfig { - if c.existsConfigMap() { - c.updateConfigMap() - } - if existsConfigFile() { - c.updateConfigFile() - } } + if existsConfigFile() { + c.updateConfigFile() + } else { + c.createConfigFile() + } + return nil } + +func (c *ClusterConfig) LoadConfig() { + // get from configMap + if c.existsConfigMap() { + c.configObj, _ = c.loadConfigFromConfigMap() + } else if existsConfigFile() { // get from file + c.configObj, _ = loadConfigFromFile() + } else { + c.configObj = &ConfigObj{} + } +} + func (c *ClusterConfig) ToMapString() map[string]interface{} { m := map[string]interface{}{} bc, _ := json.Marshal(c.configObj) diff --git a/cmd/framework.go b/cmd/framework.go index f4589e3b..10095582 100644 --- a/cmd/framework.go +++ b/cmd/framework.go @@ -121,6 +121,9 @@ func CliSetup() error { // setup cluster config clusterConfig := cautils.ClusterConfigSetup(&scanInfo, k8s, getter.NewArmoAPI()) + if err := clusterConfig.SetCustomerGUID(scanInfo.Account); err != nil { + fmt.Println(err) + } cautils.CustomerGUID = clusterConfig.GetCustomerGUID() cautils.ClusterName = k8sinterface.GetClusterName() From 197a3adf6a9882145d1793d594d55ac9b7f3ef5a Mon Sep 17 00:00:00 2001 From: Bezalel Brandwine Date: Tue, 12 Oct 2021 09:38:52 +0300 Subject: [PATCH 09/19] trigger release only for push to master to avoid release on closed PRs without merging --- .github/workflows/build.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index a5db2601..f9602b81 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -2,10 +2,7 @@ name: build on: push: - branches: [ master ] - pull_request: - branches: [ master ] - types: [ closed ] + branches: [ master ] jobs: once: name: Create release From ee770e7429edf9cd286d8803b13c54519c3f8be8 Mon Sep 17 00:00:00 2001 From: Bezalel Brandwine Date: Tue, 12 Oct 2021 09:49:26 +0300 Subject: [PATCH 10/19] add github actions workflow for opened PRs to master --- .github/workflows/master_pr_checks.yaml | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/master_pr_checks.yaml diff --git a/.github/workflows/master_pr_checks.yaml b/.github/workflows/master_pr_checks.yaml new file mode 100644 index 00000000..84853948 --- /dev/null +++ b/.github/workflows/master_pr_checks.yaml @@ -0,0 +1,39 @@ +name: master-pr + +on: + pull_request: + branches: [ master ] + types: [ edited, opened, synchronize, reopened ] +jobs: + build: + name: Create cross-platform build + needs: once + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: + - uses: actions/checkout@v1 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.17 + + - name: Test + run: go test -v ./... + + - name: Build + env: + RELEASE: v1.0.${{ github.run_number }} + ArmoBEServer: api.armo.cloud + ArmoERServer: report.armo.cloud + ArmoWebsite: portal.armo.cloud + CGO_ENABLED: 0 + run: python build.py + + - name: Upload build artifacts + uses: actions/upload-artifact@v2 + with: + name: kubescape-${{ matrix.os }} + path: build/${{ matrix.os }}/kubescape From c67b111c779fb830ccffce5ae345ce2b7565862f Mon Sep 17 00:00:00 2001 From: dwertent Date: Tue, 12 Oct 2021 09:51:14 +0300 Subject: [PATCH 11/19] do not submit unregisred user --- cautils/customerloader.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cautils/customerloader.go b/cautils/customerloader.go index 12722a58..2c23dde7 100644 --- a/cautils/customerloader.go +++ b/cautils/customerloader.go @@ -65,7 +65,7 @@ func ClusterConfigSetup(scanInfo *ScanInfo, k8s *k8sinterface.KubernetesApi, beA Submit - Create tenant & Submit report If "Submitted but not signed up" - - Default - Submit report (submit) + Default - Delete local config & Do not send report (local) Local - Delete local config & Do not send report Submit - Submit report @@ -85,11 +85,11 @@ func ClusterConfigSetup(scanInfo *ScanInfo, k8s *k8sinterface.KubernetesApi, beA return NewEmptyConfig() // local/default - Do not send report } if !IsRegistered(clusterConfig) { - if scanInfo.Local { - DeleteConfig(k8s) - return NewEmptyConfig() // local - Delete local config & Do not send report + if scanInfo.Submit { + return clusterConfig // submit/default - Submit report } - return clusterConfig // submit/default - Submit report + DeleteConfig(k8s) + return NewEmptyConfig() // local - Delete local config & Do not send report } if scanInfo.Local { return NewEmptyConfig() // local - Do not send report From 2ad469a5f425216b64a6d70dd98ad66a4c30129e Mon Sep 17 00:00:00 2001 From: dwertent Date: Tue, 12 Oct 2021 09:57:46 +0300 Subject: [PATCH 12/19] update summary image --- docs/summary.png | Bin 66891 -> 63733 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/summary.png b/docs/summary.png index da405856c9f4bb6a0f7b415e64d07afbec38488d..c21306b27a30417bdd2c86865da1455462790f32 100644 GIT binary patch literal 63733 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 OJLu}}Qu9sF_x}LQ=@UEv literal 66891 zcmce;30P8Lw=a%OR+d(lmN_(;mZ_PQ11e4CEUB60L|JBzI3tQ+T3K0InPUQFnwqIO z&ybaxBTh+9D;Ezavwb2Doe!J`x@MeSCd5iNPP+^?d z%B_vS`z^l4Hv&K)@o%d?B8~9uJ0OrS)8x|mt0B&_eEs%C1N2B3#8dm^CVFsrK-QzN zLK$t#H1On?2GE{;ld7##*}B+~?_*bMBerZ;KLkbfNVM|KP%!y8~| z?#iKO>SQYL@t1fF%ElcRAtG<3mZe7wN+63TYSFs}MSwFB^(g6c+xQzI>?dInybeJ} z@#3M#v^Id1E3F8T?;TK3_CvwO3JIEozF7f& zZ3J@{|HX~+>*TNp_Uu`egH-ol?-syfejSN*+uzO8yiOT7jNLyqXiUAVtJPKcvi*6W zPe#CDtOIFEkFxzH!K`ZI)F43vORW}Jl+18=0i5q-Z0aDs@Hwwro)(A$UJH!N@4aki z4uOi%&P(=XII*Tn|LIcyxO#b4;C?KQo40;>R_~s7dgyXi z7T+Wzz!U59zPoW+iC76}JVN0qS1n@i@)l5O2NA@1$A9NG#fl#h2c$zQPgH|kCY3-v z7li8uquJ58OfobQ44hedm&{oA_#GZ}MT{@ztI)3yn&=GKLI=)_M7t2g4m?7yJEyv+ z{w4e#X7WZTf7?GzXUG1vD*#^w4v7nEQ?vGZ8)Q(jH z_PP#lI}p2>v^Ri`0B0eo=kp^(QA9-9gS zoB_k+DhLAy**MSr9ty%m4qh0>NrCkX?luGqSqgG^VL4`bg$fbysW9QuK$L59BPV{W zb8flDNJFcLpfs_OQJ$3vW?gkN^HV7QJCTnOlBpOm;XDO1 zwlcT~6Y^lK6h1{LNWu$cmi3BiFE!32dv6!>EN79DT$kafXWM%PSF zbv~SP593n;u^DG8#hJ-A2Ag+ZCt9?kITCo{GE)IUT!si4RCTRx;H99O0U>gS=6OUe za~TT}e*0bAHzP37&-_puL(n_Vx3H`t@>ddAwGmSs zJjLGqVXMEDX*c$-DgJO%ZLaK=Ost!lzu1oI~47HG*9<~>B( zebm4>a_~cVK45zl7o)iJsgZWIh+W$VdO8*F`GDe`F3XPsN|zjaxz~nCHSK!B?Rppk zG0pbALlR{ulT>Whs~{Y2-H6N@ZL_$Z!UoRI{!H8cEm)W zFBL%~4ZGc_lB~l<`s*ancdhwmgn7e(pbF31OWO)KZoByn=r3Jj-1wlZA8(Hy(fv`> z2Q_8mc}F!xJ^WoZ?TB58&pMC#uzqKLb((1`T(Hv61h+!U9}N|p+RlJOL;^(-E{NA6 zUv#!lR3EQk#^HgTzYA-5h0joEK-CMa0B5o zN0=S=b7eMTVZPQ^?^L6yj#5!WlXw0fc~59tlBqOi>x8~5vyMHEd>+cbqqmxE0BtMPo7H!KEtAHsj=xH(#a} zWRn&&IOVu_6I8IC*2DOVpdYA4NC#f(3-mQuk} zl94-$VOVxVht@J;1Qiw<6p3T)VYaxZ!JJfpHLWd5-l(2lb=FC1CDJ7PTz~;$S z;0FB?I(?Vq-lIAXJU8<5Z44PdnZ6&9bk&nzS~X#?o(IhkREG@x&ZXj^FJ0 z8OHJ6{vd}tZ=T3DRXU&9s5Eqzt9qO?04M7c&Q6TZoGsfB`WfXQZ7H zE+D6|iNJ5l6Cu@S<|UxKnx%wTMwYb7shOXOOvM?V3Tb{%lG&XVj;8~TobwA>5qb9b zz2D1kR1Oq{eN@_|r=u{qbE=nd9V%+b&OL%I2*KoVD>ko*xP9Va@etQSnF`1_kPnx` zcMI-eZk-vx8)TI^^@)#$#eY&5W!x|QxZ4%_Ep0P>1B@(nC6(^wo7L29XlJ^HR*tA( zvkjG`aZM4}_D-ctO9Qp7^rcwh;!+0hC~@OBatSr`=%(cbt$e;}BYfq}h z>=wFg7d=v+$6)B6t_b+pDr?%v>6$n8hJKLbnddoVGN0VjB`rDItBnUFm5n2@sr>Kr zL7vC64|>%-8<`mpuX{G9GU!r=o%HOR2%Ir!Wn^r!-9@ykA}-nuIYs@$VRsy3>RKMx zmma5{Q~(?nVL8s$s<~8|+<1>}BouVoHs(7YJ{qNf5k&uqxa97e#h+=nBqUmVXi-k; z3M8BS6)*;BI+&l@dP1lb3BonC)=iDXq90uAhenviL676lje{L<$7`E&4b;emV2)B3 zVS@jO_k07w#s6p=$hYSvA$Q##5nRO6t&!QJpp%MIKfSg`fi>>VW#LCGLs04pagI|T zxaq@!TP|-P`28Hzp;Wc7dFpIUW0p74IqNQD{tYYPw!;B8zL1W%dqG5O&ju^}ly}uS zZNW%85DSZFM!!TKv8NJ+Sq4sbl(*6|7$giTsAJ7R?+#fcc#i&!SyWcuWnMtmdww7N zIwz5OlRNZ#T-%9qEHerKQoyRnTwMyWkiFJ2gHJv%l`W_S23p`Hn`>(0Q~9s{8uT^Y zU$C<&ed|O9goo=kD{57Yoq4jQ!|#<^jzwa9 za18*%20zxJ%C#%rqj-bYiijBhbu72})Shkr8?N+})d)tJaG_U?zzgrw@{Mg; zNfRbSfpd7w#DsYVz5O$1;14HZldyL8LV6-b&Mh35QtprsuU&-)M8g<%*7i|UTcghN zJ#jN|Kz63WPk8_AdPxjRcatIkQc;}IrkWHmmH*;Dgx5;xBa~Y@>&2%;nMHzK)&(X% zp6zm##|L`)DrM<~yY5vU7!$}!OT8Rv_gfGJ*?F9#sBXWy(ni4u0xUUei`o_p!hP=` z^1EkW+R7NucC7ONtmPo1%dxz)iFmsgi@#TuUXRyg%Hvm!zKZ`~>*XKk+GQeMK-*4; z$Z#{71yk~eYiG2=E?}g;)?tZDD{quW{I;cfaqXj2N~6F}crz*$7losjh3RLKqjx(t znvf*u9fHAo82dLtaHQiH$~=8GcT=txkv{}M38tZ#r4+M$sucpn}I|fsLP-WY27?Vn4^64nE?>34 z&|&>4&$&^Gpij78S3oZ1uD?JZX@q|-E4%pwJo($SoQ7$)V~tq$3$CWjMuANaT)!5v z=HXTRn5+JBN(s1_g@EKZwh<4U<jWsjict!D*#*tr_ zr{+yKP_#|64YW5hxN!&end!e-wepphOI5|!4@|tP!xpUt=bsISNg-i0RMU&nrQ*$r zX1`INg8*0dhuqq5OyDhk&#UgKVm4Dj$Rvi~zIL8}`qpWrk#{HN?YhJ7l+d37Jx5IF z@6Y=xxnl+>5+Vf_F(d7ff_iMMp#Ex@e0q!Gk3wMx)=$O4E^HKTFlR%Z?5* zB}t=7zIszNn7CsWc84ntpMk_){R`a!Jq`-?W^8`Cy%{$W1Gg?(aYES*A$RSYRo_g% zE;+`hK5SHCo#Z}G%<>!l*42)$zi~F#!8QGhfQ0H@C^Od*|T%p^EhfVp5gwu(o?*M)!S2NuFb5+>!f}_Q*?8K^pVbiAfN7igFCOzDQYN}poI{Dej@&7(}-oW;A`WrQx%6hh}S80ldx++ zyrd98Q0=cIhuJ~i>klgDc>x$po|$bJ3XVLutLXKyp= z%#9mWx^;4}%I~i~nEiFn9~nwViRLaZ`E-JfKZ;3xxn&^1v_;cdjn2r(I9#!Q#2J9$8-djn-nID{1$ot%3KvW; z3oydC4!v(BdD>E~tYSlAFUvgY%!U?XuZR=#rmNGEn-Do8JlqD?AdcR={Qs zP*U)G8ddA~j)SxK4h>ueH({xDTN!}AMfoY3Z(RiJRsei+v0S;Aab#eD!=V|Q(XTU9 z#OSXR&HRwgN7o3P7o_An6_t^y4I94JYut=Jsu=2jq>}CC3uH0YM~TM}LTzN3yMmFi zHse?`5CQ0s@!M_HbiJ*Sx+IH?6RIx*BtYi@{q@z!@vpWEm%(JJ3N<+Bv*PzXk2|4a z^~unl3>y3$Gba)(FXYBy5KVBJ7m(c*%`3Zmae6Diavv0G|M~NaQi+Uvp|4Q$Ua#N^ z5r5_Wv+%cHH(UR@zZtkHkzYK|*Ec$#C=ZyIuAJA_%x>sT6W+}hgS}&A5+$!0@IB$) zSVpNgauT*-IZ4uktv*inv$pPQon_jsY7zRDkL?)Iy-Bhwlm2raVzO%lX?=NpJpJAyeOzcX=zo& zuY}v}m~5)U{u8~x-}3hA_*fV>1Mf&j!=2bZy-5mJh}2jPT!cu2V2L?gBVp?xi$Rr?xY9vCEd1 z1g%;5i5D($f2wU>$eoJA!&;QC$hyC#@V~w4HRdFF>QXtX3+{=KS+)wZ5Ods3UCHT& zuhDVUB%5)heJKCPDyR7Wg5mn_Z>0H8wA4BH|Nj)%&W5BJfYSwyH2oh@bpO2o|5scf zc_h~I#nYz}fcB|3{|h15SGkP5<=a^Ne2TyC6NC2eyy!nurFqm<{_`Y7aVRp-hmyQX zfi7?9QU$2gs!7E9Ntki@0jz_iE(x*z9wx(~#F)zUiMRn#N2xlH9^N_hFIiW2fEFd8 z?AA^a^jEo1{ENTT?8B+WMfF{)MD4XyfEn!;0DNhwWqIe+ZB{(x{}rpe>7N+O$?g9i zvY-Dmign8dgfo6V31&bvXOKo#R_wopEw3EnD48?rxY)iqf%y!_yzaEMyY3Mg14fQ( z%29e8Q=mD79R5kjB8B;))Rh9VyKm!Hq%cJWj{vSZcfebHI*_8q z7#UEjF>Me7(N@a=nO4G65O1cS=FxfL8KnwnxRb8>f()NDcdD1sko0m>NUHMy{)(>p z5A*VIx2sUrBqLUxuRnOO79G5EPy^OfX5#ScgwtkM5tiF%jnMo#iI)Qq)^GFrnNGL; z{(J`QTHbaJvZf!OA@BIIikb;CU)8zkGkSD-V?3*0U`pM{#n)b*7hZHu^uIN<=rhGC z20*A|O7GUYf&rG(oBT8&#GVS(>4)ysp`1xA_YSI2YU!gNxa6G2N&iqI83YMYAGqGt zLVM~xOCe1n&9y=Xk3XG-EwL?ko3h=G<*F~V@17Y-KE#O6#{XUj#ICO-h3hCJ&HL(17Vu(zGxFfz%cECeN4bYRW{6H$?><4ZQ#dN- zia|Y>WWHY_?K|#86PTgMi^;lC*?-foHa1PvEljKB0@-kY#o7j1wnY;5zaf9rh{)2v zk6tq|f8prOd^s*BhwSY*Bjr8-3MISqRIt*!GrPTq$_5$^5VR<})dcO187~)?kr-d< z6>ea?|796fWK5a8v+kZxJGXy9g&G=!e_k0Hj&+`7omN()UjH^*KVE|B4|M)eS@*QT z#~?@ZhmzIs{V@~u?wf9RPXtD{Wc(SVW_G$(g?X3+dw9w_iRi&}nR>>&F_j@$&M1Fh z1|@oK&K(Ogc|N_luH6_YF)b6alzpZH@;8+|q>sm^uC`7^#*pP|G-Os~_^FR0{q zebp0<)Fux2Ww0bcbKbog1-&T5j6>}J`8K_;@&Hge16~cD;Q# zB4%x-e1xN~0`!T4HI<7HDQD{Qf)2OUiE;$vJ0K!2*i5ks=TLqPK<}$0R-Vf_ekWlg z`q*J7FRP)-7c=)xPKSkpb)r1XOIp*#+I2~;V%0j-uNT1zcGo5pQsCjpRQ(Z zwVhj@XOc-_QDDNxAAjmQy9@`O1*Th*o*%B->~mJUaoxxMSc4BLj8}HgwN>zRQj63V zX8Xh9i#AmK@voVHa??24Dg}ltLuJ5bG|mVVf^X-VTAk>>u;-{Ys@4BT~fz01nx@x$_RTD8z-MFfWjiH@uZumrS;$`1Iii$-DmSYz&;gnJt~6 z$xK;6n$s&!whLGObP0s{r#}qxP4>B`W78Y^maX$@X^s`dTh|rH!|fEoue*v=vy+h# zrwST5s1H2@&%$AaL>q6gMnNX)L{T`f(4cW^1Fm28lroACeG61j&Bg`w2gg&@1=t5O zE^oua%ZQ`M^Hx=^&nE#cq3XGVOyZud8ESZ)oNbQFh4^1zH;$zR*2jC_{v6iA_=G17 z?1wP!oje*RP7i5T3AMWUr~IC8J49NSl)mlR@{2Ozs{s7V%i~JSmF(qRV2SFn6MzjI z=ZPi3JK^*r<-{wsIi17nc{Y^!($W{-Yos`4ziCPqr$HmRC2ttIjnA)R#NV!8Et=;H z616iNnf1hgVE*RG^MHkhIQ#xaxwK@V_21Owgz>37Iky!jjUr}cVC z>7NWS>NmC26p-UUmh`EW(5po&RPx(?e= zoo2?d``92jG@iTZ)uOJ{jMB=uyD5Z`GzCw9qB;rQDv^?ZL;<5pe;8 z4mZ&9d7vdAv7g^!)pZ766&yEIV(;H3wwT_{w$oFu@G*Edtn11TKUVOoN@kTwg^SU% ztC!X%93KaV76!G-T=nnDK|Q|TvSO7}cl}eatq<1nO5@Gb%FwD^%OM#xD79Xu>S;0h zY;*c)Z_9lXX^3KTC1!2>f+p*D(QRJG)C%={KfqH8OcUsgGnO-l-`uU7Q6~J!zc|5l zZf+RP%8qiuT)R@g4P=kp&3i-HQsu4g2#+W66nWj=CS|;E?!!#-OcDB6O}MRP!g4rh z5<0}CxAv*O89OR=_#9;oD7?k=nN&|`=DUx_748R+NEf-)QERj>)EjeQs%9je`#lj_ z+nZ5tRd)9oYKq1DFcK@T9GP&z)|Aq%|4L&rIi1^Xg4lN9I*NBnCIOii`i@(5`5pLi z=W?Bj*=O@zq$i`tAfn_$3k@e?e3b&)1pYHE=<~t@#RPK(;&WOH+b;hO=2}OW;@*xO z;|d;Tv1Ri8lqJ)=@+m6+DZh`^@B0g{1QTxzb?Q>z2|(w8ehE7|=faqG$nd%m^r{`X zcM>z40_5}Iu=nDl+B*Xqx`PG<54wTV+^L_LOy3Vdje3qO%?(c}2+>Ib5RO2w$t|@~e=qdKQq$r>&Vj>u%J?yf ziYbP|!0-~1#B0tjZ=&*3`P-TC(1x=Uv{??K%$dqI1Ng=-W$bU;mutWM%4(3}a6}d( zSNk1Qmy=37Edh4F=22PinIlM=TE5nn*^zl&_}bjO;y$=1oM`LwZ;K5|PXt`ryTJ8Z z>Gjv)oA!qXRa8&ME!NED^OO5{&iZ&)uAhrUTar`xn=_ z{~xUvpwNr|qc#p8$LJS)?tu#z8%Zz$UWj1lLil-1a5051VCJ&IKHQYaIXy&PiY671 zZwpv0EM)#~Chih{N6?*6iC7Z&bPXi_Q#a8Z&ly=7OphbErZ$jxwo?^iOl~q01UjcR zO+rNfW+CI^lfje7?`M-j3>%RkPBm3DDVmeP6Pw_EN%H6+Zu>@Mp)n0692FDZ>#0Ao zcg-}j-WZJWewIKsOyBz@FzvVU(M7i1Dw%ip0>kTmcFnjc0R%sP<>#FZP9G>3^vnwG zoNv~SI;;vnfj?)T2ZWEfe4K>%nM`k7+P;`S9yEVL<-OXZMuRnyHiUgB4S|m<# zdv7?SSCYmhL7)e=I7YKZIJ%$1+SjTPzGIA2@r>d=rXRsOU8Ck)J0Um^nQzonSh}`- zS$f}K3WJToIJ*em;kIt0+Z1TF#(Znga}C)S(>~T>yk5_OwmOc5Zf{!XRrual&>3$` z_tgB6wG1PcYg%Su-|=w7Qa2K8Cu)%xlfTt_t=Hyx39RJjGche-@rpe|SL&^v9bdPd zi5eLw#YbmsMD(KC!aL^!`2EJXtzY7Q`d~6?%8;QN1EhAWE4cL_P@Y@OjJR!h^4oU2 zux`10rn)R~O}7(J%xC<`RKXILg%{l7Y^|*E&K(P?c}g!Y05q=3e#houfRhQz(hQZE zyNB=?DT-#-3FIf)!5b7MV&KW5;a{EOhxZxE2Yp9c#xKx&&kU9AJ@sY+VN%7;0@psi zs1L13wvN+MP&$1oRgL22DMv{o4PmPXI0emaY$U*!D0ym8f~>Tj0(^~bZxQ|^$Iw@F z2~DFO^q?IqA^qB(b-#4Sh|ckHVps6h7e1ckd?kcqz~fstojZw(%YEm4-J}CU__wy3 zuKZ^1r*bUvBEic%%jz%Yp%Kk^iG6Pi*|$&eGo&)-t!`S8KaPLKo{EuY>iAIWoM zDsI5b-V{U{zYcrxq!M*Y{MkCWJ)d4e z>uMG`nA`;)xDoNLn$%l=g?lM+I%T;?{nvtvp|huhmhDBvi#?Jy!tJjslapfET=t>HSojSAqJV8 z&Yx%65sQg%KZDHOTYQjsFVog6cy(Xv+pikgqnNfI_5~ZrhNkz@{g&x3S|Y(!Hj8r6 zcBb-Aqrf_Vra^;+*+o`NnfnhN-nywSKk>GNw^M;uHcA0s?}(d|Yvq&Rspu0m0y)?_ z3!aL%5xE4ykKaqc7oRHt^xIY^hd6hL-;}heP7Z$3b$r_&?RBSDbBNzxUNC-@do$J< zHE}=f81&m9UL(0lbJS0|15l zWeAAu-l4eov+e6EU_)pZhc7zL``5HGgEStMIqzk0$g^$Tr0w{sN}hJBYNfOglp$WpGL)Py`f#B+pie|oJl?O`}L_rep9&Wd3ir`LRNfPVBJ{o(iSLvcH6h*`8PcoMA6}8%9dLV<1A|GLAPMkP)TQ9<(XI5#^(O^qJ=txUR zTJ#C)-p!*Flj~$qm0dYMq3nH8U<+z=wJ2DfXxjKp1%NiZNN@xE%Y%o`ZN0z@@wVz5 zPF_&rVp&XN7*GOE2)*D|?o_G|djV8=@K{kq(YpO_zMnIX8L?cLUqw_S=mcu@Q~81| zvmmHVG5#d)(T3Kk`|8~u^68nMcD`0KT~D%JyR*swrA(C{dKMYK!Y&`ByYI5Tg z$-z#%sIE1Tzkp6#BM8+erQirg+orh@rFih!^L?IK`I>G>JI#P5Z^`p4Tvv&mR&>8W`zJT{RGpfYt}})R!js z&+b$7h^LlH*|$GO85EvtEf6e9T`7^mxNJav(Nb~&0+wZ>B z+fW0q{5bsEsO~C(EzUbZOx`*kfSR(@?Rn{(Kq`5%A81gvZR6(O9IV*&U3+`rCx6KA zwFO9ZS-N)9PXFup9RYhwAJ2Zb0f$s=q7{_LIsFto+uxz;7^Zg)(5q5K{O*#MyQ0n! zdC?@8MfFYN(-nvBWIEuJ3kkeNQULf^5`HnnfsbEhPPe8ZyKtppd`w|_#JrA)}`@|t?46ydU|k`nGa^@5}+ZIgc+$U1f6 zLS6R6yn?-4>j{2vm5>e8FH!e5#Xv0AqJ281({snccGeRBlC@}MU#BF%uOh=YtpkVD zTpkN^2UmUMKcPKq=ubx--bI#!0^J?(FjYVgAYb)=33Gun|A&3Y|2IVq(z*Y@vY^`k zwkiETbsles1bbtydxSvous?zaQ~KJ(fEb|g)r(45U}~d=ZK509tQ&R1hoi=rZ$)Jl zPJN=m_QLW>@Qwg}%_sc5=fPo>tFSdx&*A&@3F_~NdF4-c^~1a{*FFxR5FyX;?)su@ zbb1N$E#~?1lUqRdGJ~YOj}L|{Y(rIU;4rt9~H(|%mAdQHv9vpQ7@_k(;qbu-B{GvVq;MV_S zGD}(W%pyWG8$ioIH2-$tLX(T7n48oy`Om+;yU6Sws*@aSVr7(_tFC>WS~1>h)&5On z>?N!_lr1@ZcOXXBDRx1eK>M1Tfm?qs%L<}lfuHBE@$Ns<>r1sG_Wz{AzO$)>an`;| zlyspQFU2bFn;aFHITfKa1vGEfqW^<~4=$Ekx(x(cwMg)4_hh*EE*Rm5pNGbF3Lx)S z#0G@D%R51q%fX2Y&y1YCXZF=$nSuKRrwFGE)_24Olk4|S?EV7nBw#cW*k=~4mc(mg z8JT2>eJbL{Sb(|Z4%_Xx!!Ujxq$?R|B;(mt&yQ|ra=CETT#c3i=? zB)3A(5LJd>2}h;-2Uty(LTOfPu$8cs!#~?J12(ujfIWy~IJgppwfEf@6PsLyV3%*; zk}!g+)sl&Co2~6^LvLKhaqjp~hllMxIrI9z8Ymbcc`9HG;wNb^_)g2L(%tPdZdR3P z-Wa#nCGW5CV=Sd7HeX4jK_qC`J}^rMe6i1k8{X#*+LAJShvtvT$EC(~TLW~x zpLp6>PF1yK&l|oQNY|k0u zT(75b>P1(^^(5~05pA)B+@n&34>e#_nhPYnX*t>`IG>JE=(ZQj3-f>H$Ke~kb!_PL zNvba4u1VTMdKG*}Gww`go>o5IaNIgr(5~Wc^m3u51oH%2-IfqT7lfxG%Lnq1s7BhG zvG-xyS{X@uEUg{kW-+)k4h`Vc-NFBB(*0O{dzeb~VjS34lehEL$krbaV-1h}> zk3vi~<;g57qoOT=M#!1y^uT3%%0C$X8YMyd8MDIxu>$n`y<3=iI&OcpOd2y={cwC} zXuyqU__!;uY{gJqRVlCXN8z8JdZOP3vxlP_bcwt`!ndCSLDyz7?O{7LXXB&AF&n6x zD>i!QYn-2`@8Zfn{2N~UfFoUv9f+!LZl_!z3*G73^_3@?C)#OdxZ8)H=MMxU+o|D0 zi8ChJOub~@$rhXb@^3|atTyJ&Wfn6K-299D3CTa5Il+o#CbbQ^g@QeXiF;oi^{|`@ zY9I@~($3cKLkMQ8^Z$!rR+{Z*@0?mRfBs~1o2e2TMpSTQCOYAsl-)MF2g^sQN625L zE6FzVLO~>8albKH&16m-0Q^lpNO#rcUw@D!d%(x?#1?d&vy#ZmEpGE#8YA|AYS<&O z_Sda=8d4UrVxZ99Uuru>Je4!2ycER_zj;>DdnkI0x$BsitA$i|pxY~i{Ik&Ck1yng z?*6EmFjM3|y)w060+ztFBi}C+sTY4|`u_5n5;T+WUH1yLl#fXuc^=LX)f{B)$jbO} z4?|L08;TAi!)svt?180S2a)Lnp9|xcn zg9Ga8?qxX%(rY8< zzxr^SDoESl4N~fXX?LHg)aA2N?mtJ6?tMz9N2Oxi@7H5fv?M}#l_Ij?^f-i&>`Pyn zV!kdpncduCgYyWhUNAS1s9v_NB1%%B?pBcZyZWsr2=-*CgNL)aHYVk1f9H07OiqpL zE>e`P0d)Ud>A(;67`J^kDING`3>zH~e$2KOcjHu7_Cm9q!n51E@TCkx%uEf1IlHA8~hlrogs|v z^d%|Fbuqdhi!Mt`=q2cBV)O3Yx)YzuZZ+7z)gG!4ig>=^EQMY-XX2vg*imvBx@rR@ z!B@$>jCd+ZTadB%QE%+i!U;h8JaB;Etm-s%!W`T@Y}c|}nUqQvYlkJao*EqNB<^i) zIXE8z2NPP+?%zVLX7aBUxFtS2T|XA(>j|mAQLjh2qm1bsF65Yke8epv7 zk62D?ER&$;Cc=5qWs zwX((2IaEh~9A{v;j-^NLZ=^4-x9qecI=TX8%~FicgwmjfG9IF1lB- zKD6p&GtZ*!j5dZztxQ;Y0$$Sqtj{Mm_tRkN@=Kd`B3xB1+*JOGG8l~{=PDPE@peeY z7SxX-19y$IxP|a^q|ZgI%)^o8O;xpHgm!Hkqm0*~_Z|li%V$#G1!C;dh*B)()8N1& z@t!<<*qX<<9y{^v4KHcI-&k*WAXdE?=Avg`7Iq`-v+Y0TS($6&&7XFg zTyeB5nC^i(OdF^HPC;L8!)i9#Ig3A`o|nUCZ4a3N1fMSgoFf08ky9y0YRsx?n$`O1 z<>drB`qB>TS5!yZM0NYJd~P&I_sTy{L!u7J&a_)Ze=2YlEL6-@-Tqs+;QIXUg^OFx z9W#N*nBzdqa+BJ3s_WyXq~UumfA#GB!VpLXXoQVk0B3z3`Q5ZVgO*8cQyZA_{f zzNF;$!lId;L?kw@i|^zskm-Sj4=VL{y0Si6^Gh=5V?b2S&6XP)AihqzIE_^HF24+N zL*2k=l~0k%1(wZ~9o(CG&AFoPfN|NYeMmd~d*Or)AQ2F}uBr1 zoFXU`Kq!UTp82gh2zTALDt|!=*$L4)BO0xzHg3zP+P0d3JNPydJ9Z0VJvM9djBuN7 zYxu(YOuK1Qv}Y+%$v(#Ok8Yl>I#V#Aa~=I>+FLz!-_HIflu`PxUQaY)w5+ycbTG7C z(P{!o)#oquAlq~SSBlm(My|9Resot?E-0}}I?iTy8pIGE)uWdZG+@B-hYjRI^^sp@J}dx-@6v^tVvOYagwxaS@A6U zta&PU%`Ur~`{hfdSgjc|mNgK~nH$3)fo_nB-cnPl=fo%I#C+k&b&GlDA%!+;!4Bv@ zo;91$>80D7wqN{%LcA$vaA2w8A&IeTaW5txT!ymu6rF}QGTuL0%j4XJfwI^|82V+hgs#V7qkI8lR9vW(2GF1t%wG2y=$2;Hj_s2yq z)R$bTY%P)&xA}vIB>3mXU_w1-g*Ee8XOi zoJK?)BKFa;y@f8O>d_0!`*aCYeDNMA#h{S{PK9I7mI4mBkf~o_p|6Q78|%X~g#?nc zYj4CAbaDG1G%Gp^Ky-3C-gu_irtuaCYE_PzZ_l#mo=^RFT5j${c-$&XO>#u+)$+1G z4%4h#jqqFO+L32{s&;zq8FKE~8=Mfl{Hz*msFgXD_J~Z?r^&RuOY4&P{0Htha6f=4V&U9{k z7pWUJvp4Hzim91H2lYG}l1KPMV^r05EVG!Y!LNIv#;P-J?v;a;$xdCd_H1?gP@S|K zy!EYWEI#;DS#9DiJ<2|obL9uQa7sv^b9LxlV>(HSJJ#tmR#K8^lgV_|U3C3uQ9+b= zD-E!7B?jPd*-dlXSUhQ+#?The=%KVw+?yvz<9h~nuf#)Q1#8o7mJgPl5iQ~UqspRU zTXoMmtZ*YJ!U4OCl^MyJ4j_oVRr(iOfeCdgteop08R?*Zx$jl)(cU*?qmONcUg%l- zSicL4dmKR99D79m)lS&Cy)(aNzwH&hGny{`uQnt{D7}REsAC4N#=5^5iTk;JZtQ>m z-oAfo7ksPrPn&4v|5N%25Me-Wymo}V04ftS2{T~ND*xo-qI?>qvUScG^Eh<5MzoO% zMNBU}B87Pb%J2AsoU_N6qi58mVEu`??{Nn^%j4cG)ycFY$n&1=W}X!Ab37+TAU)|2 zg?8C%P{3K*rxX^upLQ4sqLY^z`7wWzt5+@vBMUkwb)`*#g?iajfy-X1d&s}NHgKB8BV$L|smYj@3dGrr_23d`+8anAHh2TJwt z=_m(?7&zL~mtK8ZE&{#SPu%PwV4Qtka9d`?%A*`|uqzhLbzSZ65}z$YITGhfSv|D( zkiR9AcSUxDAAGjqN1Mh*7r279gk^!Bnxxd%{0sUQ)8PtQ^HFCA+3|>K@yi%6rAbM6 z7o~8{4WKh!cmr}ZcZCNg+`l=9KEjIW7*2r}-;)J~Fs0_omX_qKZ4KL1##+qRDkg3v zhxgqn?0@MO{$hu6`16J8ZnuR`6fY?2*>sLB_xmtgi?6R|0<@nUzVf0MX_SN z-m7U9nME_uwr46!_AF|3OMUWpY`_=I(rUHfV_4xS_$J)jZh>MjuuoP8${6YNC?^K- zB2~VmlfND&Z}tp}zrUZ-R>@>F{MJt72gEnp{LO8r)9toxn;<$-&K$<)Z=K$s7Wn?j zoIGOzXT9eJmN7joa*J9av=(b`V!b&y3eUeR2qht|U*}0u65&1ZDZ(u;Kb$F1n|hh=-I$;`r4pjOWCphlYIWR2U0H&}6c zjjcmb{XiG4GH)gl%%v%(UamY%e7MFSS7xuzfM)FToS(agW}0E3cHu@HTm zX#i|H5Ef3n;cl1D3+4^K(+xFm$TItDUfIDV1#&Fh}$;ZssK+HPYh;kp!>{;$T9T3>_q zOUvU`9SLXoLwR1UdfNlg^?rLXDnG0ASb~gKOk5IOnWdLZJ$DlK;4zJK!UhHueg$;BBZ_n>F`#K}y z-!|r5qiX2vHaYgn)3n8{bogy#F5nUaQDBezX0*oZ5B$}Z64ZS56-nhRzD+2G)V|G; zj=b2Is(0YSAAZjv$Bg2WH-KnFQtw&SgDHvkWLd{dUt&4zZlBlHeRBQQF11qmI_0jk zd+N0-%?Y%N3i#rh;Fz#z((}b8+S!hF7MDqb+f>)$Rg+>KE;n=uX75z~SrysTB#8{& zYx!K|9I2Om-Q7`RAd~aN83=5Z!2U6l=S{1*=CU7b%A<+#Me z6^=x_j2l~LZ}P3jbwchERP}2n)kF?D9(%>Z3HMu9`FnfV-KzIJw>v2Ts;!{|7rlx; zEFe4Y*hQmSyGfU+1j399jHFH^Nvq>tw|jpZT9JeX*Z2%Tvq<}yur?S#l!oL>(V(JsSF3GS#ukIO|8|&pl1DNAnCD;IcoCSz z)h4(4^pQi>Q=^Fo-CiCq+gzRyKeA1HFZW86yXnab29{cM%#Oi-2pcSg#5Ui^Yq3#p z*p1_~1{#smMB!n|pUCxU{di7Denx+sx4q~kD*ESqePtX}0b?2FpBVj8xKx=tI1EiP zdp9d6o?Eg^GV=*j_F~jeZOdxd^VZEXEcbMNHd|4fr}I;xqbvgblcuyXyYby(45-qvE$2k>EV|_qWvkr)Nq1?$V7}WH`MCHl-nlz3FSihoSRZ+){Jd(v)_? zi8|jQGVV6zIBd&cquur4*mJS%G3vfIKMo9&lFSG_;r#$7M(7@YH6-8MABNNgo~MG! zE3LJav1=Xx1E~T{DLq~5VaV&%U`pk;{H_XdIB{1H3BOXwug`y{kB56=8_V|Gz+8v> zV+W=NmYn4F%--mZU72Xt%pjBYM}e!XH_5RnAum79iF?`^yo%h};F4z^hEhlm!z9|o z_`YnvV8S0hW1p1O51T@g%n^ZY$horUuc1z}>3n2dR{E{$3=jL3zLZAV(o?3b{qXXN zI_;(qV<*#nhSfR~Sb66-9U>OT@T$C19z7=jtm`!PcTdH-MK5o7>2l6J$n}09KnMFn zcG~tsfv1!3!|n;cmWmKA46&t&?ZKsxa2oECcbExc#YwJK0-?L80#u8o2Q{RBN3x>~ zLtdJyE=4b3HFwlY{ni`sKQo$f^U{J~T@)kd{#i%Dhm0bE@yxRVNf zvUeE31U0+al1JgVh%C?36qXOMMkv~0I*vZ{u>}7XBeKkC6^swh_>UY98i3VcEBf(- zVCb$UUZUt~fsP40A>!W)bdB~e0#QEK7WghbepbTdqsfdM<}@1? zcE_L+(`M&+OPR3T0i9Sne0cQUc2+_i^k@)Wj>s_l8TIP%!+eZP(Lyu zhgZ!i?w|}cHw=;&4m-o4b866;h0`5$pwk#fkHo#sn}e35e_{8MYOw`u?I zk}QSmBkIQ#7GTwsxo&LZu$EpkGfK}HIz3c*StQ^|4}qgrdG26OBwF?mP1l*_lxIt| z{(T0O0tFpt^Ku8O>(k{PEJi$NJt;$`R9NNM4WJC1ODpm~#O-`~97{Ql zX{(oGEg>A?!_!)4moIhOC=C?LnN(t1LlMm$;ai!JdaVe$pls$4< zp(lf&i63pEzdAH1`y676lcg%iS%z|3Y+v%9G+CascXHKkK14Q@NVVq6VV^MN^(3dJU+6BwN zmy`#iTZ0K(~0T9Z-N(!=S!m`*KMXmCT;!t#O~bF7SqHzHnfLsjO@SkF<#J znL}He??Az39i`N8uHNUIkR_*o5YK_5+(QY8Uidp5Tb}A`9`-OtN&*AfLrhsf){2!yPss^1m!Zs2F%FP(hgCLN=Z~v(`{4YM0F(nadf05R=82ENpi{1b9+1(W=#ZK{Z=0h!7 z;g>%unvYPY$wu0tl_}s(;JxtzANXl5;+%VU?n>Pzm~2J&Dd&}lhhWDf!)TqrMKqj1 zWGWg5u5Rz6BsmqdZ}Lu->yYOIz9I3Ez!c;BcR_jL4{{4!L!pVsd(O-*O`oH>Ma-7# z2LW*uLA3-}0xN(LWpmf~ z-YKrDf!J8%7jHgk9=A6e2BNl{R1lyOqGh&AMB#=sxtmV(>rs=MZ znSJYU4SAU{dIZy5Cx99}M3V{NIW}}g=+WlsTP=P-uL%T}5J);yfmB$juf962X$3C0 zUwKUGX^nZG)c5ky;xGZi^C}pSD_&@KMqnw*s`GQ6o~Q%%J_!WpAL#bF;%U+4tXLan z0_xba@kVSUbq&6HCiFo{hkIyXAJmfGg=#XH$esFL>hHvT|5oA&;+v&K=*!S{5~*iC zGi9vR=aB|9D-&>`K&Njh=Z>Ew@8|vY>uxMrinSDP)C`$ma6+_9S&Upq+p1V$yWU}l zmflpz7mF43-fEHMtyOg8l!u#Ks*^u`c56YsQH>>{%Dlej3snS9-xhGK)S9VFWH29+ zEs)XBs0_9;i3|4h$SuYJ&*uAHOXV}wE^yM=AndL_eDUiH(=|xp?yPN!&52^k#lv9h7xn6c#01^oSGSLJC*ZH|gVx0x7x(Y-{=W7_L-*Jh+4k=a+bP$? z(zJAZbi?<|sNADA=3=sGrB}ycmlx?srbttn3W+sTN0Y_H!&aU8hE1pCpP7KDxX(zQ z!qIXeAN%r|CPpwM7?9oHaw9v3F7<2>2$OPA7qGP1-g|T^z9U?@TFm#2J2SGl&~NRb ze*sIIrE!B854xZPl}V}DmJCqy>^&(j3|-eRZBRd>y-Y0nl$(65Ddr7K4$s?zRO0R1 z{0erzr}<^6kgh%{=KS4RQ3J^}ji^xjc4w`ZozqLkJiGdjnG`|my>3jJyu2%or90

+81yz|`gJYl;qbG>H-$hBM$@{{XeF)p^(UuCX4NE#xqx%zo_LwKM zxg~`L33$FMo09K0E}AFyE!inedk}kw=;$Z3CV}mbu!tqYKqOl*aoFwE8;Vg6Zb-JNBUNBI~jF{ zF7uB%kD5v$XFH;Wd*Cr9!!n`vB@vp|d-gi!`JLDQS%tlhvU2vn%Rzp8R1rmx{XV%M zReupyFq`Cts+qXNB1@}>8qCwjp$2fqMhK#~jBe|gn3l<~o>1EabWY62ZtfF(7|isI z{w;_^efqYqrG;uNrIR73TQ)>hExRf-`;jQ)mvXzZ;|iVVu-tewb z;Uj7!#>3HzcGumG?dqUgjpkGpyC?|c)i6a9%SKi1+lkO_*hMHVo{~6LtXmjDwMzC&IY~=Y}WasG&b}C`A+3m3Qh?d!nC;j2W8(|$VTi%s6mC{8w zDAT4y=I5o;l&@u*9&=@M%rG^Jb5^4Lj=a-J@7lxCHdlWzVf6avYI;HNH66?sI;`Uu zD#iar5_sKVS(>ESqP%)>+7;X>$YK`JM07O&rnn~Fw3E1Bi(m%9oMgej+x3)%kMd7X z_MZ@Run8^Jy0$OdpQ+fD?~fIhB^^oYxi?_5mUOXPbu_*BP+@fVb(z5RRF>>;&Ls71 zd)^n`J=ZFx9gLc?@?&P*3CW@6WhkNE$2>CWWjOP|RbQB|h_Ai}lS{Y`L1Y0JAXZ50{&ssSMDD zRx(2RSAU5!&NRoLzYTHeE zR}$0^B47%9PbE&Wk|Tju2!p1GF>FiP!W4c;gp@}8lDklB0}~B3HwYzo6BH!bjZ^s& zhmAb-!se#JkKX-+nWgTd1_&;q6!)8hpq#+cy>PBN;r-=^o$q}vp2UDAYmnKE^+z=h z*S#HUVv=aoECm@T?@XfYbqIQL3=Z+^Zz9y>F;v5NvVc*@CO>YwHS7fC&hK)`E$4t;QJZ*Wh=4IK*3N>y{m9iVdBZs`!T)(88 z$Q-Xo7j3^BD5-nK?{rG!Ru)4?VvtOK=i?V>FVgE3=i*wK8H{kG(8i9gmk+;+k~>-^ zu^RjvO6)-@$RZDp+5ucaDL~0P{G#ybK+{WoY$0uJVMb-UcD^?G6m&(>-}7>@?+7;&D6^~BKME}HqZ_Dno#)T*EDV8BMs z#22&3b`cY)$Z;FNXP^l$L+p&%N6)vQ*sd*|Zzf%4AtwBN52GMqw62>N>WlU3i3s`f z3N@iqUC}?>3>(m7%k8rrztb9_*M~HER*^OtBAr$(ULt`Z?IG@5!>$S#Y&@w%q1Lms zE2rlf?SqZ7{5CSSFvT(bV#&Azl%`cmKMO8%bO3pMd+5E(FWP z-uo_6ki*(kE^@Ro0bdS@=bn=Parld>`#r*22k3}2DM8ciC&w=xd-sCUlgq7V525%? z=mA^hz3x_sAP@{8Qm5|3;luUR=!-Q%kK;2QEigZ!Ha*(Ik2_L4C~r^Dkt)UawQH$p zdlKvm?C^=tb=9lnFOOL0#7QB1t>8ARzPWUIVYOH()>gZ7q|5}gKSq+Vlwn|u&Ce!R zJCflae=c#SN=+?4W+0c+feDB7MsMwfzbpnT7e~G90he`KF#J++_|Wnp=a9|Q1DAWA z(jMm7=E9`34(>}f%u?&Bb_r!`8-bY}a`KENHi8SXWcSYqeno2n`SzQEB?rX*pEFs* znl}@2l5kpu97KQN2ty(NF}yWQzHs4&&YT+r0+f_**~YPdPjJN$ep-cWyt3dZ z!r**HYm`XkgdmRor|9y()I!PvE#$9&)o-iAI?gdmYfEsx2r^T3Pd`;4--K=7sdzF- zw`*_=gk2SC(*7j+c_LCrN4Q(4AKi>(#w~yx-`Jie*h7MQE|L6$zv?dAUKO<*e=4`M zQkSf>hh_9d$Fa=I3e7C`WuxQ0*@7Di{rcH9vQyW}fRs`Mo>;p~7fU|}P$v(pV?!Q( z30~UPcXyyUD#YK@;6tCd54&lmWtYgvwb|{3q<+DtkT^_Evh9OFP6_p0kZujuamnF7 z(&oh!1lCsgc-INF)L;@DFN^jn9BVBIJ@34~gvhA}<6ZWGSZvFHG;-`7(>fi)bRDGca>$OdW=_%BV zV>(C5d%}X$%Vypa?QV=cou=B$1@iu2+wIh+hmp(3yXxpSu+WJoTIQD+#;53)3mJ8995l3V>jl)iz?W|?BHQf0 zt?4=JMeq*kcfb0=mo>R`!P?F&K^BFixiU}LCkaEbLrFHXDP#G#cx!tVXjzV6Ql0nn z%Zud225Q6fQa1kDu?@6@ld z-fO6fxj2^m)Mwz^bEmv6!BhU+)ATFe$i-$+d&6MEb1;`+g=oA_N~PO-kdIhFhrQQ^ zKw40Vl=8e9L5SENTka{_b}6)=sICc-yQSQiXg^+&dL-GMTGXe)JyXfJ0hxh~9*6>4 z7%^PanVWMy@Yv=3IT>57>iNq)qY33kNnQCezV)>r^^}gGg6^Qg51g9n6J?23vWdkU zDpmqz_lczKC`os@gTIhAPP^c9M%dB8?TpT5?;6_SSP6T};O$TGIo{jhmMPw|zONFq zmv`vmF@(>%BuJCr806ESLIwCy%3b9K`!M1UlVLwN#vtsRg=35I{B=+-SM6%M#!hUh zBthaSjWfFaw+%YRLqCDQ8IK>d;pNfD5xmxYAp>3h9hk9ZCyZ*-ag@&kNY+OsCViG{oun4Z zZc;}VBO_u*%hk!pc@LgMuZIZ~hkDgnQY_qEZI>mCzChRRuFkJp#tF?*!_@9LRLD=3 z43{fV+u?bqzlHPlb2&?@4g7F!gTTgb`n#qb+r(ag#(RsOwXnuzwa<9RxG!YsT=`m+ z8t2)^uO|JUnb|)j^OpWx5|U~ry_*6CD$R~$n)s;H&E6E8@%)^}1Y%oN@Smm3$@q<64!@9c34LS1R8l)nZse!jsLth4(i|}X46mi8&E#?Z_v7yzk z!GA4*X6N^uYruH@Ehl124(0@Jc5O0V(5s!tgveS?Dep@y(qX@01CxlGmvr}^{#gW6 z+jK8%sh|lZD|-qww-UDx8V2?a7`uuef&n+qS3hHMd;eg|rsTwor>Fh&j%}SDzVOUg zg7lhh03_@`1E^}dMcR$rRB!BzZih@8uxndAEAkA2@6;n(YQ9hyy5)~GUgG?-DL6s| zo0S%>%^TvAQ3$>YloTeQ!8@+x>iy^y}|CRUQt~$n3vCxUP zp@TCY5COA$I$bZxYhjKF8$G5R1Y9)*PMMnlGFUxF9>_@(_Y_)ft=HdQ@qWiC>DAu zuRi$8<1_ag6pb^`#44(&eH&c&oR-v{`9mx%TCz4qkRnfA0=2AFgWsu%(|c@&wWJyI zS2ZqV#;2t#Z!6q1S=!|+3$cIm$BwRmCP>Vdyfp7mI8+Z>U)JCmOVC4V@zCSa-;b|d zA|6@53LrC6pY1-^C;{Kw0U7>yr|dwyY`Bqrh@QiyxXA4a$&E0fCy0ts*q&VCb`S%( z8`b18MQ%eMpvOka#ppz6zMI#3pV(y}*o5~ju-YQwqaSRjgEx4GD^~Ma^+tl-Lp;a9 z(sLE|!beMmA}I3|0=5C>1mXwaaQp)%lgVBdgH`B#En3o{y*w>K>}qB;C%>GaJN!xf z=Uz#u-^Sz_U$J7{Hy|9N4)LY<8s5tO4ERcb82f@gWJ=;=JZFt>KmzW$ez5(k_xO^a z*>5YWuLmBws10|1Xd(;uO!SvIGLnJSosmYmV(;?2L$P@y+t$5BvCoo z3}i;%0W{)k9aVALk81KSIKpNtRZGypnku?Q| zFt{+jUIEr=aozTV3sQ^fiQm?6c<63X61EP+LqYr5?iS4t72WS)1|w41hfqyyhIb8R zD+I;vXEVMqM%*kH#3qYvX_*==yP3iaQ8>)OT7TctRvn)~-GQg&qW;>8PbRP3lO~l# z^P*;0uAhuIb#%ekF_`5z(5$%)yX~doVb2Z#ASTf}BeMWy+p1wa;hGc>LkW0XVGx}a zX0(p$x<|Ewo*JE`vCDp2YA8IaIpk0oUMi=PLr=q17fqc5f&Axq0L>Vxm3i9?x)07nXK1TeOALt zK~s>Ok4RC-A&?Qp(qd;sMgJd|E;whL#Xfy?4Kzb-j@fiR@I4f+DeO>f3;a{SY+pzz zuO0e+gX17u?z#S!t(Fn(dO)gQnVnliIdkTAWf2x2-Bo9L*~)%-qtZ{tLB;E+2p8}z z|IT&`eL(}JLhC@euAg3tbS5Grm66%AGTfq&EM9P+Vx&M~ryeGU^+ZdP6!ajtsg9TxBUW&V{GFeG-4RpkSCHj9{+P!phxIy zdU&|6b%+fhHoBU*sZrLMznZq{%Dcz7ETo)Mn)HZ^-gkI#6*eNhGb2G*(hIWUlu%|e zNgX%&te+@o5hP4e43V=DjQ&i=ThCg$zZFYE;kA3)~=;)B-jXc+xgr!aqgUXLikb0jJDr*<-;>Opn;(R+F8cz%;N7~qTfQ+VgnNR}N;r8!{ z7T#|UYkGIv?up>deuzknEW#aex)Nf{4Qp$Q6-OQQ+h3k!_kH>xs^7;nuzw!zX>8H> zxOp}IfN+ON{O#nNtGZm}z2_U~AH5B8pcJZ+T`7pKC|n=`)HlPpbPKVuh2u|JP+OO) zP=j=5{3>oou&w&fjbIA~n@AyjGb6BQB;#~kVx2ANlr8ug;MK`L-Uikmz&fA|IeWW7 zR%@P+#IL0sL%Yw8Q`5KL%j>a}rH)naiPPV?=G*Jc<$$v>2UX766;Cl6d0|D^vY1g{ zV=94Qzl+@(tGA-jF8t&NyX8k`PF6lqQZeQ%kzl`+6ASWk>V%euq`TMrJ;)I84*-T} z$d|b4>?i5uzsv8RjHm^i1L#*)mBq~)M;*weL4SBI)cMZ<@yzO_njQT7;oe^?) zmq3?eue^1H6We6WjvPFq3o0>0HNz41oxHnLuw zo=}+PUrAMgd^uf{x9o3ahmI3IAIjYi>HCF7o13M$=iB)=dN2WZAhDRJIpd3|53D{g z!w#{%Rk5;k;RA2?$n^J&9_MenDB6DZSL)$W(rA?9$Y&Q*-G&BwxWA@R4pfS2pM zJ=RRh164QjS)THRo?AreCXKAGAkk{xr?~R36?D_LK?NRMckfXh9n*=^{_3&O`iu^y5A3v4$fUQNHf@mZS@{_e7vJ#y3QOw_xz z&|`2zC$hoOG$W*}$oyK0d4cuO3bCmt%P-93z~KrEe9)liEl;beyMF>g{Pj1AZ#h1> z0D8O9_)~W0I5=ST6>+zoAXUx(TQ*VAyW;AEYtrC*XLFA-#^t3c=UR9_88>U$=by_K z_Jmc8&!xWVhk!{X_}x$Q+iS;X_vT3a_-vD8B6d}6uRX?F2iCvH@ggF!o_^s^$=3_E zSexpx3xUVQMP}Hk{~&6c+OLe9s3dWL=bh;xCJ!jczSCqBw1T5WkX@Jx#_Zd2qXY;a z&Ei&8GeHi<9*&o=DUn_JTX(h(x`-R>oe#bNgwE5C zA#~eVd$amTJT1I`uRNLX!8@n63={ipZ6xu|rvC^TT4}ck72n7f#vUw*$S~ae1Y$8` zd=oPE&m*vQ0+;ix05_VpU!~Iyh^NGV5`n3#f<3?w^7WuZ%_{bA7th}b`jgaYe20Js7kf`G9xo5H&-1!+0-pMUtjWFY-QEhdzo zxHU{!zsD3-z|Xe_p*ocXM^J5}O(^clEg}C9K~#)AcQYdk(oy)-A^q#wN|* zGUu}Q-2R;rgqt!sk}N#@&bnbBY#|ur%YZ~lXT&%b-`aRtVBe^7l{r+jH!rDM6@cBU zn8M1;c8B;Ry1TI5A@cq(|8=~Z8TuMkWZC~h@eb>}Cu+GY$ZlA988zs*G1wyiE1M2v zlci2&vbt%39}Plbh;iB=KTy)62b%TG^bhAP9i854rPRO34lIS3e+<6tEQ1sst@!Iu z`+rf4P&%7pYzuMQ0USu(&YrkTuy-A#2|c4p7f1-kV!P?fTbsGaeJUfGTula@hnep8 z(r$zlT%?)k+d1}siAX6JF`I%mWRS~yLdqLfJ5_EC6BwAYdmNQhLV7UNU@6y z44V`4s*W6U*@du(J}yd<*wgLo9-J3V^qc-lp*>kvPrwNybl)?*#^;b~{rxgr%=Q@U zCUb2~IKpv?h79C`+(v_bqv+Qp`dPm-f{~IZvFij8J3r9M<{InDX?+ zTg-B3wT1izqDjN6@pM)y#YmOnV?@ymNxOT|hjT|1zUKiV;q1%1z-#BS4}~N1%1`oW ziaV5d%{+FKGcgL#czJVF-3Hm(*nS)pT7F>^E8HO*JUxf$aBf}pKE-;8d!umyo?DE+ zDeN~$AHVj($@JMm2bb&e>Jy?p9XyN@yvE^@QFZelwL57G^RI?0zVe^s`SUjuD3vtU6=x99e$fZaCe_eF$%Jh9i zA7t`wQ~Pa|R&x7zyHK?t9j=BNteL%pi_tn-^5j@PulyaY`5G;B>Bx?&7P<};bLmY* zJKuHhOn2MSd(r4$@;Ki#x^8nKo0DApx4=7?<$j`xiIdw@t8!){o93?Dv7A&AejKN^*|SHP*&13 zyJAQ9mRztZN~(?^u~%2mG~%OTe3v0CxD^*?ouc44Z~6q*aplyfcSoAu?{forz>gOQ zWpjAV0N@YvtQ!fVGltq+6N$o*F`hqw*M+*}g<7YKU^Jcwz?rXS-;nA=YsO5 zfUl8CA2&`L29~r=#g66|*t{&A2|~`dm6?i%ozoU>rpMc+I5LeiFeejR&ewmaxD(l? zvS}LRNz`>?5;~!fs>-gJifbfHR38_8Go_`59D$EKH(|z2qie3E`S#}721Pzt(SzqXWB{NbkGiX8B?WzKX{PRc?u(_#$ z^q?QPtxGYpDe1={mo4l&yeM(b@0O3gOOAZueN2XEd8)@$u=*P-**(;%kNwsYH011$ z+o{!zf&vQ>SnoiwS=#!t(<_=7KfVFO^wv!x!;H z5|U)V2Pz2_0VGS_MG0df%!|^GiWUs>!;( z28tBJ!LN-eLRjn1Y-)AndvV;2&DnKL#=jrhE6KDb8C3_=VSe9fg zvYaP0HFl`Krft}{YhD>E>3LClNeFMdOQEA`F1&)3b|qr_oo5RiJU;tL%~?wqDktj9 zF;IqP5jCw|=^1_?56|q;i61F-Gw~cYja!@@ODVl5)?{1coS}{zd)nnt&~WwT>+c!6 zc7r?Y^!gS!v(Nh+jy`ko#Uz>EB<0I|uYm;ZmAblgH!7F-IjWqBHCYB}ZT3v|qhF8r zRQEWJ+a;tQhWVXj{y8l-CW5Jy+x;it6DlrC=d(foY7ELHnA~9$bUo_){R9B@i8L5{ zm~h$!7cYJf5lP9_8}#H<6ehT}GpD*qH?gUq1G4rcuX{^$b)z5gARL`@WQXQM2Jhn0 zvvy~2V*wNI(lKMp$Cno=NAd0RK1v&sG;w7EnlOXhKs3C_N39mRkWmk#4Y6Viut5`` z{)to7$a~t+JN8C@AuEP4*H_JMh+ho0fCexKhlKu}qb>33y8@S6hoUkiAFX#l7uk-3 zXZ8e({U86!mC}%Na!YBG0U%BCfB8NCU5=;g+NTZxr*AU7B@}d*aXG%~7irZqjQbB3 zof8@m>v;ORj}crYTOI=XU)s9q8WkCi$c6wut&`;;H$kLPU4?!MNbl5>;6R`OgL)ic zM_Y7Gnp=@9!>c#l&e;C`99C&78XuH2iMexe@n-U7TbIt&E|nVv4~J*^o_7(sM_^G4 z8c}X&4^Pmo0`mcaHp0Xs*~2vBB0h>-8}{=a{>=jCGh z-uTjLe*t5c{N9IO2VMXZY;PTcbV<1y-S$;}eq$qD)9v>Xg(Zh@?q4E3L z#;^@@AXnn}!{^X_bW^Sq$&5u1Zc5Q*3yI79JQ(Rn#&FL{`g9MnHvYAf<8RF_;-mY& zYIZkK7G@yp<6x9PJm_034#=2Igx;?9vM_1+idQ_GCas<`6i*%xP%QC;0PzDLlJiS_ z(W%e}{a4*XCu;fd2?GnIY1%TX5r!@%{f#7DQJgoz2C8KS@RFUUfigc#qYtveJMk5| zn0tA~mT|;pMeQLu=ozJ8mVXmrk@xj>t1~4@{v)NB_{;A|dXH5{HAxW_^Vi`5S+S%k zegVoN`jWS}Hyv&QclT@8S%b3X#H_zA-#i92fMO5Gzy!W)@;9=c_`I0yzYKxMT@J!P zPb`|L32=Kx)U)m>#KZb+vvNb*g#sX2h7IuVLr(^bU9jn0)J@Z=ylm%8P7YJIAZ>~^ zPS{MuuqouC8@kUQ>VU(#flg@}r&{@D&x1cD@Ao?bzD2W5<}BQz`d%fk6fr}XO8O}I zNsJyKxBJcF_|pse#ANq|h7m!f`*_V-Uw8H%(f9?Zow_#-e9 z)j*f;8A)mnbQ@o^@XsvbY8&w1@d(GwyR+4_H0#I*@wXkyg6nDHtcl{$^vcpLi{NT( z!BE8{;Yz3D23IXAW$|Jr82$WiW${I4*o90ZA!;=4+1wKJ+VRuz&c`91j;x~^0`C}i zY*V(^5kK168yBR#HV!oetfXhXhMZXGs&If80jS}j&BDyq`I z8EqvREvq3R@@Q}4$5_2{)i*082c9W~Q8r56j9fD3R=K7}d83AkYEX2|Lghu4)z6Qd z)%>grqX|R8ihv_|{*`NV!=E+r)7`yTC-B9cSx8ef(8Qatg|cl{530p_yDMuX^>ZY@ z7fc~{Z30QGPyLGfXjToXqnRrE)gm$arVlQ70^My?WE)fRJr6VRC}ypy2bvavV~ z#2ic-())x-AD9B6@-7hkX8mvBhvV(kA@AaKi%`=IrT(_2ZAfNEtO?CPjXsa zEmX(+R?Cj`LZcc?uF0UBxo)(+2GDk%G$};b|h(0M8)k6}!qd;gYN{tLcL>FI%l}$O#z?uJ^*opA> zq-^8h+bYv)n2!hR@e`)Xs#iZ6yFNXB=gF>Lx5y-4F49e$=42>~ub+QcBIcHx3zD>x zF8g4za6JdjW+4L=39NhD%I)eZZfvcJVV{-dHcub4B}CFP;oDfkfgKo@C4wB}+t<{& z8b?KvX%k~Kt7#3VTR?Lqz(4&;xUm+Rjlh!M?7cYI9G;fJ8a0l&{*6y~KMeer{Rq1Q zJ|c+~leLN127$mnsFOM!++MKtuy!NVp&weh{>hMmYFBi*SmEaBS3arKu6tq7LXXh* zV`Yh|_F#O48?y!N9D}~ryXwE969_`-B}95JM_tc)=GsOj0=H8)Q?aNIGiz>_tva$% z^1ukZ>E4ZuF|C)Q`EKxu67`fdWU{- z_959CnFxK>4+^U@H%#lU==`mR8R3b%!!eB2Q;hCUtH+b*0a4Y4cdYfbrV8F>pDojX zU3nL0x)kKXxfIy^?jG!T!id}IIl_RtE@i!NsmPgRIjCZ#Cq`D98~rrDR91_T^VQvq zHDCC?W=rvUJ;dU}$#A~)PY(ECk_d;Er>#iyvcOQOD`05Z@Qn1@o>pM(^PKg<#-O`P z4oN)TbteIz6J{e@ySO+jqFTFK=R4NT?fc@@+yvoAGbAgVQrqF)xx7Ewo!xq#Qq9?u zP)z!n{?jPg1>O;!e)29N|LEdJ+;Eh`qff$|_27*k{Zd);TF#qal6lP3Tm1ZNH%7~E z+r(|ec;F3K)nZ4y>C|l&|L^;}a}ORZEdG#VF8!kJ_5}NO6A0-ez`{jN*X>Y21ceK; zA4H+L;oCF$U3F+1Z1xsluP1IIm29_?ykHlh;(oBWg#35qEw%92J1QkV8O&(UF>$pZT|C;L2m){1b!bOS z%*Aoa=h0L>f$C(2rry+dm?+3Legm>#B;IGow)iS?hk2Y*MqD%xLuy^xf+LUbnv?%(?Ll_VjTtCc+6x?kOGU)%LpnwjuKy`i*wM>S=%OFp)@ukR zmqgQnM(HBx@kbJF%V)l_5akG5ml5=^A~Cs(=lhE*WdZ4EA2GvH?wN9n`Gf~Ft(}Iw zghGg2*J29@U`6|J8hWI%}{nNQ#^!cO$gf!5W|8IdwC*d$q_R zzurd^bG>vpj*^>F2Qy5FK4R?PUDn#`Jf|J+IRCD~W?`ffh*C+-D@D2BBrvB9Q0}WwG zRBtOslI?x7UGpUu^EoP`=7eZ@6BQbST3*%`4Cp z44<-Ax-5L-je>Yp<@z%W>XVgmd;@1RcdfmmO3Ta+jrSB|U#hHY=Q0R8+{)b=RVx}Q zBC(3XE(d=>jM2AqR)bGBy_3c-d?{t^{JL$^7Q@l@lj`G**JD^6-#+QQ8Fcs5K$mC8 z-g2-irUc560$uB3OvXRfEVr?mX#UBlg6$*MSNZ}qYRza*>V1T(j;A2Dps=TB`&rSx{#{^P1v&i=Myt3+8~N>c&#aiLVllhbZ=Ms9Y!i zz@!@^QnJLPb&;P+;VMY~A*Ba18^FN#W?mpxkZ;ZP3*ARJT%!;d-j5G zb@FaX>J4t6vo)Fl7jds&nUMVR&3aJs8)RR` zW=L+keTf5k=95fPbLh&*{GlV4-^8cPM4XOxsOVgv8Ms&F&BRF@<9^OY(!PpWdJ*PR^?V zfBxaA9#Soqd(V>bP{qJU#yvzLKCW3}MK2gE>kZnmy^-TsftXoc+Nl`ZL&C9TN0M*J zJWB-LEVTx+Dfwy8msTs+W&A+RpIJ4Cf9af_!qDsrVEMkUOtWzcEH|9`@M}HP0CN{i zQ0KqO6*6e`@xcvVeAV&t>&qabLitYoO#TM1?q+;T4cYNUVouKpEMlfwtn!>#%4Ds` zrJH26O{&O|#VcKIlj=nu7UBom5KbET*baw^w^~qcm~US@#|vWpA^J*6ofL3aIEc|I z$b*JNo4YeY0ms?T1%S4jqR_o<{(|#)`28gj9&H#_4Pl7gzXDN;hw1+jrPvMfhhsz+ z!fv(kQZTf$dvRPQYFlRwrbha<>yy>eAFJp`^U`0Z`-YCH3*rJ09^{%4ONA2hg&^zF zTPdWjc@PvPmqWIlu8=mnQ(;C9ou*oG6rA~`pEY_(Ewe}8KUgYDtFoLT+F$dOg4tbq z>Fz?qkvdz0BknKsUjh}*(-SA^`IKN$6CzQgdK6RO^=%{4miV~nkx z?>x1QHcu-7r&{~SP{K>D0(Oz|{Vb@(k|o$@Q*P0$E0?TQ;Hs^E0~Q=R^n zv5qePk+Cv<3?TWtvUeGowS7MjGD-hBGf^!kZ+mX+$5$rZs4>Iy;u#qtYPGyv@o0l{ zrq)8J$nr?5iHp1EhZGC<2r9@EsbLAK!)1n}sXAD_)uV zckDhWxIr@@Q)4>afgx65L}v6 z@}+AjgMp(oizuWA%SQL@?GXQLs2(`0mCAH2Ot4lme^nYjxrrn)Rz0*1zASPw=(ooD z`#ciPr)NW>5j2PW){3~FW7Y(z0ViR5pVBmed5J9|ZDr4|vXky0UXS_|3wo7oh=@qI z(G>6dJ#kI3FHE1x^G2rMA!@iY##lZj=;^9NT95pggxcbs@026RAl9NEU*4Tiwliv3 zbTmCty+Kinac=YUg&~WMbZ4Ax9DxvjsZ{1B7_z>;{Wyu~R{B&y?~VEauD^0!`PjFr zmjkZJ*!?gA?aVt%p%J$A|m2(eNOzeX;PpV#>>(Uhk53EF6u#NCENg(?+l(1i7yG zNxWGcnW7zUsAd}ie;_4cSS|M2eH-HhHLD)|y7uZd`}%slW7^nXMbZ*i&Mkb5F80~d zXEP*toqT7l>gB$v7*WP{7jL5Xycn~eT`*#o$(p5HLf2^o)g6rSG#V8w_q)W{dHpv* zT03BDy{d-*cx>eYNtwiTiIYvSf-Dhc%W6yh`p9?iZ@N4Gm(V>B`d*UBxsCn(2`vi` z=oIMA$*d2H23S;}Mo%nkH@irHbeP3AEVk44&%9c>3CK6Ldh-4%SBb!sfHvSQ{yVO7 z0?aIe?j*($CG4B=Yk>iwhZzj{c8a!|4)#op7Erks#6^8o0&#iJ@5aTi`~9u_#AVu@ z_mWVAfgY0s9+t5q`4u)7*vi=&SX04}gO?# z@AE9Zl=nBS4yKQOFMI}Q(Zgw>hChA{O|4)LO*Nwl++F@PR%)MgADE97RZ%y8y$2?+ z?j05df!r^@!jJMM055jW!Df>>hD1LU=c$HuWXQt1$bOBff zn5Q%|hF6lQ;Q7^J)Bn&VtSCT_ES3II%=TGv^AymS?+8E>qP`aldyH}~h2DhTsW!w+ zoczMq1{WXAoXzC%CaKT1C4XJ=4t77+NGbJJ(8&5~s`1r1pl;K0;(+n<7p%f&NeDy- zYS8c+m>^fd(;;g>0K)GY!`EG=H_loygW`5>P7U@g{$s8huQ5EEi)7k0Y5GhCF(`Qeg zVT&+;YxI|#!Rp`T3|-K!UyiA$F%ABfd^@%sW8YdnymIbY{5u;9bU7QldU_h@3r1xa zjaIy`VESAvHk-XKNSC#w!y%BTLPZwf7vt-7D> zn_{#KAh&z@&Wx(RXjV8r&NU6z`{DSbym+-AwasU);2gfQLYC80KiRw}4&|dSk*vF? zxf-0@VBwQCee-@W8GRo2Ej-4*r>&wz^q7i=k{ZOMs|uy;3n}LWU1>2Z3gz>p+*7m( zmTXVQDac7ATde>;=LzCA|MGXG=XAfK?!e*m3Bh4<|E^VFN8aiF1!7N>q_sW4H)ibS zHhZoeSzAk4Xcr*Tas&2Oy|4SGf%%z(T)W`>=}F4NZ&Nb983RvulpplKX4_bqXmqSP zy`J}Z-{6^`X?&T`SavK_z)*+l<~xOVJjUUUX%m5yHt%UB4Mu4VzKb0%L~XjX$|lhA z$#C&>)(n{4=gYpyr}`MVdqpaU@~<>GZvUm29MA|ev?V>ES~#$b)<%&Pb}ASFE#rR~ zidt(89Zq!i4P>djSxUU)nX@k4k#dzd*BaYecwE%=NL|D${8Y7AUnT;Fe#MzbrFXuo zPQGn0^sIvQ+553LsmAyEK5U4bFH0`VdC%RLlfhj$uhEL7;q;lUIwBq{!$~QAqHG_D zi^U5W;D%!DKhT=@EGCor!}!;w;_K5-`^tLLOThF~IQeFwvO;R?ukLye0E*hgS<@pc zja9bbI71KD%)5TFEqvbFAY{QynSXj?O|#L>mf^Ai)05Z(n!Z zh&n}U2?KrUrzCKQqAeM9Ox~XLqrQP)5>RjH22;(9oinAl1w^I%(U_Od~07c225u1BrJ$2Ik8WQVn+fBE4Op9A>E44FQI ziEksvGN{gT^jD4E-W$C;6wcxwU-hC@Np+3&5A0o#UF;S$>%hf4d*wS_oWV2$) z9#%Aq8y|6aukXnBo^iK2IU6Z;boZy2q@qtY&BHli{QN+JJGV@Yvo>C48j1Z_BgNK& z#hhrnLy<3*c#;A$QIDU-?=KGp{9EcYLRCXNPi=$NUoOI!$5zi|K9B8D>jb>BA$pLImlS6%u~UJr^{5 zJ#nT6Z~ew54<5xPWrtn$hsP$xKUF%Wo41^oHeoiYHHpmk4Lv1A+yqH|%dQt*%5d?G z13JIY*WA0qJg^{dYaL zy^u@QJv8$~$uWfiHNuu)?o^5O)%0OS59PeB=?YKCj^Zc;wd=P&*RO-E&%J4z1u!I| zY5@8C8p3JydwVMPKA2-rRQqz~YsPD&&iO&E`N9hapVKs=>{Uxl`9?2zItL}c^vZVH zYdWV@tF&p_g5tKSaFV&wAhA(YPg{PA@zkqR5xvW$EpRuXUWK-A^kQ>=J74vv*1A;7 z_kfBuVZ08U@6JQD{WW^Dc@ezj3lq&S=jIubsD#CCj%EGdre$mFs6M z?c}7%<2#EjJdZ|AXBto+;$*7J-b!6|5qqyN{$x{ZqAmIig`U8I7n9w}Q~Zm)-qQ(% zAn`iRr*1WO415DQoyj!!)8zB572GG!u%jgps3BwtDg7Pc@ki5Bj3h<%uO9lL9wQm!zCjdy;Y{ zBQabvzp&YYDU1sYNXSSMyD!Yl*XXohz4XPAPLw$K^;VZ5T36Et4>gZtWS1AGT+3&b zz4KJ$@pq@Ch8G<%LnBF8EOc2Ia*};WKg<};ROZ=Ek5(mf{)GI!Y|a12+L^~g-TnQ4 zRMJW-NoYrfO7>;AB&{S#)~O`>zKmhUD3!WwmF&hSNo5OJhe3;-$vT!{Fc=Io7=xKH z`km2reedsmf3N$W`|AHJXh7jGM@Imh^ohz7K4J}fYP^_{&=h;$qOwcnYOwP^3R;G>+hyNVi<;=)I+xY zK^OB7lG2c&kN=#36+2wovAZoSCptBWdM{YZEcM8nmAz);eTS!e?;Z{PqdZ>L%jKH=O1hV$fkeLA^hKB>VMM@2y_H_zC$GpSFWaU7ZAYb zQ}IocQdaZLL06aw9q!^ixU_{sYr&SAt;^A|Gj+w(E3VBR3A6xad@rR1tY_0R}`&pN&)-=03pxMnGUUuI% zSS~r9EpE`!p#He6HZy<5YuK58gfQB=0Umt(k*1^tw{ZO<%@(i-{mj@X=9f2jTBjMD zs>E)lI0@G7ON+e_4n6w<=R)1jlo`_W(-N7pra1p4;!U3$xR-Y=gFv;LoF*vuP5OX= z2RU?2=W6!XKZ*BEn133e)~$~RqbAZ-HJTd!YJT*98YmbBKg6_A-`D~#<13ec!UujV zI-RPWm^(j+zzHHJj327(U)Vi<_!IJm;lf^y5`tQ>l01ikz}^xO&+zXt#EFPihX8S2 z*YeqRh;c{2fK@9@;sY@(+w!B8!y@e50{NB`?tMGJ8+D_;0-?t8g= zMnE^d57ud~`00SC5jg&r+VX<$S$ug}`b~7%A`lan&E93b^_#QAfgsgMBYh<~Mi22=ujDr(03aRx@7G26wBol&f$vnMHA zeKzd>v$3PIKr)A=Q6&Fv!|j`}X^zq0YHM*ALPC7(#voz+a@l?YT#!s^yBA^5x_X(_ zb?Os@)kT+CSW$DJZyJ(V&;diNdRC;y+_87H88wzIo{`btSHwqw>1zqqxrK!6zLxm<3AzYwS`HY-cl0*wwrC#n@pS|MN++30p_sK|SN zcwxUT7{l&~R~w6(H**g%BCw3d($j89#*_n#B~}4@v9zZruu(laTgMJnhQ4e*Ta;S- zf=!wqw$N3ulcE$D7jAo6hWzd&fsSdmQ)S9AreUjejX@j4e&a2VJH(SxmMS}aZU-Z& zt+>_Jb0V^DU9;Wl%LBE-9F7&4W>%==*IzNUPOU{0v_I!58skd2H!7h-YAw5$TIq?t z>>pIGD5iAH7Ai7Cwd6jZo_k~6p74cLHprM*jl_e9${YG-{C1PIGyeGP{*pbxngXDD z(O2qlA}Xd$sKKRbraVf0Q)-S0x4-*fC&yqU$;7>U_?Qm4`+OWbR7at#yBK+E>DrZ2 zqu=L1G$SChEO)kU$jG+*Hs#X(eM(}=p%wk@Y~T3dKpjCeb?2n)slcFC0qr^D1C#z{ zi~3E{CBIglG?{iu65n#)Hz3GYw8Jv$;ENTsh4|N3-i~gb)-y`(`Ql_aRyRt{%))9R z<0`AnZUxDn6fe^fV`$atSYW0Hwec_pihb9TFGxYkwh2#X%{Y_z7rdFhi#r{52d zXFW=84Zj0xrXe}&gy$+A`0klXKvG?rsD5IH>kRrfr zujMJH?U$%ca_QG(-TGc?9G^=>7969NlHBC-jrL4?#C1q*Y5L)p`d9n0_oGF|Zq&Z} z2LFzHKo{#WeHEw$DEXbYO0YkDPF-qti;#(9NzSttMTU$}t@@&YCbySNk_YAYqa)anC&fWBcABzsDXh&W!l{$TbT()^-$j4*j8Z-f*E%C_AB`1<+` zU^Uw?Rlq__KsWM2*>) z|8DN2lTkcX%Q2{Ur`9c$RI%3aSd+Qc#}SLyEfsR@fOYCY*BOz*x-jocycrb-W-v8% zZqITekc`afJX{n;<{42B<-3$L7YU~s`vJR9QLh8IZ~R6UC;za=9U#{-ras&uB>9i3 z!c#%Gzl-$zUAS`Um5mo-IP`)RU`Rw{9`4z$-CqABz?RZ~{cX6gc~gC|oMm2PVQU~W$WJ=W)y=sj&y;RwB(dVw_{->;bwjcS%hX}L8W;cCod?%%O00t)c-`(pv z^GjhO%=B2~rF`}kBkY!;cYvMmJLp4L5!c-cro;&O4eYDxhu+nNa{XPgVLp>%)z4$S=W30mdIkC&bn z@2)=U`@QDyX98C{rurRo>~-7m*SLO@k<}IrWp`HI{gb)nHc3TB4x&KOKD}{)1Qo_Dh=~q4WxL(Mc^b0$BLL_67R9u`5Y6(5s z2mY3LtTnN!q;0+B=ajRe%4Ry+V`)&b>iNR;o*7*TmZD>MG+Ew0NX*plXy)!M)DAO6 z(cyyGOr>-DIZOS#u-uvo$Kc0wU-{xwy!*b7)BRt=gkDe2zudJH-zIgL|E>YZz$Pnh z^4rzCt9=Rg7uv$u4nPw~%o;GBP?<@Q&T>h6mFx*w$mu{_%qBOK7q1WO!t>-W6OYb! zw9pQ%$v;?p`3Feyz4X0hS@WmA`((x)^&ES-=P1D@)9tU$ij2d@R(*AjqCE|Fuz}P( z5&J|4hRU|{eWB9yV@*k2FxkkllMd4oThuX7Z=$HI9-n01|CP{lXG3@tCJCqDYR#Jb z@B=~KO0_x(#rsfg;v0Z@ar4EM^1b!b5foij z^lWdd=c-NB_{$6iXxB}t<55Gy2X82_&#yjW)$TnI(W&eph4Q=mQst1d*C5J|S+5i2 zQ)eDLh^jL&pJJa-Bxn=-6;2VZqY{s8xIT@1x}Ih}4PX}+%f?1D2$MXm5UkUTkT&n9 za(k^Pv2@>*(B!v}Tb2vE^UH1pq;4GgsF500u|m7N)%|QuN0B%=8jRAGc5&5LR!P!I z^M4IdQ5^;uXsp&%Lhm%Y z>WmG>UvBDn6R7!WW+>r7F7czAjoMA_=lvhRd!elLu(M%_mcV zDrS*ssRGfps0bN2N(&7JDh6q_XUu&vak-Dv#@Z%p( zL6G1byf3X!GyNee_y6H^1JcDqLivw0JC+f1`U#NWbN|_l|6_?_(HbO8CLdK69ReI< z+t&rTp!U|r)0oyyET7uwJhOKM{adip70`}VtugoXSYqk82e7`us`~k9t_vAd<{aw! z%Ln$F^VQ3J4#1f}3|Jd(^GHV-db({xCJQy|*EZmbMf>-W6~_-RuiM^7CM{mT&1~)f z;`_Y%gw+03K2KxXVSm|!08pq0j)bs#IeEYk*5eP)%$%(Losfmx8UxG}6@HI<3V2rB z^W#2G84_kH4fXr-4?3nU+SXO;9QeRt)Q_eT#`Ge!UuCo$-YGQ+W#>*)skrGuEb;Wj6H<@Pl@5W@+Z5UehFIF%;>fL5o$`~q zH#mJF*HnntJ9}0XQy2eoV?a{hjIk>^sQtnhZ63T=*sv=qiguGd5RCjtQ zz1RdfnEd4kWMZI?p~?jlLTkx)b}W8{^@bo+AMPjG6t;2)oX|kSU)6dPuSz~JZEN?3F_=8*pzfL??1v~>S%f>>_jZBIEBH~|(Mp&-R=(Kr zr>A?3w*kV&a!D+lygFX{#l1=0M0MUSV|N{%l);coZ})vN4nN;&eB{|oGB(lJ{J@kk zn{CQS9*jlxv70iOi4vqYsWuh_f0jX~j5eg9pht&EYWp0lNVQJtU%)_@{F^HjoLb7E z%`;zh;7Ua{>7*N}J#tzMH~t&pKBHvS0vGH;JJ1WyNrn{mE$vpa)2Xl6wtP#Hpx;cp zNeR4Z%k(hb`%`te*L^>E%refBFc&d*Y{nx1HCSt9Ga8r!P7=YzNKtghRt_KTAVpFS zHkY@S5>+Nrc7A;*O&+z##EKbIZf%g@@f`IBP>XxTc!PDD7#ip@f4wIVO=xGK%M;p_ z>>VwFBU4A zm4!CWN^(-ePN{k{20I!K{uH;#0>hQdn@o1y{#Noy@PnbGMVa-Nnyfr?e~Alrf{2Qr zqawx9B|mg7YKLdEX{LA2zc|3vzTVH2BotTL1uvXm4Ol{7bSl^IMf8p#7FQ6B%z4fJ zEuos7h2c+V;iEZ9moIqAl%-07z@fVg^}ftFJve~&;%4Ara>?4Ph7~6)NL6^eAUh4Bmq+s?NIR61tEY-R|p9U$>eq{Qz1J&B$fOpFDE#&f8QQ zYr+WikdAug=~9X|`U%TmKIPkxKQIKE1h;DB2Qy2SE$}Dp2d{yp)uD(XvydY1Stt^s z_>-Y^o?IcDD+$t1RidAU`otz0w^O*y!lcr^w#3Dfm7^gm!g@Up;3@-pymYs8bvI@2 zy>Pl*c&amcb4q`*M7o2-8=o6Vxw=zl`s(0Bc9U80ZDZ~5cTI7gQg2a)oU&6;v^~py ze0%3I_iHIJGP<=v`}vGt%qvHdyA1Wq7IkcU4F7sw>_9X7_3wz$vfE ztlc#qyyJJ$>C)ZdNX|wXcslb&f4HP^RJ-8l?yUr!eCC)up^&NwM`vtliU_>*LgBmz z(-64R411&of=RwMdu%|4V~2DJY3*m-pl|v(8O$IE3Y>#?{W2Oa7yOw4_`~DwhUUdp zZdQEg+xYa_<$(;4DN#4TBO0Zz%9NfA2&7m%UNV1=HGtdL(wSq51Y9dDxBYB-YFA@8 zE;r)<+6WKcvn*JI;C-YP3cFgPZJzcS^owx);t<{6M;k=_GbYZPXrWA}IB#fYcM zffqEQi0t$MX7ATbbxG+qoNT6aw3)%AE_dubL!T{)zBcU!(3D(oCP;{C1 zx^*g3y=GM1vkIQaybf@7nlcM#)802ZUX@tscH^{SaYjAtmrgT2hgx%*tL91)OBfw~ zhe+75)Fr>e%?!VD82d8tgBx? z*42gC*X!3+g|gq~(y za0ysST#6=SM4eLy?!dqe)|}RNYo!0-O_7MVrO~JVw_}$wq zhoHWOIo@>u9jrOGG=xD9X58X$n6R=OX0$ z2Lc>qEz?p3AU|J9s{r{;2wzpWpjeG^L{C@*@{X1kJ|}65SU(Ef2+=kC2dNFeU)0{S zl#RyEBtq~1I5Mji4L(|}dtFDlh!1s?lOnC|`ZkraHWJ0m}D4zn>vt zi!FIs;&h+h7Pb~am+tus^r7we8}#AT_g!t%LarV#6T$HGXYiY=2Q=s~EtlI6Ns`+R~nc5*0hNep?GBb>^aFbTiE}S%FJa{ zg=wxu$<-PEhWOC_@b47i^f|wLT>##f1NLoyX=1i_GiKMobF{D(f^GWpFFtwh3#{X@ zJV8_W4~k+Lvw-d z14ni{$Vt`&?+~qXi6z`Wf8TAa&iq8CwWyWUOkF4usnOmuR`mLbkp$Y@mA)!WHSQ#| zY2k;06b7QTGvObG%YCkYhH5_#_v|9X)S2IcHuY;lhGafyk(Fz8r~@7((grPE3hmw@ zw>hC|re9yxclXiztB>-2263Azf@Lq3jMcG5qg-;__qBI3JfDCo#o3|Opa#lA4+)K& zWHk8=T(ni-m|@Zr*}80$tvG2;l5wVr-@+2>2)iW>BdzB7z@}#lha!jMnqKiNs2&F} zH4$tjb6v{)*(0~$!dn)_6k}qut{NYJS@2GIFaQYsEnn4HWoCE8xMm&C8EJFsdmbBt z4725m`PfV@tE2Yd^?{6Jf%E1s!tl5R(SGm;x$ME3pj)Fdldq%6^A{hdP5hC$z5leA^w_-B^eW z{4wajo{K#pCzeR?LXCV~#j|{ybFCNhCs7{>hgli-(P139Xnj9q!8G7>gsTk)4*kXH zcytqRI%p1egM=U}M`^c5Fy@#qkp`fcFuxfQCK)0Ot`!c95RnkPKCp%@Pc0Vn87o>S z7Oo}<61o9pwlY}unrelP2Sr}pTk>WmY%t`@iuU680c-FtI$EVZE4h|h@KcL%*IsGI zqIWlza86MlX;(~0LN{W_UksLZ*O`C%V0~EY;YKstKP(V|0qZ4(IZknKwGSpcT;(no z%3bU~T54(w4JXKhC#4RW7{(4oLo7t)e?7sbVUJtDVlL{J7 zS4?0!ZpWk+t9v0c8XJ#YkS;0oVM@ZhLcUg3f&1hU>h%+UBSUtQ)J>q_ePCXOS=7C} zLOt4dw^@uifUq_-j^>Q-1~&1)>HZSV7BY*}UQ!J7f|up0%nW`K(7FN8Aq$-0PqZj@ zNgL63ki5-sJqT8YtIB+`@7FwiEBdEfhvi*N-N*U8RI5>fl_S&(sWfmqX3+|X%(&cS ze@t5JfDB=S-S9N&ZH)k7&YrF~w#;vtT&9w})r(>SPwG|PDJL)~rQiR}=HO4rcQ%Tk zU@w>}hBD1fDBMTna*AA!(fFQUu4v#a?U1J#hpm5s-CZ#Q{3BK@Y9yUfzOcHj(Mo}(vzCiwR|G`q9^56%>aA0Kv z${cW!Y_XPpP^AQHKzCF<6_}OOn1S6Rax%Nuh1df885o|+9XYB+{{iEG0{4o2Pg!S7 z(+i{&veP5KW%|D1P0u0rXBp3d`F%=^DYxw z+566I2dS(e_;?X$hX}viBAHwOgfF^d!CwzilSHdySiM!&c=`t4j~#QB{8w_IK!xuy zI8ZCUy$O(in1({|FV!k$W6@)@549fj?JK!Mqv^!e0@HCzqXEX; znD-Og-+%5`swwR9l0)|~cwgtd!e-r+&6WUSvy=4k?{;KUt`@O#rF^28<-j3>V}iq~ z&D*3ymQ{c+sdLM5=5dQ5lfbpMToC_6(_BLe!I48+5IxfJCk2ZKu`Y0;zFiZn!WN4XC41ehU$ zWB1Od&1f}xx3S}qH5fP8l+uxU-w#)wa0{cay{LP0TyxPYOh#`wke(h5Z%(-%J8eu< zRtFg0=mlPEH=%t|7_xi`5Lq$I?LJ!f?rvDKsWxmuOVD>$OY%KOT~KVh=~^xOfXSj= z99b=^I!e$a>ze^l(n<&6O*H~zSUc3}zLP{Lot3cNBdomVq}s@?+i8P9-5t<$>9yUg z+BakPbQM?l09nV)D3m{|*<-sj(3B<=saz*wm4}GRxsSdDaHHCjz3QnFzzV~=E2yOq z^X-gnA=C^XB*w^l7o5s}%dq!=2L_hf^9SX2fVGfkl_>9gpLL?(UXVs3Re{W|_*QqL znhusWKccYq9=J=Ib^nNL;UhCvOn^N5)}Z}qBix?~s~$RS!<5UK4PO8hBWg5wtV6I? z=Z9{cp;UhnAn`=R`k6Gp;T>_YNm0b-#qU6!& zvyo;{IMpOmwc}!7(3!T@+tbWS&FDIg_rU5?c0-~~`4(Cpdg z30oFm$|XtTq;(jVT=iWY0)bKm{ilaqSkd5SN)wB1!;fW=*b6|#y$ws`^29U!=*jtf zNy>Xa;evM(P==V#&NR$ZXsH%o%EGy76(n}NPiyvv1~#nT7pF5R#^)V>B1^C9Qa(W5 z?ksOzZvl&VALFwrJ<`~&pTe(&0>)5zpoCCiN*ol*WY!oAxLA+lf;MwsZ#~iaWgT

wKdj0`nVD9D+AyFn16F_cC`N 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 JKH`1zKLAd!XGQ=3 From 3ae274271719effac56ba4e9ff6b1c8a68a9b7d6 Mon Sep 17 00:00:00 2001 From: Bezalel Brandwine Date: Tue, 12 Oct 2021 10:05:55 +0300 Subject: [PATCH 13/19] rmove workflow dependency --- .github/workflows/master_pr_checks.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/master_pr_checks.yaml b/.github/workflows/master_pr_checks.yaml index 84853948..ff96fd7a 100644 --- a/.github/workflows/master_pr_checks.yaml +++ b/.github/workflows/master_pr_checks.yaml @@ -7,7 +7,6 @@ on: jobs: build: name: Create cross-platform build - needs: once runs-on: ${{ matrix.os }} strategy: matrix: From cde5b83bca0008cf4bc89b46e01c09698049270a Mon Sep 17 00:00:00 2001 From: dwertent Date: Tue, 12 Oct 2021 10:26:30 +0300 Subject: [PATCH 14/19] update summary --- docs/summary.png | Bin 63733 -> 63309 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/summary.png b/docs/summary.png index c21306b27a30417bdd2c86865da1455462790f32..72007f72ee90bfe821db8fe0d9fa4911711fcba1 100644 GIT binary patch literal 63309 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 z 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 E6M35nLjV8( literal 63733 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 OJLu}}Qu9sF_x}LQ=@UEv From c1b4d7de399f5f638419bf111295b78c186f2fde Mon Sep 17 00:00:00 2001 From: yiscah Date: Tue, 12 Oct 2021 10:48:46 +0300 Subject: [PATCH 15/19] add controlID field, 'id' to be deprecated --- cautils/opapolicy/datastructures.go | 6 ++++-- opaprocessor/processorhandler.go | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cautils/opapolicy/datastructures.go b/cautils/opapolicy/datastructures.go index 30c031ab..ee36c234 100644 --- a/cautils/opapolicy/datastructures.go +++ b/cautils/opapolicy/datastructures.go @@ -41,7 +41,8 @@ type FrameworkReport struct { } type ControlReport struct { armotypes.PortalBase `json:",inline"` - ControlID string `json:"id"` + Control_ID string `json:"id,omitempty"` // to be Deprecated + ControlID string `json:"controlID"` Name string `json:"name"` RuleReports []RuleReport `json:"ruleReports"` Remediation string `json:"remediation"` @@ -101,7 +102,8 @@ type PolicyRule struct { // Control represents a collection of rules which are combined together to single purpose type Control struct { armotypes.PortalBase `json:",inline"` - ControlID string `json:"id"` + Control_ID string `json:"id,omitempty"` // to be Deprecated + ControlID string `json:"controlID"` CreationTime string `json:"creationTime"` Description string `json:"description"` Remediation string `json:"remediation"` diff --git a/opaprocessor/processorhandler.go b/opaprocessor/processorhandler.go index 78c2f6a4..44f059d5 100644 --- a/opaprocessor/processorhandler.go +++ b/opaprocessor/processorhandler.go @@ -126,6 +126,7 @@ func (opap *OPAProcessor) processControl(control *opapolicy.Control) (*opapolicy controlReport := opapolicy.ControlReport{} controlReport.PortalBase = control.PortalBase controlReport.ControlID = control.ControlID + controlReport.Control_ID = control.Control_ID // TODO: delete when 'id' is deprecated controlReport.Name = control.Name controlReport.Description = control.Description From afc7f85460b99e4fbae61cb48e8cb42d2df19a7a Mon Sep 17 00:00:00 2001 From: dwertent Date: Tue, 12 Oct 2021 12:39:26 +0300 Subject: [PATCH 16/19] adding demo link to readme --- README.md | 2 +- cautils/customerloader.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 023b0c88..40ba8018 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ kubescape scan framework nsa --exclude-namespaces kube-system,kube-public --subm kubescape scan framework mitre --exclude-namespaces kube-system,kube-public --submit ``` -* Scan local `yaml`/`json` files before deploying +* Scan local `yaml`/`json` files before deploying. [Take a look at the demonstration](https://youtu.be/Ox6DaR7_4ZI) ``` kubescape scan framework nsa *.yaml ``` diff --git a/cautils/customerloader.go b/cautils/customerloader.go index 2c23dde7..2795d800 100644 --- a/cautils/customerloader.go +++ b/cautils/customerloader.go @@ -130,6 +130,7 @@ func NewClusterConfig(k8s *k8sinterface.KubernetesApi, backendAPI getter.IBacken return &ClusterConfig{ k8s: k8s, backendAPI: backendAPI, + configObj: &ConfigObj{}, defaultNS: k8sinterface.GetDefaultNamespace(), } } From 6eded41eee7f6dba820ce7f4f2960b2c54cbd1a0 Mon Sep 17 00:00:00 2001 From: Daniel-GrunbergerCA Date: Tue, 12 Oct 2021 17:08:03 +0300 Subject: [PATCH 17/19] fix number of resources --- cautils/opapolicy/datastructuresmethods.go | 6 +++--- resultshandling/printer/printresults.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cautils/opapolicy/datastructuresmethods.go b/cautils/opapolicy/datastructuresmethods.go index 57a499e8..56835967 100644 --- a/cautils/opapolicy/datastructuresmethods.go +++ b/cautils/opapolicy/datastructuresmethods.go @@ -124,9 +124,9 @@ func (ruleReport *RuleReport) GetNumberOfFailedResources() int { sum := 0 for i := len(ruleReport.RuleResponses) - 1; i >= 0; i-- { if ruleReport.RuleResponses[i].GetSingleResultStatus() == "failed" { - if !ruleReport.DeleteIfRedundantResponse(&ruleReport.RuleResponses[i], i) { - sum++ - } + //if !ruleReport.DeleteIfRedundantResponse(&ruleReport.RuleResponses[i], i) { + sum += len(ruleReport.RuleResponses[i].AlertObject.K8SApiObjects) + //} } } return sum diff --git a/resultshandling/printer/printresults.go b/resultshandling/printer/printresults.go index d77eb565..b5d255a1 100644 --- a/resultshandling/printer/printresults.go +++ b/resultshandling/printer/printresults.go @@ -107,7 +107,7 @@ func (printer *Printer) SummarySetup(postureReport *opapolicy.PostureReport) { printer.summary[cr.Name] = ControlSummary{ TotalResources: cr.GetNumberOfResources(), - TotalFailed: cr.GetNumberOfFailedResources(), + TotalFailed: len(workloadsSummary), TotalWarnign: cr.GetNumberOfWarningResources(), WorkloadSummary: mapResources, Description: cr.Description, From b444542f4d34fd198439af4ed2c2a2c784e2c2b9 Mon Sep 17 00:00:00 2001 From: dwertent Date: Tue, 12 Oct 2021 17:40:56 +0300 Subject: [PATCH 18/19] update flag to keep-local --- README.md | 4 ++-- cautils/customerloader.go | 10 +++++----- cmd/framework.go | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 40ba8018..ba65ee9c 100644 --- a/README.md +++ b/README.md @@ -78,8 +78,8 @@ Set-ExecutionPolicy RemoteSigned -scope CurrentUser | `--use-from` | | Load local framework object from specified path. If not used will download latest | | `--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 | -| `--submit` | `false` | If set, Kubescape will send scan results to Armo management portal to allow users to control exceptions and maintain chronological scan results. By default the results are not sent | `true`/`false`| -| `--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`| +| `--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`| | `--account` | | Armo portal account ID. Default will load account ID from configMap or config file | | ## Usage & Examples diff --git a/cautils/customerloader.go b/cautils/customerloader.go index 2795d800..0eef7348 100644 --- a/cautils/customerloader.go +++ b/cautils/customerloader.go @@ -111,7 +111,7 @@ func (c *EmptyConfig) GetK8sAPI() *k8sinterface.KubernetesApi { return nil } func (c *EmptyConfig) GetDefaultNS() string { return k8sinterface.GetDefaultNamespace() } func (c *EmptyConfig) GetBackendAPI() getter.IBackend { return nil } // TODO: return mock obj func (c *EmptyConfig) GenerateURL() { - message := fmt.Sprintf("If you wish to submit your cluster so you can control exceptions and maintain chronological scan results, please run Kubescape with the `--submit` flag or sign-up here: https://%s", getter.ArmoFEURL) + message := fmt.Sprintf("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 registering here: https://%s", getter.ArmoFEURL) InfoTextDisplay(os.Stdout, message+"\n") } @@ -140,15 +140,16 @@ func (c *ClusterConfig) GetDefaultNS() string { return c.defau func (c *ClusterConfig) GetBackendAPI() getter.IBackend { return c.backendAPI } func (c *ClusterConfig) GenerateURL() { + u := url.URL{} u.Scheme = "https" u.Host = getter.ArmoFEURL if c.configObj == nil { return } + message := fmt.Sprintf("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 registering here: %s", u.String()) if c.configObj.CustomerAdminEMail != "" { - msgStr := fmt.Sprintf("To view all controls and get remediation's ask access permissions to %s from %s", u.String(), c.configObj.CustomerAdminEMail) - InfoTextDisplay(os.Stdout, msgStr+"\n") + InfoTextDisplay(os.Stdout, message+"\n") return } u.Path = "account/sign-up" @@ -157,8 +158,7 @@ func (c *ClusterConfig) GenerateURL() { q.Add("customerGUID", c.configObj.CustomerGUID) u.RawQuery = q.Encode() - fmt.Println("To view all controls and get remediation's visit:") - InfoTextDisplay(os.Stdout, u.String()+"\n") + InfoTextDisplay(os.Stdout, message+"\n") } diff --git a/cmd/framework.go b/cmd/framework.go index 10095582..6ac188a6 100644 --- a/cmd/framework.go +++ b/cmd/framework.go @@ -95,9 +95,9 @@ func init() { frameworkCmd.Flags().StringVarP(&scanInfo.Output, "output", "o", "", "Output file. Print output to file and not stdout") frameworkCmd.Flags().BoolVarP(&scanInfo.Silent, "silent", "s", false, "Silent progress messages") frameworkCmd.Flags().Uint16VarP(&scanInfo.FailThreshold, "fail-threshold", "t", 0, "Failure threshold is the percent bellow which the command fails and returns exit code 1") - frameworkCmd.Flags().BoolVarP(&scanInfo.DoNotSendResults, "results-locally", "", false, "Deprecated. Please use `--local` instead") - frameworkCmd.Flags().BoolVarP(&scanInfo.Submit, "submit", "", false, "Use this flag if you wish to send your Kubescape results to Armo backend to control exceptions and maintain chronological scan results. By default the results are not submitted") - frameworkCmd.Flags().BoolVarP(&scanInfo.Local, "local", "", false, "If you do not want your Kubescape results reported to Armo backend. Use this flag if you ran with the `--submit` flag in the past and you do not want to submit your current scan results") + frameworkCmd.Flags().BoolVarP(&scanInfo.DoNotSendResults, "results-locally", "", false, "Deprecated. Please use `--keep-local` instead") + frameworkCmd.Flags().BoolVarP(&scanInfo.Submit, "submit", "", false, "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 submitted") + frameworkCmd.Flags().BoolVarP(&scanInfo.Local, "keep-local", "", false, "If you do not want your Kubescape results reported to Armo backend. Use this flag if you ran with the `--submit` flag in the past and you do not want to submit your current scan results") frameworkCmd.Flags().StringVarP(&scanInfo.Account, "account", "", "", "Armo portal account ID. Default will load account ID from configMap or config file") } @@ -187,11 +187,11 @@ func (clihandler *CLIHandler) Scan() error { func flagValidation() { if scanInfo.DoNotSendResults { - fmt.Println("Deprecated. Please use `--local` instead") + fmt.Println("Deprecated. Please use `--keep-local` instead") } if scanInfo.Submit && scanInfo.Local { - fmt.Println("You can use `local` or `submit`, but not both") + fmt.Println("You can use `keep-local` or `submit`, but not both") os.Exit(1) } if 100 < scanInfo.FailThreshold { From 512a1a806e51065cff4cabd914acb7ba91e8eb36 Mon Sep 17 00:00:00 2001 From: Daniel-GrunbergerCA Date: Tue, 12 Oct 2021 18:12:49 +0300 Subject: [PATCH 19/19] fix warning numbers of resources --- resultshandling/printer/printresults.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resultshandling/printer/printresults.go b/resultshandling/printer/printresults.go index b5d255a1..e652e60e 100644 --- a/resultshandling/printer/printresults.go +++ b/resultshandling/printer/printresults.go @@ -107,7 +107,7 @@ func (printer *Printer) SummarySetup(postureReport *opapolicy.PostureReport) { printer.summary[cr.Name] = ControlSummary{ TotalResources: cr.GetNumberOfResources(), - TotalFailed: len(workloadsSummary), + TotalFailed: len(workloadsSummary) - cr.GetNumberOfWarningResources(), TotalWarnign: cr.GetNumberOfWarningResources(), WorkloadSummary: mapResources, Description: cr.Description,