Практика DevSecOps: защита инфраструктуры как кода (IaC)

Практика DevSecOps: защита инфраструктуры как кода (IaC)

13 июня 2023 г.

В моей предыдущей статье, Я выделил ключевые шаги и важные решения, касающиеся безопасности конвейеров CI/CD. В этой статье я хотел бы поделиться базовой конфигурацией CI/CD для Checkov и KICS, двух инструментов анализа инфраструктуры как кода (IaC), которые могут просматривать ваши шаблоны IaC на наличие потенциальных уязвимостей или неправильных конфигураций. Эти инструменты поддерживают различные языки, включая Terraform, CloudFormation, Kubernetes, ARM и другие. Я буду использовать GitHub Actions и Gitlab CI для их использования.

:::информация Помните, что все файлы конфигурации должны быть адаптированы к вашей среде и требованиям проекта.

:::

Чекков

https://github.com/bridgecrewio/checkov

<сильный>1. Конфигурация с действиями GitHub:

В репозитории GitHub создайте новый файл с именем ==.github/workflows/IaC_scan.yml==. Добавьте следующую конфигурацию в файл ==IaC_scan.yml==:

name: IaC scanning stage
on:
 push:
   branches: [ "main", "master" ]
 pull_request:
   branches: [ "main", "master" ]
jobs:
 IaC_scan:
   runs-on: ubuntu-latest
   steps:
     # Checks-out your repository under $GITHUB_WORKSPACE, so follow-up steps can access it
     - name: Checkout repository
       uses: actions/checkout@v3

     - name: Set up Python
       uses: actions/setup-python@v2
       with:
         python-version: 3.9

     - name: Install Checkov
       run: pip install checkov

     - name: Run Checkov
       run: checkov --directory .

Этот рабочий процесс GitHub Actions запускает сканирование Checkov при каждом запросе push и pull в репозиторий.

<сильный>2. Конфигурация с Gitlab CI:

В репозитории Gitlab создайте новый файл с именем ==.gitlab-ci.yml==. Добавьте следующую конфигурацию в файл ==.gitlab-ci.yml==:

stages:
  - IaC_scan

Checkov:
  stage: IaC_scan
  image: python:3.9
  allow_failure: true
  before_script:
    - pip install checkov
  script:
    - checkov -d .

В конфигурации конвейера непрерывной интеграции GitLab этап IaC_scan определяется заданием с именем Checkov. Он использует образ Python Docker для настройки среды Python, устанавливает Checkov и запускает Checkov для сканирования кода IaC.

КИКС

https://kics.io/

1. Конфигурация с действиями GitHub:

В репозитории GitHub создайте новый файл с именем ==.github/workflows/IaC_scan.yml==. Добавьте следующую конфигурацию в файл ==IaC_scan.yml==:

name: IaC scanning stage
on:
 push:
   branches: [ "main", "master" ]
 pull_request:
   branches: [ "main", "master" ]
jobs:
 kics:
   runs-on: ubuntu-latest
   steps:
     # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
     - name: Checkout repository
       uses: actions/checkout@v3
    # Scan Iac with kics
     - name: Run KICS scan
       uses: checkmarx/kics-github-action@v1.7.0
       with:
         path: "."

Этот рабочий процесс GitHub Actions запускает сканирование KICS при каждом запросе push и pull в репозиторий.

  1. Конфигурация с Gitlab CI:

В репозитории Gitlab создайте новый файл с именем ==.gitlab-ci.yml== (или обновите его, если он у вас уже есть). Добавьте следующую конфигурацию в файл ==.gitlab-ci.yml==:

stages:
  - IaC_scan

kics:
 stage: IaC_scan
 image:
   name: checkmarx/kics:latest
   entrypoint: [""]
 script:
   - kics scan -p ${PWD} -o ${PWD} --report-formats json --output-name kics-results
 artifacts:
     name: kics-results.json
     paths:
         - kics-results.json

В конфигурации конвейера непрерывной интеграции GitLab этап IaC_scan определяется заданием с именем kics. Это задание использует образ KICS Docker для запуска сканирования KICS кода IaC.


В заключение я настоятельно рекомендую использовать инструменты сканирования инфраструктуры как кода (IaC) на ранней стадии, чтобы усилить меры безопасности. Благодаря такому упреждающему подходу можно предотвратить неправильные конфигурации. Эта упреждающая тактика позволяет обнаруживать и устранять потенциальные угрозы безопасности на ранних этапах жизненного цикла, тем самым снижая угрозу проникновения этих рисков в вашу действующую инфраструктуру.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE