Terraform kullanarak AWS üzerinde Wallarm dağıtımı¶
Wallarm, Terraform uyumlu bir ortamdan AWS'ye düğüm dağıtımı için Terraform modülünü sağlar. Modülü keşfetmek ve sağlanan dağıtım örneklerini denemek için bu talimatları kullanın.
Wallarm Terraform modülünü uygulayarak, Wallarm Node'un in-line (bu dağıtım yönteminde proxy) dağıtımını sağlayan bir çözüm sunuyoruz. Dağıtım seçeneği, preset
Wallarm modül değişkeniyle kolayca kontrol edilir.
Kullanım senaryoları¶
Desteklenen tüm Wallarm dağıtım seçenekleri arasında, aşağıdaki kullanım senaryolarında Wallarm dağıtımı için Terraform modülü önerilir:
-
Mevcut altyapınız AWS üzerinde bulunuyorsa.
-
Infrastructure as Code (IaC) pratiğini benimsiyorsanız. Wallarm'ın Terraform modülü, AWS üzerinde Wallarm düğümünün otomatik yönetimi ve sağlanmasını mümkün kılarak verimlilik ve tutarlılığı artırır.
Gereksinimler¶
-
Yerel olarak kurulu Terraform 1.0.5 veya üzeri
-
US veya EU Cloud içindeki Wallarm Console'da Administrator rolüne sahip hesaba erişim
-
US Wallarm Cloud ile çalışıyorsanız
https://us1.api.wallarm.com
veya EU Wallarm Cloud ile çalışıyorsanızhttps://api.wallarm.com
adresine erişim. Lütfen erişimin bir güvenlik duvarı tarafından engellenmediğinden emin olun -
Saldırı tespit kuralları ve API spesifikasyonları güncellemelerini indirmek ve izinli, engelli veya gri listede yer alan ülke, bölge veya veri merkezleriniz için kesin IP'leri almak amacıyla aşağıdaki IP adreslerine erişim
Bu konu, Wallarm'ı dağıtmak için gerekli tüm AWS kaynaklarının (ör. bir VPC kümesi) oluşturulmasına yönelik talimatları içermez. Ayrıntılar için ilgili Terraform rehberine bakın.
Wallarm AWS Terraform Modülü nasıl kullanılır?¶
AWS Terraform modülünü kullanarak üretimde Wallarm'ı dağıtmak için:
-
Wallarm Console → Nodes bölümünü açın ve Wallarm node türünde bir düğüm oluşturun.
-
Oluşturulan düğüm token'ını kopyalayın.
-
Terraform yapılandırmanıza
wallarm
modül kodunu ekleyin: -
wallarm
modül yapılandırmasında değişken değerlerini ayarlayın:
Değişken | Açıklama | Tür | Gerekli mi? |
---|---|---|---|
instance_type | Wallarm dağıtımı için kullanılacak Amazon EC2 örnek türü, ör.: t3.small . | string | Evet |
vpc_id | Wallarm EC2 örneğinin dağıtılacağı AWS Virtual Private Cloud kimliği. | string | Evet |
token | Wallarm Console UI'dan kopyalanan Wallarm düğüm token'ı. Birden fazla kurulum için tek bir token kullanma Seçilen platformdan bağımsız olarak tek bir token'ı birden çok kurulumda kullanabilirsiniz. Bu, Wallarm Console UI içinde düğüm örneklerini mantıksal olarak gruplamanıza olanak tanır. Örnek: bir geliştirme ortamına birden çok Wallarm düğümü dağıtırsınız; her düğüm, belirli bir geliştiriciye ait kendi makinesindedir. | string | Evet |
Wallarm'a özgü değişkenler | |||
host | Wallarm API sunucusu. Olası değerler:
api.wallarm.com . | string | Hayır |
upstream | Dağıtılacak Wallarm düğüm sürümü. Desteklenen en düşük sürüm 4.0 .Varsayılan olarak 4.8 . | string | Hayır |
preset | Wallarm dağıtım şeması. Olası değerler: proxy (varsayılan). | string | Hayır |
proxy_pass | Proxy'lenen sunucu protokolü ve adresi. Wallarm düğümü belirtilen adrese gönderilen istekleri işleyip meşru olanları bu adrese proxy'ler. Protokol olarak 'http' veya 'https' belirtilebilir. Adres bir alan adı veya IP adresi ve isteğe bağlı bir port olarak belirtilebilir. | string | Evet, preset proxy ise |
mode | Trafik filtreleme modu. Olası değerler: off , monitoring , safe_blocking , block .Varsayılan olarak monitoring . | string | Hayır |
libdetection | Trafik analizi sırasında libdetection kütüphanesinin kullanılıp kullanılmayacağı. Varsayılan olarak true . | bool | Hayır |
global_snippet | NGINX genel yapılandırmasına eklenecek özel yapılandırma. Yapılandırmayı içeren dosyayı Terraform kod dizinine koyup bu değişkende dosya yolunu belirtebilirsiniz. Değişken yapılandırma örneğini proxy gelişmiş çözüm dağıtımı örneğinde bulabilirsiniz. | string | Hayır |
http_snippet | NGINX'in http yapılandırma bloğuna eklenecek özel yapılandırma. Yapılandırmayı içeren dosyayı Terraform kod dizinine koyup bu değişkende dosya yolunu belirtebilirsiniz.Değişken yapılandırma örneğini proxy gelişmiş çözüm dağıtımı örneğinde bulabilirsiniz. | string | Hayır |
server_snippet | NGINX'in server yapılandırma bloğuna eklenecek özel yapılandırma. Yapılandırmayı içeren dosyayı Terraform kod dizinine koyup bu değişkende dosya yolunu belirtebilirsiniz.Değişken yapılandırma örneğini proxy gelişmiş çözüm dağıtımı örneğinde bulabilirsiniz. | string | Hayır |
post_script | Wallarm düğümü başlatma betiğinden (cloud-init.py ) sonra çalıştırılacak özel betik. İstediğiniz betiği içeren dosyayı Terraform kod dizinine koyup bu değişkende dosya yolunu belirtebilirsiniz.Değişken yapılandırma örneğini proxy gelişmiş çözüm dağıtımı örneğinde bulabilirsiniz. | string | Hayır |
AWS dağıtım yapılandırması | |||
app_name | Wallarm modülünün oluşturacağı AWS kaynak adları için ön ek. Varsayılan olarak wallarm . | string | Hayır |
app_name_no_template | Wallarm modülünün oluşturacağı AWS kaynak adlarında büyük harflerin, sayıların ve özel karakterlerin kullanılıp kullanılmayacağı. false ise, kaynak adları yalnızca küçük harfleri içerir.Varsayılan olarak false . | bool | Hayır |
lb_subnet_ids | Application Load Balancer'ın dağıtılacağı AWS Virtual Private Cloud alt ağ kimliklerinin listesi. Önerilen değer, internet ağ geçidine rotası olan bir yönlendirme tablosuyla ilişkilendirilmiş genel alt ağlardır. | list(string) | Hayır |
instance_subnet_ids | Wallarm EC2 örneklerinin dağıtılacağı AWS Virtual Private Cloud alt ağ kimliklerinin listesi. Önerilen değer, yalnızca çıkış bağlantılarına göre yapılandırılmış özel alt ağlardır. | list(string) | Hayır |
lb_enabled | Bir AWS Application Load Balancer oluşturulup oluşturulmayacağı. custom_target_group değişkeninde özel bir hedef grup belirtilmediği sürece bu değişkende verilen herhangi bir değerle bir hedef grup oluşturulacaktır.Varsayılan olarak true . | bool | Hayır |
lb_internal | Bir Application Load Balancer'ın dahili yük dengeleyici yapılıp yapılmayacağı. Varsayılan olarak, bir ALB internet-facing türündedir. Bağlantıları eşzamansız yaklaşımla ele alıyorsanız önerilen değer true 'dur.Varsayılan olarak false . | bool | Hayır |
lb_deletion_protection | Bir Application Load Balancer'ın yanlışlıkla silinmeye karşı korunmasının etkinleştirilip etkinleştirilmeyeceği. Üretim dağıtımları için önerilen değer true 'dur.Varsayılan olarak true . | bool | Hayır |
lb_ssl_enabled | Bir istemci ile Application Load Balancer arasında SSL bağlantılarının müzakere edilip edilmeyeceği. true ise lb_ssl_policy ve lb_certificate_arn değişkenleri gereklidir. Üretim dağıtımları için önerilir.Varsayılan olarak false . | bool | Hayır |
lb_ssl_policy | Application Load Balancer için güvenlik politikası. | string | lb_ssl_enabled true ise Evet |
lb_certificate_arn | AWS Certificate Manager (ACM) sertifikasının Amazon Resource Name (ARN) değeri. | string | lb_ssl_enabled true ise Evet |
custom_target_group | Oluşturulan Auto Scaling grubuna eklenecek mevcut hedef grubun adı. Varsayılan olarak yeni bir hedef grup oluşturulup eklenir. Değer varsayılan dışındaysa AWS ALB oluşturma devre dışı bırakılır. | string | Hayır |
inbound_allowed_ip_ranges | Wallarm örneklerine gelen bağlantılara izin verilecek kaynak IP ve ağların listesi. AWS'nin, trafik genel alt ağlardan başlasa bile yük dengeleyici trafiğinin kaynağını maskelediğini unutmayın. Varsayılan olarak:
| list(string) | Hayır |
outbound_allowed_ip_ranges | Wallarm örneklerinden giden bağlantılara izin verilecek kaynak IP ve ağların listesi. Varsayılan olarak: "0.0.0.0/0" . | list(string) | Hayır |
extra_ports | Wallarm örneklerine gelen bağlantılara izin verilecek, dahili ağ için ek portların listesi. Yapılandırma bir güvenlik grubuna uygulanacaktır. | list(number) | Hayır |
extra_public_ports | Wallarm örneklerine gelen bağlantılara izin verilecek, genel ağ için ek portların listesi. | list(number) | Hayır |
extra_policies | Wallarm yığınıyla ilişkilendirilecek AWS IAM ilkeleri. Amazon S3'ten veri isteyen bir betiği çalıştıran post_script değişkeniyle birlikte kullanmak faydalı olabilir. | list(string) | Hayır |
source_ranges | Bir AWS Application Load Balancer'dan gelen trafiğe izin verilecek kaynak IP ve ağların listesi. Varsayılan olarak "0.0.0.0/0" . | list(string) | Hayır |
https_redirect_code | HTTP isteklerinin HTTPS'e yönlendirilmesi için kod. Olası değerler:
0 . | number | Hayır |
asg_enabled | AWS Auto Scaling grubu oluşturulup oluşturulmayacağı. Varsayılan olarak true | bool | Hayır |
min_size | Oluşturulan AWS Auto Scaling grubundaki minimum örnek sayısı. Varsayılan olarak 1 . | number | Hayır |
max_size | Oluşturulan AWS Auto Scaling grubundaki maksimum örnek sayısı. Varsayılan olarak 3 . | number | Hayır |
desired_capacity | Oluşturulan AWS Auto Scaling grubundaki başlangıç örnek sayısı. min_size değerine eşit veya ondan büyük ve max_size değerine eşit veya ondan küçük olmalıdır.Varsayılan olarak 1 . | number | Hayır |
autoscaling_enabled | Wallarm kümesi için Amazon EC2 Auto Scaling'in etkinleştirilip etkinleştirilmeyeceği. Varsayılan olarak false . | bool | Hayır |
autoscaling_cpu_target | AWS Auto Scaling grubunun korunacağı ortalama CPU kullanım yüzdesi. Varsayılan olarak 70.0 . | string | Hayır |
ami_id | Wallarm örneği dağıtımı için kullanılacak Amazon Machine Image kimliği. Varsayılan olarak (boş dize), en güncel imaj üst kaynaktan kullanılır. Wallarm düğümüne dayalı özel bir AMI oluşturabilirsiniz. | string | Hayır |
key_name | Wallarm örneklerine SSH ile bağlanmak için kullanılacak AWS anahtar çiftinin adı. Varsayılan olarak SSH bağlantısı devre dışıdır. | string | Hayır |
tags | Wallarm modülünün oluşturacağı AWS kaynakları için etiketler. | map(string) | Hayır |
Örneklerle Wallarm Terraform Modülünü denemek¶
Wallarm modülünü üretime dağıtmadan önce denemeniz için farklı kullanım şekillerine ait örnekler hazırladık:
Wallarm ve Terraform hakkında daha fazla bilgi¶
Terraform, birçok sağlayıcı (provider) ve kullanıma hazır yapılandırmaya (module) sahip olup, çeşitli üreticiler tarafından doldurulan herkese açık kayıt üzerinden kullanıcılara sunulur.
Wallarm bu kayıt defterine şunları yayımladı:
-
Terraform uyumlu ortamdan AWS'ye düğüm dağıtımı için Wallarm modülü. Bu makalede açıklanmıştır.
-
Terraform aracılığıyla Wallarm'ı yönetmek için Wallarm provider.
Bunlar, farklı amaçlar için kullanılan bağımsız öğelerdir; birbirlerini gerektirmezler.
Sınırlamalar¶
- Kimlik bilgisi doldurma (credential stuffing) tespiti şu anda desteklenmemektedir