Ana içeriğe geç

AWS Üzerinde Terraform Kullanarak Wallarm Dağıtımı

Wallarm, Terraform uyumlu ortamdan AWS üzerinde düğümü dağıtmak için Terraform modülünü sağlar. Bu modülü keşfetmek ve sağlanan dağıtım örneklerini denemek için bu yönergeleri kullanın.

Wallarm Terraform modülünü uygulayarak, iki temel Wallarm dağıtım seçeneğini mümkün kılan çözümü sunduk: in-line (bu dağıtım yönteminde proxy anlamına gelir) ve Out‑of‑band (mirror) güvenlik çözümleri. Dağıtım seçeneği, preset Wallarm modül değişkeni ile kolayca kontrol edilir.

Kullanım Durumları

Desteklenen tüm Wallarm dağıtım seçenekleri arasında, Terraform modülü şu kullanım durumlarında Wallarm dağıtımı için önerilir:

  • Mevcut altyapınız AWS üzerinde yer almaktadır.

  • Altyapıyı Kod olarak (IaC) uyguluyorsunuz. Wallarm'un Terraform modülü, Wallarm düğümünün AWS üzerinde otomatik yönetim ve tahsis edilmesini sağlayarak verimliliği ve tutarlılığı artırır.

Gereksinimler

  • Yerel olarak yüklü Terraform 1.0.5 veya daha yüksek

  • ABD veya AB Cloud ortamında Wallarm Console'da Administrator rolüne sahip hesaba erişim

  • ABD Wallarm Cloud ile çalışıyorsanız https://us1.api.wallarm.com adresine, AB Wallarm Cloud ile çalışıyorsanız https://api.wallarm.com adresine erişim. Lütfen erişimin bir güvenlik duvarı tarafından engellenmediğinden emin olun

  • Saldırı tespit kuralları güncellemelerini ve API spesifikasyonlarını indirmek, ayrıca izin verilen, reddedilen veya gri listelenmiş ülkeler, bölgeler veya veri merkezleri için hassas IP'leri almak üzere aşağıdaki IP adreslerine erişim

    34.96.64.17
    34.110.183.149
    35.235.66.155
    34.102.90.100
    34.94.156.115
    35.235.115.105
    
    34.160.38.183
    34.144.227.90
    34.90.110.226
    

Bu konuda, Wallarm'ı dağıtmak için gerekli tüm AWS kaynaklarının, örneğin bir VPC kümesinin oluşturulmasına yönelik talimatlar yer almamaktadır. Detaylar için ilgili Terraform kılavuzuna bakın.

Wallarm AWS Terraform Modülü Nasıl Kullanılır?

AWS Terraform modülü kullanarak üretim ortamında Wallarm'ı dağıtmak için:

  1. US Cloud veya EU Cloud üzerinden Wallarm Console için kayıt olun.

  2. Wallarm Console → Nodes bölümünü açın ve Wallarm node tipinde bir düğüm oluşturun.

    Creation of a Wallarm node

  3. Oluşturulan düğüm token'ını kopyalayın.

  4. Terraform yapılandırmanıza wallarm modül kodunu ekleyin:

    module "wallarm" {
      source = "wallarm/wallarm/aws"
    
      instance_type = "..."
    
      vpc_id     = "..."
    
      preset     = "proxy"
      proxy_pass = "https://..."
      token      = "..."
    
      ...
    }
    
  5. wallarm modül yapılandırmasında değişken değerlerini ayarlayın:

Değişken Açıklama Tür Gerekli?
instance_type Wallarm dağıtımı için kullanılacak Amazon EC2 instance type, örn: t3.small. string Evet
vpc_id Wallarm EC2 instance'ını dağıtmak için kullanılacak AWS Virtual Private Cloud ID'si. string Evet
token Wallarm Console UI'dan kopyalanan Wallarm düğüm token'ı.

Bir token'ı birden fazla kurulumda kullanma

