Практика 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 в репозиторий.
- Конфигурация с 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) на ранней стадии, чтобы усилить меры безопасности. Благодаря такому упреждающему подходу можно предотвратить неправильные конфигурации. Эта упреждающая тактика позволяет обнаруживать и устранять потенциальные угрозы безопасности на ранних этапах жизненного цикла, тем самым снижая угрозу проникновения этих рисков в вашу действующую инфраструктуру.
Оригинал