Compare commits

..

1 Commits

Author SHA1 Message Date
David Wertenteil
0e5b9f7dd1 Merge 90052ad9e3 into 35c7b16e4a 2021-10-07 17:07:06 +03:00
20 changed files with 46 additions and 102 deletions

View File

@@ -35,7 +35,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
go-version: 1.16
- name: Build
env:
RELEASE: v1.0.${{ github.run_number }}

View File

@@ -19,7 +19,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
go-version: 1.16
- name: Build
env:
RELEASE: v1.0.${{ github.run_number }}

View File

@@ -17,8 +17,6 @@ curl -s https://raw.githubusercontent.com/armosec/kubescape/master/install.sh |
[Install on windows](#install-on-windows)
[Install on macOS](#install-on-macos)
## Run:
```
kubescape scan framework nsa --exclude-namespaces kube-system,kube-public
@@ -57,12 +55,6 @@ Note: if you get an error you might need to change the execution policy (i.e. en
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
```
## Install on macOS
```
brew tap armosec/kubescape
brew install kubescape
```
## Flags
| flag | default | description | options |
@@ -168,7 +160,7 @@ variables in this script:
## Build using go
Note: development (and the release process) is done with Go `1.17`
Note: development (and the release process) is done with Go `1.16`
1. Clone Project
```

View File

@@ -1,4 +1,4 @@
FROM golang:1.17-alpine as builder
FROM golang:1.16-alpine as builder
ENV GOPROXY=https://goproxy.io,direct
ENV GO111MODULE=on

View File

@@ -3,7 +3,7 @@ package apis
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"net/http"
)
@@ -66,7 +66,7 @@ func BEHttpRequest(loginobj *LoginObject, beURL,
return nil, fmt.Errorf("Error #%v Due to: %v", resp.StatusCode, resp.Status)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}

View File

@@ -4,7 +4,7 @@ import (
"bytes"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"strings"
)
@@ -57,7 +57,7 @@ func (r *BackendConnector) Login() error {
return err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("unable to read login response")
}
@@ -120,7 +120,7 @@ func (r *BackendConnector) HTTPSend(httpverb string,
return nil, fmt.Errorf("Error #%v Due to: %v", resp.StatusCode, resp.Status)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}

View File

@@ -2,10 +2,11 @@ package apis
import (
"bytes"
"io"
"net/http"
"time"
"io/ioutil"
oidc "github.com/coreos/go-oidc"
uuid "github.com/satori/go.uuid"
@@ -230,7 +231,7 @@ func BELogin(loginDetails *CustomerLoginDetails, login string, cfg string) (*BEL
return nil, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}

View File

@@ -3,6 +3,7 @@ package cautils
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"strings"
@@ -153,7 +154,7 @@ func LoadConfig(configPath string, loadToEnv bool) (*ClusterConfig, error) {
configPath = "/etc/config/clusterData.json"
}
dat, err := os.ReadFile(configPath)
dat, err := ioutil.ReadFile(configPath)
if err != nil || len(dat) == 0 {
return nil, fmt.Errorf("Config empty or not found. path: %s", configPath)
}

View File

@@ -4,6 +4,7 @@ import (
"context"
"encoding/json"
"fmt"
"io/ioutil"
"net/url"
"os"
"strings"
@@ -72,12 +73,12 @@ func NewClusterConfig(k8s *k8sinterface.KubernetesApi, armoAPI *getter.ArmoAPI)
}
}
func createConfigJson() {
os.WriteFile(getter.GetDefaultPath(ConfigFileName+".json"), nil, 0664)
ioutil.WriteFile(getter.GetDefaultPath(ConfigFileName+".json"), nil, 0664)
}
func update(configObj *ConfigObj) {
os.WriteFile(getter.GetDefaultPath(ConfigFileName+".json"), configObj.Json(), 0664)
ioutil.WriteFile(getter.GetDefaultPath(ConfigFileName+".json"), configObj.Json(), 0664)
}
func (c *ClusterConfig) GenerateURL() {
u := url.URL{}
@@ -125,7 +126,7 @@ func (c *ClusterConfig) GetValueByKeyFromConfigMap(key string) (string, error) {
}
func GetValueFromConfigJson(key string) (string, error) {
data, err := os.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json"))
data, err := ioutil.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json"))
if err != nil {
return "", err
}
@@ -140,7 +141,7 @@ func GetValueFromConfigJson(key string) (string, error) {
}
func SetKeyValueInConfigJson(key string, value string) error {
data, err := os.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json"))
data, err := ioutil.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json"))
if err != nil {
return err
}
@@ -156,7 +157,7 @@ func SetKeyValueInConfigJson(key string, value string) error {
return err
}
return os.WriteFile(getter.GetDefaultPath(ConfigFileName+".json"), newData, 0664)
return ioutil.WriteFile(getter.GetDefaultPath(ConfigFileName+".json"), newData, 0664)
}
@@ -250,7 +251,7 @@ func (c *ClusterConfig) existsConfigMap() bool {
}
func existsConfigJson() bool {
_, err := os.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json"))
_, err := ioutil.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json"))
return err == nil
@@ -299,7 +300,7 @@ func (c *ClusterConfig) updateConfigData(configMap *corev1.ConfigMap) {
}
}
func loadConfigFromFile() (*ConfigObj, error) {
dat, err := os.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json"))
dat, err := ioutil.ReadFile(getter.GetDefaultPath(ConfigFileName + ".json"))
if err != nil {
return nil, err
}

View File

@@ -3,7 +3,7 @@ package getter
import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"github.com/armosec/kubescape/cautils/opapolicy"
@@ -56,7 +56,7 @@ func (drp *DownloadReleasedPolicy) setURL(frameworkName string) error {
return fmt.Errorf("failed to download file, status code: %s", resp.Status)
}
body, err := io.ReadAll(resp.Body)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("failed to read response body from '%s', reason: %s", latestReleases, err.Error())
}

View File

@@ -3,7 +3,7 @@ package getter
import (
"encoding/json"
"fmt"
"os"
"io/ioutil"
"strings"
"github.com/armosec/kubescape/cautils/armotypes"
@@ -29,7 +29,7 @@ func NewLoadPolicy(filePath string) *LoadPolicy {
func (lp *LoadPolicy) GetFramework(frameworkName string) (*opapolicy.Framework, error) {
framework := &opapolicy.Framework{}
f, err := os.ReadFile(lp.filePath)
f, err := ioutil.ReadFile(lp.filePath)
if err != nil {
return nil, err
}
@@ -44,7 +44,7 @@ func (lp *LoadPolicy) GetFramework(frameworkName string) (*opapolicy.Framework,
func (lp *LoadPolicy) GetExceptions(customerGUID, clusterName string) ([]armotypes.PostureExceptionPolicy, error) {
exception := []armotypes.PostureExceptionPolicy{}
f, err := os.ReadFile(lp.filePath)
f, err := ioutil.ReadFile(lp.filePath)
if err != nil {
return nil, err
}

View File

@@ -5,7 +5,7 @@ import (
"encoding/base64"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"net/url"
"strings"
@@ -105,7 +105,7 @@ func getAzureAADAccessToken() (string, error) {
}
// Pull out response body
responseBytes, err := io.ReadAll(resp.Body)
responseBytes, err := ioutil.ReadAll(resp.Body)
defer resp.Body.Close()
if err != nil {
return "", fmt.Errorf("reading response body : %v", err)
@@ -173,7 +173,7 @@ func excahngeAzureAADAccessTokenForACRRefreshToken(registry, tenantID, azureAADA
}
// Pull out response body
responseBytes, err := io.ReadAll(resp.Body)
responseBytes, err := ioutil.ReadAll(resp.Body)
defer resp.Body.Close()
if err != nil {
return "", fmt.Errorf("reading response body : %v", err)

View File

@@ -37,7 +37,7 @@ func NewKubernetesApiMock() *KubernetesApi {
// } else {
// bla, _ := json.Marshal(clientResource)
// // t.Errorf("BearerToken: %v", *K8SConfig)
// // os.WriteFile("bla.json", bla, 777)
// // ioutil.WriteFile("bla.json", bla, 777)
// t.Errorf("clientResource: %s", string(bla))
// }
// }

View File

@@ -3,6 +3,7 @@ package resources
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
@@ -93,7 +94,7 @@ func LoadRegoFiles(dir string) map[string]string {
// Compile the module. The keys are used as identifiers in error messages.
filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err == nil && strings.HasSuffix(path, ".rego") && !info.IsDir() {
content, err := os.ReadFile(path)
content, err := ioutil.ReadFile(path)
if err != nil {
glog.Errorf("LoadRegoFiles, Failed to load: %s: %v", path, err)
} else {

View File

@@ -4,6 +4,7 @@ import (
"flag"
"fmt"
"io"
"io/ioutil"
"os"
"strings"
@@ -55,7 +56,7 @@ var frameworkCmd = &cobra.Command{
if len(args[1:]) == 0 || args[1] != "-" {
scanInfo.InputPatterns = args[1:]
} else { // store stout to file
tempFile, err := os.CreateTemp(".", "tmp-kubescape*.yaml")
tempFile, err := ioutil.TempFile(".", "tmp-kubescape*.yaml")
if err != nil {
return err
}

View File

@@ -3,7 +3,7 @@ package cmd
import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"net/http"
"github.com/spf13/cobra"
@@ -32,7 +32,7 @@ func GetLatestVersion() (string, error) {
return "", fmt.Errorf("failed to download file, status code: %s", resp.Status)
}
body, err := io.ReadAll(resp.Body)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", fmt.Errorf("failed to read response body from '%s', reason: %s", latestVersion, err.Error())
}

56
go.mod
View File

@@ -1,6 +1,6 @@
module github.com/armosec/kubescape
go 1.17
go 1.16
require (
github.com/aws/aws-sdk-go v1.40.30
@@ -28,57 +28,3 @@ require (
k8s.io/client-go v0.22.1
sigs.k8s.io/controller-runtime v0.9.6
)
require (
cloud.google.com/go v0.81.0 // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.18 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.13 // indirect
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
github.com/Azure/go-autorest/logger v0.2.1 // indirect
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
github.com/OneOfOne/xxhash v1.2.8 // indirect
github.com/bytecodealliance/wasmtime-go v0.28.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/evanphx/json-patch v4.11.0+incompatible // indirect
github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect
github.com/ghodss/yaml v1.0.0 // indirect
github.com/go-logr/logr v0.4.0 // indirect
github.com/gobwas/glob v0.2.3 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/go-cmp v0.5.5 // indirect
github.com/google/gofuzz v1.1.0 // indirect
github.com/googleapis/gnostic v0.5.5 // indirect
github.com/imdario/mergo v0.3.12 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/json-iterator/go v1.1.11 // indirect
github.com/mattn/go-colorable v0.1.8 // indirect
github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 // indirect
github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
github.com/yashtewari/glob-intersection v0.0.0-20180916065949-5c77d914dd0b // indirect
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect
golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect
golang.org/x/text v0.3.6 // indirect
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.26.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/square/go-jose.v2 v2.2.2 // indirect
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
k8s.io/klog/v2 v2.9.0 // indirect
k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e // indirect
k8s.io/utils v0.0.0-20210722164352-7f3ee0f31471 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect
sigs.k8s.io/yaml v1.2.0 // indirect
)

View File

@@ -4,6 +4,7 @@ import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
@@ -130,7 +131,7 @@ func loadFiles(filePaths []string) ([]k8sinterface.IWorkload, []error) {
}
func loadFile(filePath string) ([]byte, error) {
return os.ReadFile(filePath)
return ioutil.ReadFile(filePath)
}
func readFile(fileContent []byte, fileFromat FileFormat) ([]k8sinterface.IWorkload, []error) {

View File

@@ -3,7 +3,7 @@ package score
import (
"encoding/json"
"fmt"
"os"
"io/ioutil"
"strings"
appsv1 "k8s.io/api/apps/v1"
@@ -157,7 +157,7 @@ func getPostureFrameworksScores(weightPath string) map[string]map[string]Control
weightPath = weightPath + "/"
}
frameworksScoreMap := make(map[string]map[string]ControlScoreWeights)
dat, err := os.ReadFile(weightPath + "frameworkdict.json")
dat, err := ioutil.ReadFile(weightPath + "frameworkdict.json")
if err != nil {
return nil
}
@@ -174,7 +174,7 @@ func getPostureResourceScores(weightPath string) map[string]float32 {
weightPath = weightPath + "/"
}
resourceScoreMap := make(map[string]float32)
dat, err := os.ReadFile(weightPath + "resourcesdict.json")
dat, err := ioutil.ReadFile(weightPath + "resourcesdict.json")
if err != nil {
return nil
}

View File

@@ -2,7 +2,7 @@ package score
import (
"encoding/json"
"os"
"io/ioutil"
"strings"
k8sinterface "github.com/armosec/kubescape/cautils/k8sinterface"
@@ -12,7 +12,7 @@ import (
func loadResourcesMock() []map[string]interface{} {
resources := make([]map[string]interface{}, 0)
dat, err := os.ReadFile("resourcemocks.json")
dat, err := ioutil.ReadFile("resourcemocks.json")
if err != nil {
return resources
@@ -51,7 +51,7 @@ func getResouceByType(desiredType string) map[string]interface{} {
func loadFrameworkMock() *opapolicy.FrameworkReport {
report := &opapolicy.FrameworkReport{}
dat, err := os.ReadFile("frameworkmock.json")
dat, err := ioutil.ReadFile("frameworkmock.json")
if err != nil {
return report