Seçilen platform ne olursa olsun, bir token'ı birden fazla kurulumda kullanabilirsiniz. Bu, Wallarm Console UI'da düğüm örneklerinin mantıksal olarak gruplandırılmasını sağlar. Örnek: bir geliştirme ortamına birkaç Wallarm düğümü dağıtırsınız; her düğüm, belirli bir geliştiriciye ait ayrı bir makinede bulunur.

string Evet
Wallarm'a özgü değişkenler
host Wallarm API sunucusu. Olası değerler:
  • ABD Cloud için us1.api.wallarm.com
  • AB Cloud için api.wallarm.com
Varsayılan olarak, api.wallarm.com.
string Hayır
upstream Dağıtılacak Wallarm düğüm versiyonu. Desteklenen minimum sürüm 4.0'dır.

Varsayılan olarak, 4.8.
string Hayır
preset Wallarm dağıtım şeması. Olası değerler:
  • proxy
  • mirror
Varsayılan olarak, proxy.
string Hayır
proxy_pass Proxy'lenen sunucu protokolü ve adresi. Wallarm düğümü, belirtilen adrese gönderilen istekleri işlemeye alacak ve geçerli olanları başka yere proxy olarak iletecektir. Protokol olarak 'http' veya 'https' belirtilebilir. Adres, alan adı veya IP adresi olarak ve isteğe bağlı olarak bir portla belirtilir. string Evet, eğer preset değeri 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 global yapılandırmasına eklenecek özel yapılandırma. Yapılandırma dosyasını Terraform kod dizinine koyabilir ve bu dosyanın yolunu bu değişkende 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ırma dosyasını Terraform kod dizinine koyabilir ve bu dosyanın yolunu bu değişkende 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ırma dosyasını Terraform kod dizinine koyabilir ve bu dosyanın yolunu bu değişkende 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 scripti (cloud-init.py) çalıştırıldıktan sonra çalıştırılacak özel script. Herhangi bir script içeren dosyayı Terraform kod dizinine koyabilir ve bu dosyanın yolunu bu değişkende 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 harf, sayı ve özel karakter kullanılacak mı. Eğer false ise, kaynak adları yalnızca küçük harflerden oluşacaktır.

Varsayılan olarak, false.
bool Hayır
lb_subnet_ids Bir Application Load Balancer'ın dağıtılacağı AWS Virtual Private Cloud alt ağ ID'lerinin listesi. Önerilen değer, bir internet geçidine yönlendirme olan yönlendirme tablosuna bağlı genel alt ağlardır. list(string) Hayır
instance_subnet_ids Wallarm EC2 instance'larının dağıtılacağı AWS Virtual Private Cloud alt ağ ID'lerinin listesi. Önerilen değer, yalnızca çıkış bağlantıları için 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 iç yük dengeleyici olmasını isteyip istemediğiniz. Varsayılan olarak, bir ALB internet'e açık tiptedir. Bağlantıları asenkron bir yaklaşımla yönetiyorsanız, önerilen değer true'dur.

Varsayılan olarak, false.
bool Hayır
lb_deletion_protection Bir Application Load Balancer'ın yanlışlıkla silinmesini engelleyecek korumanı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. Eğer 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 Bir Application Load Balancer için güvenlik politikası. string Evet, eğer lb_ssl_enabled true ise
lb_certificate_arn Bir AWS Certificate Manager (ACM) sertifikasının Amazon Resource Name (ARN). string Evet, eğer lb_ssl_enabled true ise
custom_target_group Oluşturulan Auto Scaling grubuna eklenecek mevcut hedef grubunun adı. Varsayılan olarak, yeni bir hedef grup oluşturulup eklenir. Eğer değer varsayılan değilse, AWS ALB oluşturma devre dışı bırakılacaktır. string Hayır
inbound_allowed_ip_ranges Wallarm instance'larına gelen bağlantılara izin verilmesi için kaynak IP'lerin ve ağların listesi. Unutmayın ki AWS, genel alt ağlardan kaynaklansa bile, yük dengeleyici trafiğini maskeleyebilir.

