Русский
Русский
English
Статистика
Реклама

Перевод Построение конвейера IaC на AWS с полностью интегрированной безопасностью

Перевод статьи подготовлен в преддверии старта курса "Infrastructure as a code in Ansible".


Также хотим порекомендовать вам супер-интенсив IaC Ansible за 5 дней которого вы научитесь делать выкатку кода простым и приятным процессом в духе "нажми одну кнопку", делать сетап новой машины полностью автоматизированным,автоматически поддерживать актуальными все проверки и триггеры в мониторинге и узнавать о проблемах еще до того, как они наступили и многое другое.


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

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

Теперь давайте разберем реальный пример того, как можно автоматически проконтролировать корректность методов разработки в конвейерах IaC для среды AWS посредством сотен проверок на соответствие правиламAWS Well-Architected Framework(безопасность, оптимизация затрат, производительность, высокие стандарты профессиональной деятельности и надежность) и другим стандартам.

Вот общее представление того, над чем мы будем работать:

Исходные требования

Для формирования нужной нам среды вам понадобятся следующие элементы:

Приступим к созданию вашего первого конвейера инфраструктура как код (IaC) с проверкой применения правильных методов разработки!

Этап1. Установка подключаемого модуля безопасности в среду программирования и получение токена API для сканирования шаблонов CloudFormation

После установки среды VSCode IDE не забудьте также установить подключаемый модуль Cloud Conformity Security, как показано здесь:

  • VSCode Marketplace подключаемый модуль Cloud ConformityССЛКА

Расширение для сканирования шаблонов Cloud One Conformity Template ScannerРасширение для сканирования шаблонов Cloud One Conformity Template Scanner

Создайте свою учетную запись в Cloud One Conformity, воспользовавшись приведенной здесь ссылкой (создать учетную запись), войдите в нее и сформируйте токен API.

В среде Cloud Conformity: щелкнитеимя пользователявверху справа и выберите User Settings (Настройки пользователя)API Keys (Ключи API)New API Key (Создать ключ API), чтобы создать ключ API, который будет использоваться в подключаемом модуле VSCode. Обязательно скопируйте ключ и сохраните его в надежном месте. Получить его еще раз невозможно.

Скопируйте ключ API и вернитесь в среду VSCode

1. Щелкните значок расширений (слева) и нажмитеExtension Settings (Настройки расширений) для записи сканера шаблонов Cloud Conformity Template Scanner.

2. В среде Cloud Conformity выберитеEdit in settings.json (Изменить файл settings.json). Перейдите к разделу ApiKey.

3. Введите ключ API, сформированный на предыдущем шаге, и сохраните изменения.

Теперь шаблоны CloudFormation можно сканировать с использованием сотен проверок на соответствие правилам AWS Well-Architected Framework и другим стандартам, гарантируя превосходное качество разрабатываемой облачной инфраструктуры.

Вот пример шаблона CloudFormation, не соответствующего передовым методам разработки, который вы можете протестировать:

Чтобы испытать расширение в работе, откройте указанный выше шаблон CloudFormation с помощью VSCode, после чего откройтепалитру команд, нажав:

  • macOS: + + P

  • Windows/Linux:Ctrl + Shift + P

Найдите элемент Cloud One Conformity: Scan the Current Open Template (Cloud One Conformity: сканировать открытый шаблон) и нажмите <Enter>, после чего автоматически начнется сканирование этого шаблона CloudFormation:

Результат сканирования появится на второй вкладке под названием Scan Result (Результат сканирования), как на приведенном ниже изображении. Также можно воспользоватьсяоблачной базой знаний, которая поможет лучше понять выявленные нарушения рекомендуемых методов, а также узнать способы их устранения в вашем шаблоне CloudFormation или в производственных средах:

Превосходно, первый этап автоматизации безопасности IaC завершен.

Этап2. Создание конвейера CI/CD средствами AWS с последующей интеграцией в него сканера шаблонов Conformity

На первом этапе мы показали, как можно выполнять сканирование перед отправкой новой версии кода в репозиторий. Однако иногда разработчик может забыть сделать это и сохранить шаблон CFT, в котором есть проблемы. Сейчас мы создадим шлюз безопасности, который поможет предотвратить появление новых ресурсов, не соответствующих методам разработки, рекомендуемым вашей компанией.

С помощью такого шлюза можно отслеживать и выполнять аудит всех изменений в реальном времени и только затем производить развертывание в среду AWS.

