Integrate KICS with Codefresh¶
Find security vulnerabilities, compliance issues, and infrastructure misconfigurations early in the development cycle of your infrastructure-as-code with KICS Codefresh step by Checkmarx.
You can find the KICS Codefresh step here.
Please, be aware that the KICS Codefresh step can require MEDIUM instances.
ARGUMENTS¶
Variable | Example Value | Description | Type | Required | Default |
---|---|---|---|---|---|
PROJECT_PATH | terraform/main.tf,Dockerfile | paths to a file or directories to scan, comma separated list | string | Yes | N/A |
IGNORE_ON_EXIT | results | defines which kind of non-zero exits code should be ignored (all, results, errors, none) | string | No | N/A |
FAIL_ON | high,medium | which kind of results should return an exit code different from 0 | string | No | critical,high,medium,low,info |
TIME_OUT | 75 | number of seconds the query has to execute before being canceled | string | No | 60 |
PROFILING | CPU | enables performance profiler that prints resource consumption metrics in the logs during the execution (CPU, MEM) | string | No | N/A |
TYPES | Ansible,Terraform | case insensitive list of platform types to scan (Ansible, AzureResourceManager, CloudFormation, Dockerfile, Docker Compose, GRPC, GoogleDeploymentManager, Kubernetes, OpenAPI, Terraform) | string | No | All |
EXCLUDE_PATHS | ./shouldNotScan/*,somefile.txt | exclude paths from scan | string | No | N/A |
EXCLUDE_QUERIES | e69890e6-fce5-461d-98ad-cb98318dfc96,4728cd65-a20c-49da-8b31-9c08b423e4db | exclude queries by providing the query ID; cannot be provided with query inclusion flags | string | No | N/A |
EXCLUDE_CATEGORIES | Access control,Best practices | exclude categories by providing its name; cannot be provided with query inclusion flags | string | No | N/A |
EXCLUDE_SEVERETIES | info,low | exclude results by providing the severity of a result | string | No | N/A |
EXCLUDE_RESULTS | d4a1fa80-d9d8-450f-87c2-e1f6669c41f8 | exclude results by providing the similarity ID of a result | string | No | N/A |
INCLUDE_QUERIES | a227ec01-f97a-4084-91a4-47b350c1db54 | include queries by providing the query ID; cannot be provided with query exclusion flags | string | No | N/A |
OUTPUT_FORMATS | json,sarif | formats in which the results will be exported (all, asff, csv, cyclonedx, glsast, html, json, junit, pdf, sarif, sonarqube) | string | No | json |
OUTPUT_PATH | myResults/ | directory path to store reports | string | No | N/A |
PAYLOAD_PATH | /tmp/mypayload.json | path to store internal representation JSON file | string | No | N/A |
QUERIES_PATH | query | "example": "/tmp/mypayload.json" | string | No | ./assets/queries downloaded with the binaries |
VERBOSE | true | write logs to stdout too (mutually exclusive with silent) | boolean | No | false |
BOM | true | include bill of materials (BoM) in results output; | boolean | No | false |
DISABLE_FULL_DESCRIPTIONS | true | disable request for full descriptions and use default vulnerability descriptions | boolean | No | false |
DISABLE_SECRETS | true | disable secrets scanning | boolean | No | false |
SECRETS_REGEXES_PATH | ./mydir/secrets-config.json | path to secrets regex rules configuration file | string | No | N/A |
LIBRARIES_PATH | ./myLibsDir | path to directory with libraries | string | No | N/A |
EXAMPLES¶
RUNNING KICS¶
steps:
clone:
title: Clone a project
type: git-clone
repo: 'rafaela-soares/query'
git: github
run_kics:
title: Scanning IaC files
type: checkmarx/kics
arguments:
PROJECT_PATH: ./query
RUNNING KICS AND SAVING KICS REPORTS¶
🚨 Be aware that you should set IGNORE_ON_EXIT: results
to be able to avoid the KICS exit code and run the step that saves the report.
GITHUB REPOSITORY¶
steps:
clone:
title: Clone a project
type: git-clone
repo: 'rafaela-soares/query'
git: github
run_kics:
title: Scanning IaC files
type: checkmarx/kics
arguments:
PROJECT_PATH: ./query
QUERIES_PATH: ./query/alb_listening_on_http
OUTPUT_PATH: /codefresh/volume/query/reports
OUTPUT_FORMATS: all
VERBOSE: true
EXCLUDE_PATHS: ./query/alb_listening_on_http/test/negative.yaml
TYPES: Ansible
LOG_LEVEL: DEBUG
PAYLOAD_PATH: /codefresh/volume/query/payload.json
IGNORE_ON_EXIT: results
save_reports_and_payload:
title: Saving KICS payload and KICS reports
type: git-commit
arguments:
repo: 'rafaela-soares/query'
git: github
working_directory: '/codefresh/volume/query'
commit_message: saved payload and reports
git_user_name: git-user-name
git_user_email: git-user@email.com
allow_empty: false
add:
- payload.json
- ./reports
S3 BUCKET¶
steps:
clone:
title: Clone a project
type: git-clone
repo: 'rafaela-soares/query'
git: github
run_kics:
title: Scanning IaC files
type: checkmarx/kics
arguments:
PROJECT_PATH: ./query
QUERIES_PATH: ./query/alb_listening_on_http
OUTPUT_PATH: /codefresh/volume/query/reports
OUTPUT_FORMATS: all
VERBOSE: true
EXCLUDE_PATHS: ./query/alb_listening_on_http/test/negative.yaml
TYPES: Ansible
LOG_LEVEL: DEBUG
IGNORE_ON_EXIT: results
save_reports_in_s3_bucket:
title: Saving KICS reports
image: 'amazon/aws-cli'
working_directory: '/codefresh/volume/query'
commands:
- mkdir ~/.aws
- touch ~/.aws/config
- chmod 600 ~/.aws/config
- echo "[default]" > ~/.aws/config
- echo "aws_access_key_id=${AWS_ACCESS_KEY_ID}" >> ~/.aws/config
- echo "aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}" >> ~/.aws/config
- echo "aws_session_token=${AWS_SESSION_TOKEN}" >> ~/.aws/config
- echo "region=${AWS_REGION}" >> ~/.aws/config
- aws s3 cp ./reports s3://${{BUCKET_NAME}}/ --recursive