Varsayılan olarak:
  • "10.0.0.0/8",
  • "172.16.0.0/12",
  • "192.168.0.0/16"
list(string) Hayır
outbound_allowed_ip_ranges Wallarm instance'larının giden bağlantılara izin verilen kaynak IP'lerin ve ağların listesi.

Varsayılan olarak: "0.0.0.0/0".
list(string) Hayır
extra_ports Wallarm instance'larına gelen bağlantılara izin verilmesi için iç ağdaki ekstra portların listesi. Yapılandırma, bir güvenlik grubuna uygulanacaktır. list(number) Hayır
extra_public_ports Wallarm instance'larına gelen bağlantılara izin verilmesi için genel ağdaki ekstra portların listesi. list(number) Hayır
extra_policies Wallarm yığınına ilişkilendirilecek AWS IAM politikaları. Amazon S3'ten veri talep eden scripti çalıştıran post_script değişkeni ile birlikte kullanmak yararlı olabilir. list(string) Hayır
source_ranges AWS Application Load Balancer trafiğine izin verilecek kaynak IP'lerin ve ağların listesi.

Varsayılan olarak, "0.0.0.0/0".
list(string) Hayır
https_redirect_code HTTP isteğinin HTTPS'ye yönlendirilmesi için kod. Olası değerler:
  • 0 - yönlendirme devre dışı
  • 301 - kalıcı yönlendirme
  • 302 - geçici yönlendirme
Varsayılan olarak, 0.
number Hayır
asg_enabled Bir AWS Auto Scaling grubunun oluşturulup oluşturulmayacağı.

Varsayılan olarak, true
bool Hayır
min_size Oluşturulan AWS Auto Scaling grubundaki minimum instance sayısı.

Varsayılan olarak, 1.
number Hayır
max_size Oluşturulan AWS Auto Scaling grubundaki maksimum instance sayısı.

Varsayılan olarak, 3.
number Hayır
desired_capacity Oluşturulan AWS Auto Scaling grubundaki başlangıç instance sayısı. min_size'a eşit veya daha fazla, max_size'a eşit veya daha az olmalıdır.

Varsayılan olarak, 1.
number Hayır
autoscaling_enabled Wallarm kümesi için [Amazon EC2 Auto Scaling]'i etkinleştirip etkinleştirmeyeceği.

Varsayılan olarak, false.
bool Hayır
autoscaling_cpu_target AWS Auto Scaling grubunda tutulacak ortalama CPU kullanım yüzdesi. Varsayılan olarak, 70.0. string Hayır
ami_id Wallarm instance'ının dağıtılmasında kullanılacak Amazon Machine Image (AMI) ID'si. Varsayılan olarak (boş string), upstream'den en son görüntü kullanılır. Wallarm düğümüne dayalı özel bir AMI oluşturabilirsiniz. string Hayır
key_name Wallarm instance'larına SSH üzerinden bağlanmak için kullanılacak [AWS key pair]'in 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

Wallarm Terraform Modülünü Örneklerle Deneme

Wallarm modülünü kullanmanın farklı yollarına dair örnekler hazırladık, böylece üretime dağıtmadan önce deneyebilirsiniz:

Wallarm ve Terraform Hakkında Daha Fazla Bilgi

Terraform, çok sayıda entegrasyonu (providers) ve kullanıma hazır yapılandırmaları (modules), birçok satıcı tarafından doldurulan genel registry üzerinden kullanıcılara desteklemektedir.

Wallarm, bu registry'e şunları yayınladı:

  • Terraform uyumlu ortamdan düğümü AWS'e dağıtmak için Wallarm module. Mevcut makalede anlatılmıştır.

  • Terraform üzerinden Wallarm'ı yönetmek için Wallarm provider.

Bu iki öğe birbirinden bağımsız olup farklı amaçlar için kullanılır, birbirlerine ihtiyaç duymazlar.

Sınırlamalar