Быстрый старт примера кода 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
Быстрый старт¶
-
Скачайте пример кода Terraform.
-
Настройте среду и переменные Terraform.
-
Разверните описанную инфраструктуру.
-
Протестируйте работу WAF‑ноды.
Шаг 1: Скачивание примера кода Terraform¶
Пример кода доступен в репозитории GitHub. Клонируйте репозиторий, используя следующую команду:
git clone https://github.com/wallarm/terraform-example.git
Конфигурационные файлы расположены в папке terraform
:
-
variables.tf
содержит переменные Terraform; -
main.tf
содержит настройки AWS.
Шаг 2: Настройка среды и переменных Terraform¶
-
Запишите данные пользователя Валарм с ролью Деплой в переменные окружения:
export TF_VAR_deploy_username='DEPLOY_USERNAME' export TF_VAR_deploy_password='DEPLOY_PASSWORD'
DEPLOY_USERNAME
— имя пользователя с ролью ДеплойDEPLOY_PASSWORD
— пароль пользователя с ролью Деплой
-
Запишите 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 IDYOUR_SECRET_ACCESS_KEY
— Secret Access Key
-
Передайте конечную точку API
api.wallarm.com
в файлеvariables.tf
в переменнойwallarm_api_domain
, если вы используете EU‑облако. Для RU‑облака передайте значениеapi.wallarm.ru
. -
(Опционально) Передайте публичный SSH-ключ в файле
variables.tf
в переменнойkey_pair
для доступа к экземпляру EC2 по SSH. -
(Опционально) Настройте регион AWS в файле
variables.tf
, используя переменные ниже. В приведенном примере используется используется регионus-west-1
(Северная Калифорния).aws_region
, список регионов доступен по ссылкеaz_a
az_b
-
wallarm_node_ami_id
— ID образа WAF‑ноды AWS EC2. Чтобы получить значение, используйте команду ниже,REGION_CODE
необходимо заменить на значение переменнойaws-region
:
aws ec2 describe-images --filters "Name=name,Values=*Wallarm Node-2.16*" --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: Запуск описанной инфраструктуры¶
-
Перейдите к папке
terraform
склонированного репозитория:
cd terraform-example/terraform
-
Разверните инфраструктуру, используя следующие команды:
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 с WAF‑нодой, откройте ссылку из командной строки в браузере.
Шаг 4: Тестирование работы WAF‑ноды¶
Развернутый кластер WAF самоподписан сертификатом SSL. Поэтому запросы, отправленные на DNS сервиса Wordpress, сначала будут обработаны WAF‑нодой.
Чтобы отправить тестовую атаку, добавьте /?id='or+1=1--a-<script>prompt(1)</script>'
в запрос. Запрос будет заблокирован с кодом 403.
Через несколько минут атаки типа SQLI и XSS отобразятся в Личном кабинет Валарм в разделе События:
Настройки WAF‑ноды описаны в файле main.tf
в объекте wallarm_launch_config
. Для изменения настроек используйте описание директив по ссылке.
Info
Чтобы удалить демо-окружение, используйте команду terraform destroy
.