Перейти к содержанию

Быстрый старт примера кода Terraform

Необходимые условия

  • Аккаунт в Консоли управления Валарм для EU‑Облака или RU‑Облака

  • Имя и пароль пользователя с ролью Деплой, который добавлен в аккаунт вашей компании в Консоли управления Валарм. Для добавления пользователя используйте инструкцию

  • Аккаунт AWS и данные пользователя с ролью admin

  • Подтвержденные условия использования продуктов AWS: WordPress Certified by Bitnami and Automattic и Wallarm Node (AI-based NG-WAF instance) by Wallarm

  • Установленный terraform CLI версии 0.12.18 или выше

  • Установленный jq CLI

  • Установленный git CLI

  • Установленный aws CLI

Быстрый старт

  1. Скачайте пример кода Terraform.

  2. Настройте среду и переменные Terraform.

  3. Разверните описанную инфраструктуру.

  4. Протестируйте работу ноды Валарм.

Шаг 1: Скачивание примера кода Terraform

Пример кода доступен в репозитории GitHub. Склонируйте репозиторий, используя следующую команду:

git clone -b stable/3.6 --single-branch https://github.com/wallarm/terraform-example.git

Конфигурационные файлы расположены в папке terraform:

  • variables.tf содержит переменные Terraform

  • main.tf содержит настройки AWS

Шаг 2: Настройка среды и переменных Terraform

  1. Запишите данные пользователя Валарм с ролью Деплой в переменные окружения:

    export TF_VAR_deploy_username='DEPLOY_USERNAME'
    export TF_VAR_deploy_password='DEPLOY_PASSWORD'
    

    • DEPLOY_USERNAME — email пользователя с ролью Деплой
    • DEPLOY_PASSWORD — пароль пользователя с ролью Деплой
  2. Запишите AWS Access Keys в переменные окружения:

    export AWS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'
    export AWS_SECRET_ACCESS_KEY='YOUR_SECRET_ACCESS_KEY'
    

    • YOUR_ACCESS_KEY_ID — Access Key ID
    • YOUR_SECRET_ACCESS_KEY — Secret Access Key
  3. Передайте эндпоинт Валарм API api.wallarm.com в файле variables.tf в переменной wallarm_api_domain, если вы используете EU‑Облако. Для RU‑Облака передайте значение api.wallarm.ru.

  4. (Опционально) Передайте публичный SSH-ключ в файле variables.tf в переменной key_pair для доступа к экземпляру EC2 по SSH.

  5. (Опционально) Настройте регион AWS в файле variables.tf, используя переменные ниже. В приведенном примере используется регион us-west-1 (Северная Калифорния).

    • aws_region, список регионов доступен по ссылке
    • az_a
    • az_b
    • wallarm_node_ami_id — ID образа ноды Валарм в AWS EC2. Чтобы получить значение, используйте команду ниже, REGION_CODE необходимо заменить на значение переменной aws-region:

      aws ec2 describe-images --filters "Name=name,Values=*Wallarm Node-3.6*" --region REGION_CODE | jq -r '.Images[] | "\(.ImageId)"'
      

    • wordpress_ami_id — ID образа AWS EC2 Wordpress. Чтобы получить значение, используйте команду ниже, REGION_CODE необходимо заменить на значение переменной aws-region:

      aws ec2 describe-images --filters "Name=name,Values=*bitnami-wordpress-5.3.2-3-linux-ubuntu-16.04*" --region REGION_CODE | jq -r '.Images[] | "\(.ImageId)"'
      

Шаг 3: Запуск описанной инфраструктуры

  1. Перейдите к папке terraform склонированного репозитория:

    cd terraform-example/terraform
    

  2. Разверните инфраструктуру, используя следующие команды:

    terraform init
    terraform plan
    terraform apply
    

После успешного выполнения команд, вы получите DNS развернутого экземпляра NLB. Например:

Apply complete! Resources: 4 added, 2 changed, 4 destroyed.

Outputs:

waf_nlb_dns_name = [
  "tf-wallarm-demo-asg-nlb-7b32738728e6ea44.elb.us-east-1.amazonaws.com",
]

Чтобы перейти к развернутому сервису Wordpress с нодой Валарм, откройте ссылку из командной строки в браузере.

Установленный сервис Wordpress

Шаг 4: Тестирование работы ноды Валарм

Развернутый кластер самоподписан сертификатом SSL. Поэтому запросы, отправленные на DNS сервиса Wordpress, сначала будут обработаны нодой Валарм.

Чтобы отправить тестовую атаку, добавьте /?id='or+1=1--a-<script>prompt(1)</script>' в запрос. Запрос будет заблокирован с кодом 403.

Ответ 403 на запрос с атакой

Через несколько минут атаки типа SQLI и XSS отобразятся в Консоли управления Валарм в секции События:

Отображение атак в Личном кабинете Валарм

Настройки ноды Валарм описаны в файле main.tf в объекте wallarm_launch_config. Для изменения настроек используйте описание директив по ссылке.

Info

Чтобы удалить демо-окружение, используйте команду terraform destroy.

К началу