From 69eb1fb70c1d2ddaa09fe11fcfc222bdc6bf46a8 Mon Sep 17 00:00:00 2001 From: koba Date: Wed, 10 May 2023 10:11:25 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D1=81reated=20root=20Makefile=20and=20dele?= =?UTF-8?q?ted=20info=20with=20DB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 88 +++------------ README.md | 100 +++--------------- .../database-to-integrity-sum/Chart.yaml | 12 --- .../charts/postgresql-12.1.14.tgz | Bin 58288 -> 0 bytes .../templates/secrets.yaml | 17 --- .../database-to-integrity-sum/values.yaml | 72 ------------- helm-charts/demo-apps-to-monitor/values.yaml | 4 - integrity-mutator | 2 +- integrity-sum | 2 +- 9 files changed, 35 insertions(+), 262 deletions(-) delete mode 100644 helm-charts/database-to-integrity-sum/Chart.yaml delete mode 100644 helm-charts/database-to-integrity-sum/charts/postgresql-12.1.14.tgz delete mode 100644 helm-charts/database-to-integrity-sum/templates/secrets.yaml delete mode 100644 helm-charts/database-to-integrity-sum/values.yaml diff --git a/Makefile b/Makefile index 3ccce0d..75fc98a 100644 --- a/Makefile +++ b/Makefile @@ -1,83 +1,29 @@ -## You can change these values -RELEASE_NAME_DB=db -RELEASE_NAME_MUTATOR=mutator -RELEASE_NAME_APP=app -TIMEOUT=30 +IMAGE_EXPORT := $(shell make -s -C integrity-sum -f Makefile print-var-image-name) +ALG=$(shell make -s -C integrity-sum -f Makefile print-var-alg) +DIRS="app,bin" # You can change these values -.PHONY : all-darwin -all-darwin: - make minikube update-darwin docker-integrity-sum update-patch docker-mutator helm-all - @echo "==> Successfully installed" +.PHONY : all +all: minikube start-minio-integrity-crd snapshots start-mutator helm-demo + @echo "==> Successfully installed all systems" -.PHONY : all-linux -all-linux: - make minikube update-linux docker-integrity-sum update-patch docker-mutator helm-all - @echo "==> Successfully installed" +.PHONY : start-minio-integrity-crd +start-minio-integrity-crd: + make -C ./integrity-sum minio-install buildtools build docker crd-controller-build load-images crd-controller-deploy -.PHONY : all-windows -all-windows: - make minikube update-linux docker-integrity-sum update-patch docker-mutator helm-all - @echo "==> Successfully installed" +.PHONY : snapshots +snapshots: + make -C ./integrity-sum IMAGE_EXPORT=$(IMAGE_EXPORT) ALG=$(ALG) DIRS=$(DIRS) export-fs snapshot helm-snapshot + +.PHONY : start-mutator +start-mutator: + make -C ./integrity-mutator docker helm-mutator + @echo "==> Successfully installed mutator" .PHONY : minikube minikube: minikube start -.PHONY : stop -stop: - helm uninstall ${RELEASE_NAME_APP} - helm uninstall ${RELEASE_NAME_MUTATOR} - helm uninstall ${RELEASE_NAME_DB} - minikube stop - -.PHONY : docker-integrity-sum -docker-integrity-sum: - make -C integrity-sum docker - -.PHONY : docker-mutator -docker-mutator: update-patch - make -C integrity-mutator docker - -.PHONY: helm-all -helm-all: helm-database helm-mutator timeout helm-demo - -.PHONY: helm-database -helm-database: - helm dependency update helm-charts/database-to-integrity-sum - helm install ${RELEASE_NAME_DB} helm-charts/database-to-integrity-sum - @echo "==> Successfully installed database" - -.PHONY: helm-mutator -helm-mutator: - helm install ${RELEASE_NAME_MUTATOR} helm-charts/mutator - @echo "==> Successfully installed mutator" - .PHONY: helm-demo helm-demo: helm install ${RELEASE_NAME_APP} helm-charts/demo-apps-to-monitor @echo "==> Successfully installed demo-apps" - -.PHONE: timeout -timeout: - sleep ${TIMEOUT} - -.PHONY: update-patch -update-patch: - cp patch-json-command.json integrity-mutator/ - -SECRET_DB="$$(grep 'secretName' helm-charts/database-to-integrity-sum/values.yaml | cut -d':' -f2 | tr -d '[:space:]')" -SECRET_HASHER="$$(grep 'secretNameDB' helm-charts/demo-apps-to-monitor/values.yaml | cut -d':' -f2 | tr -d '[:space:]')" -VALUE_RELEASE_NAME_APP="$$(grep 'releaseNameDB' helm-charts/demo-apps-to-monitor/values.yaml | cut -d':' -f2 | tr -d '[:space:]')" -PATCH_NAME="$$(grep -m2 'name' patch-json-command.json | tail -n1 | cut -d':' -f2 | tr -d '[:space:]' | sed 's/\"//g')" -SECRET_PATCH_NAME=${RELEASE_NAME_DB}-${SECRET_DB} -.PHONY: update-darwin -update-darwin: - sed -i '' "s/${PATCH_NAME}/${SECRET_PATCH_NAME}/" patch-json-command.json >> patch-json-command.json - sed -i '' "s/${SECRET_HASHER}/${SECRET_DB}/" helm-charts/demo-apps-to-monitor/values.yaml >> helm-charts/demo-apps-to-monitor/values.yaml - sed -i '' "s/${VALUE_RELEASE_NAME_APP}/${RELEASE_NAME_DB}/" helm-charts/demo-apps-to-monitor/values.yaml >> helm-charts/demo-apps-to-monitor/values.yaml - -PHONY: update-linux -update-linux: - sed -i "s/${PATCH_NAME}/${SECRET_PATCH_NAME}/" patch-json-command.json >> patch-json-command.json - sed -i "s/${SECRET_HASHER}/${SECRET_DB}/" helm-charts/demo-apps-to-monitor/values.yaml >> helm-charts/demo-apps-to-monitor/values.yaml - sed -i "s/${VALUE_RELEASE_NAME_APP}/${RELEASE_NAME_DB}/" helm-charts/demo-apps-to-monitor/values.yaml >> helm-charts/demo-apps-to-monitor/values.yaml diff --git a/README.md b/README.md index b43da9b..3c3d9a4 100644 --- a/README.md +++ b/README.md @@ -11,19 +11,19 @@ # k8s-container-integrity-monitor -This program provides integrity monitoring that checks file or directory of container to determine whether or not they have been tampered with or corrupted. -k8s-container-integrity-monitor, which is a type of change auditing, verifies and validates these files by comparing them to the stored data in the database. +This program provides integrity monitoring that checks the container's file system to determine if they have been maliciously modified. If the program detects that files have been modified, updated, added, or compromised, it rolls back the deployment to the previous version. +This application consists of two repositories: the [integrity-sum](https://github.com/ScienceSoft-Inc/integrity-sum) and the [integrity-mutator](https://github.com/ScienceSoft-Inc/k8s-container-integrity-mutator) . -If program detects that files have been altered, updated, added or compromised, it rolls back deployments to a previous version. - -k8s-container-integrity-monitor injects a `hasher container` with Integrity-sum app to your pods with the "hasher-certificates-injector-sidecar" label. -`Integrity-sum app` is the implementation of a hash calculation in golang, which monitors the checksum of files using different algorithms in Kubernetes: +Repository [integrity-sum](https://github.com/ScienceSoft-Inc/integrity-sum) injects hasher-sidecar into your modules as a sidecar container. sidecar integrity is a golang implementation of a hasher that calculates the checksum of files using various algorithms in kubernetes: * MD5 * SHA256 * SHA1 * SHA224 * SHA384 * SHA512 +* BEE2 (optional) + +Repository [integrity-mutator](https://github.com/ScienceSoft-Inc/k8s-container-integrity-mutator) implements sidecar container for monitoring. ## Architecture ### Component diagram @@ -44,11 +44,11 @@ $ git clone https://github.com/ScienceSoft-Inc/k8s-container-integrity-monitor.g Initialize and update submodules ``` $ git submodule init -$ git submodule update +$ git submodule update --remote ``` ## :hammer: Installing components -### Running locally +### Install minikube The code only works running inside a pod in Kubernetes. You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using `minikube`. @@ -69,75 +69,12 @@ To work properly, you first need to set the configuration files: + values in the file `helm-charts/mutator/values.yaml` ## Manual start -+ Minikube start -``` -minikube start -``` -1) You should go to the [README.md (Generate certificates)](https://github.com/ScienceSoft-Inc/k8s-container-integrity-mutator/blob/main/README.md) in the `./k8s-container-integrity-mutator` project and set all the settings and certificates. -``` -cd integrity-mutator -``` -Set certificates. -You need to go to the file `patch-json-command.json` -and change `"envFrom":"secretRef":"name": "release db name and secret name"` -where `release db name and secret name` = will be release name db-variable value secretName in the file `helm-charts/database-to-integrity-sum/values.yaml` +1) You should go to the [README.md](https://github.com/ScienceSoft-Inc/k8s-container-integrity-mutator) in the `./integrity-mutator` project, set all the configurations and deploy. -Move patch-json-command to mutator directory: -``` -cd ./.. -cp patch-json-command.json integrity-mutator/ -``` +2) You should go to the [README.md](https://github.com/ScienceSoft-Inc/integrity-sum) in the `./integrity-sum`project project, set all the configurations and deploy. + However, you need to go to the `"Run application"` section and configure the dependencies that are indicated by `"Need to install dependencies"`. -Download the named modules into the module cache -``` -go mod download -``` - -Build docker images mutator: -``` -eval $(minikube docker-env) -cd integrity-mutator -docker build -t mutator . -``` -or -``` -eval $(minikube docker-env) -docker build -t mutator -f integrity-mutator/Dockerfile . -``` -Install helm chart from the project root, for example: -``` -helm install mutator helm-charts/mutator -``` -2) You need to install the database using helm charts from the project root. - -Update the on-disk dependencies to mirror Chart.yaml. -``` -helm dependency update helm-charts/database-to-integrity-sum -``` -Install helm chart from the project root, for example: -``` -helm install db helm-charts/database-to-integrity-sum -``` - -3) You should go to the `./integrity-sum` project and set environment variables in `.env` file. - -Download the named modules into the module cache -``` -go mod download -``` - -Build docker images hasher: -``` -eval $(minikube docker-env) -cd integrity-sum -docker build -t hasher . -``` -or -``` -eval $(minikube docker-env) -docker build -t hasher -f integrity-sum/Dockerfile . -``` Install helm chart from the project root, for example: ``` helm install app helm-charts/demo-apps-to-monitor @@ -146,21 +83,16 @@ helm install app helm-charts/demo-apps-to-monitor ## Quick start ### Using Makefile You can use make function. -Runs all necessary cleaning targets and dependencies for the project according your OS: ``` -make all-darwin -make all-linux -make all-windows -``` -Remove an installed Helm deployments and stop minikube: -``` -make stop +make all ``` + ## Troubleshooting + Sometimes you may find that pod is injected with sidecar container as expected, check the following items: -1) The pod is in running state with `hasher-sidecar` sidecar container injected and no error logs. -2) Check if the application demo-pod has he correct labels `hasher-certificates-injector-sidecar: "true"` and installed `main-process-name`. +1) The pod is in running state with `integrity` sidecar container injected and no error logs. +2) Check if the application pod has the correct annotations as described above. ___________________________ ## License diff --git a/helm-charts/database-to-integrity-sum/Chart.yaml b/helm-charts/database-to-integrity-sum/Chart.yaml deleted file mode 100644 index 679f722..0000000 --- a/helm-charts/database-to-integrity-sum/Chart.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v2 -name: Database-HelmChart -description: Helm Chart for database to integrity sum -type: application -version: 0.1.0 -appVersion: "1.0.0" - -dependencies: - # dependency with database "postgresql" - - name: postgresql - version: 12.1.14 - repository: https://charts.bitnami.com/bitnami diff --git a/helm-charts/database-to-integrity-sum/charts/postgresql-12.1.14.tgz b/helm-charts/database-to-integrity-sum/charts/postgresql-12.1.14.tgz deleted file mode 100644 index 48a32c2c08ef2a7960fbd48be37a396839eca4e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58288 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 Date: Wed, 10 May 2023 13:10:38 +0300 Subject: [PATCH 2/2] set certain values --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 75fc98a..c7756ed 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,8 @@ -IMAGE_EXPORT := $(shell make -s -C integrity-sum -f Makefile print-var-image-name) -ALG=$(shell make -s -C integrity-sum -f Makefile print-var-alg) -DIRS="app,bin" # You can change these values +# You can change these values +RELEASE_NAME_APP := app +IMAGE_EXPORT := integrity:latest +ALG := sha256 +DIRS := "app,bin" .PHONY : all all: minikube start-minio-integrity-crd snapshots start-mutator helm-demo