В этом разделе мы покажем, как использовать сканер шаблонов в конвейере CI/CD сAWS CodeCommit,AWS CodeBuild иAWS CodePipeline. Приступим.

CodeCommit будет использоваться в качестве репозитория для размещения нашего кода. Многие люди и компании со всего мира используют для этого GitHub, GitLab и BitBucket. Чтобы ваша среда VSCode могла перемещать код в CodeCommit, нужно будет кое-что настроить.

Создание репозитория Git в AWS CodeCommit

  • Создайте пользователя IAM с разрешением использовать CodeCommit и доступом только с помощью ключа SSH. (Сведения о разрешении для Git и рекомендации приведены по этойссылкеот AWS.)

Перейдите в раздел Security credentials (Учетные данные безопасности) HTTPS Git credentials for AWS CodeCommit (Учетные данные Git HTTPS для AWS CodeCommit), чтобы сформировать учетные данные.

Загрузите учетные данные и сохраните их в надежное место.

Подробнее об этой процедуре на сайте AWS ССЛКА.

  • Создайте репозиторийAWS CodeCommit.

Можно выполнить команду git clone на своем компьютере и легко перенести на него git config.

git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/{ИМЯ ВАШЕГО РЕПОЗИТОРИЯ}

Теперь можете воспользоваться собственным шаблоном CloudFormation или взять плохой шаблон CloudFormation, который я предоставил ранее, для передачи в AWS CodeCommit.

git add .

git commit -m "First Commit"

git push

Итак, первое сохранение в AWS CodeCommit выполнено. Теперь давайте перейдем к AWS CodeBuild и AWS CodePipeline.

Создание CodeBuild для автоматического сканирования шаблонов CloudFormation

Решение AWS CodeBuild очень похоже на GitHub Actions, Azure DevOps и GitLab. Это технология CI/CD, с помощью которой можно создавать новые проекты, автоматизировать процессы и развертывать новые приложения или инфраструктуры.

Мы будем использовать CodeBuild с определенным образом контейнера для запуска сканера шаблонов Conformity с целью выявления возможных проблем перед развертыванием новой IaC в производственной среде.

  • Создание проекта построения в AWS CodeBuild

Я буду использовать стандартный образ от AWS, но вы можете взять другой образ управления или создать собственный для автоматизации подобного типа.

Вот конфигурация для приведенного ниже образа:

Environment image: Managed ImageOperationg System: Amazon Linux 2Runtime: StandardImage: aws/codebuild/amazonlinux2-x8664-standard:3.0Image version: Always use the latestEnvironment type: LinuxService Role: NewRole Name: <NEW ROLE NAME>

Вот конфигурация для приведенного ниже образа:

Environment VariablesCC_API_KEY = <YOUR API KEY FROM CLOUD ONE - CONFORMITY>CC_REGION = <REGION SELECTED TO CREATE YOUR CONFORMITY TENANT>CC_RISK_LEVEL = <RISK LEVEL NOT BE ACCEPT>CFN_TEMPLATE_FILE_LOCATION = <YOUR CLOUDFORMATION TEMPLATE PATH>STACK_NAME = <THE CLOUDFORMATION STACK NAME

Вот конфигурация для приведенного ниже образа:

Build specifications: Insert build commandsBuild Commands:version: 0.2phases:    install:        runtime-versions:            python: 3.7    pre_build:        commands:            - pip3 install awscli --upgrade --user    build:        commands:            - pip3 install -r https://raw.githubusercontent.com/OzNetNerd/Cloud-Conformity-Pipeline-Scanner/master/requirements.txt            - wget https://raw.githubusercontent.com/OzNetNerd/Cloud-Conformity-Pipeline-Scanner/master/src/scanner.py            - CC_API_KEY=`jq -r '.CC_API_KEY' <<< $CC_API_KEY`            - python3 scanner.py                post_build:        commands:            - aws cloudformation deploy --template-file $CFN_TEMPLATE_FILE_LOCATION --stack-name $STACK_NAME --no-fail-on-empty-changese

Ссылка на Buildspec.yml на GitHub https://raw.githubusercontent.com/fernandostc/IaC-Security-Automation/master/buildspec.yml

Примечание. Сканер шаблонов, который я использую в этом примере, был создан Уиллом Робисоном (Will Robison) архитектором решений из компании Trend Micro вот ссылка на этот проект на GitHub:https://github.com/OzNetNerd/Cloud-Conformity-Pipeline-Scanner

Теперь нажмите Create build project (Создать проект построения), чтобы завершить процесс.

Создание секретного ключа в диспетчере секретов для хранения ключа API Cloud One Conformity

Теперь нажмите Store (Сохранить), чтобы завершить процесс.

Важно!Не забудьте создать политику, чтобы назначить своей службе ролей в CodeBuild следующее разрешение, с которым CodeBuild сможет получать значение от SecretManager:

{    "Version": "2012-10-17",    "Statement": [        {            "Sid": "VisualEditor0",            "Effect": "Allow",            "Action": "secretsmanager:GetSecretValue",            "Resource": "arn:aws:secretsmanager:us-east-1:<AWS Account ID>:secret:<Secret Key ARN>"        }    ]}

Создание AWS CodePipeline для автоматизации триггера запуска сканирования шаблонов

AWS CodePipeline поможет автоматизировать процесс запуска сканера шаблонов после каждого обновления кода IaC. В CodePipeline можно создать несколько этапов, однако наш пример простой, для него достаточно одного этапа. Он очень прост для понимания.

Создадим новый конвейер в AWS CodePipeline

Можно задать имя конвейеру и создать новую роль службы, если до этого у вас ни одной роли службы не было.

Теперь нужно задать следующие параметры с учетом созданного ранее CodeCommit:

Source Provider (Поставщик исходного кода): <AWS CodeCommit>Repository Name (Имя репозитория): <CloudOneConformity или заданное вами ранее имя репозитория>Branch Name (Имя ветви): <master>

Теперь нужно задать информацию о процессе построения:

Build provider (Поставщик построения): <AWS CodeBuild>Project Name (Имя проекта): <IaC-Security-Automation или заданное вами ранее имя репозитория>

В данном случае мы не планируем использовать команды развертывания, поскольку развертывание мы выполняем внутри CodeBuild в рамках одного из этапов.Можно нажать Skip the deploy stage (Пропустить этап развертывания).

Можно просмотреть конфигурацию и нажать Create pipeline (Создать конвейер).

Тестирование автоматизированного конвейера

1. Создайте собственный шаблон CloudFormation или воспользуйтесь вот этим:ссылка.

2. Просканируйте шаблон CloudFormation с помощью подключаемого модуля Cloud One Conformity и проверьте результат.

Удостоверьтесь, что остались некоторые проблемы, которые нужно устранить перед сохранением в производственную среду.

3. Шаблон можно отправить в репозиторий, чтобы проверить его работоспособность в конвейере. Это своеобразный тест перед исправлением всех проблем, найденных в шаблоне CloudFormation.

4. Сохраните новый код в CodeCommit:

git add .git commit -m "Test Automation"git push

5. Сохранение нового кода в CodeCommit приведет к запуску CodePipeline.

После завершения процесса автоматизации вы увидите, что оба этапа выполнены успешно.

ПРИМЕЧАНИЕ.В случае возникновения каких-либо проблем проверьте процесс построения. Перейдите к последнему построению и просмотрите его журналы. Они очень полезны для отладки в случае возникновения затруднений.

Заключение

Итак, у вас есть полностью автоматизированный конвейер IaC с AWS CodeCommit, AWS CodeBuild, AWS CodePipeline и Cloud One Conformity, позволяющий анализировать всевозможные отклонения конфигурации в ходе процесса создания шаблонов CloudFormation.

Надеюсь, эта статья поможет вам и вашей группе не отступать в ходе разработки от передовых методов построения архитектур и эффективно работать над инновационными облачными решениями в сжатые сроки. Если вам нужна дополнительная информация, обязательно свяжитесь со мной!

Благодарности

Хочу сказать БОЛЬШОЕ спасибо некоторым людям, которые своими потрясающими отзывами помогли мне сделать эту статью лучше:

  • Raphael Bottino (Рафаэль Боттино)

  • Melissa Clow (Мелисса Клоу)

Если эта статья была вам полезна, жмите стрелочку вверх и пишите комментарии.


- Узнать подробнее о курсе"Infrastructure as a code in Ansible".


- Записаться на супер-интенсив IaC Ansible

Источник: habr.com
К списку статей
Опубликовано: 02.12.2020 18:09:40
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании otus. онлайн-образование

Информационная безопасность

Облачные сервисы

Aws

Cicd

Iac

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru