AWS VPC'de Proxy olarak Wallarm'ı Dağıtma¶
Bu örnek, Terraform modülünü kullanarak mevcut bir AWS Virtual Private Cloud (VPC) içine satır içi (inline) proxy olarak Wallarm'ı nasıl dağıtacağınızı gösterir.
Wallarm proxy çözümü, WAAP ve API güvenlik işlevleriyle gelişmiş bir HTTP trafik yönlendiricisi olarak hizmet veren ek bir işlevsel ağ katmanı sağlar.
ileri seviye proxy çözümünü deneyerek çözümün esnekliğini pratikte görebilirsiniz.
Güvenlik notu
Bu çözüm, AWS güvenlik en iyi uygulamalarını takip edecek şekilde tasarlanmıştır. Dağıtım için AWS root hesabının kullanılmamasını öneririz. Bunun yerine, yalnızca gerekli izinlere sahip IAM kullanıcılarını veya rollerini kullanın.
Dağıtım süreci, Wallarm bileşenlerini sağlamak ve işletmek için yalnızca asgari erişimin verildiği en az ayrıcalık ilkesini varsayar.
Kullanım senaryoları¶
Desteklenen tüm Wallarm dağıtım seçenekleri arasında, aşağıdaki kullanım senaryolarında AWS VPC üzerinde Wallarm dağıtımı için Terraform modülü önerilir:
-
Mevcut altyapınız AWS üzerinde bulunuyor.
-
Infrastructure as Code (IaC) uygulamasını benimsiyorsunuz. Wallarm'ın Terraform modülü, Wallarm node'unun AWS üzerinde otomatik yönetimi ve sağlanmasına olanak tanıyarak verimliliği ve tutarlılığı artırır.
Gereksinimler¶
-
Terraform 1.0.5 veya üzeri yerel olarak kurulu
-
US veya EU Cloud içindeki Wallarm Console'da Administrator rolü olan hesaba erişim
-
US Wallarm Cloud ile çalışıyorsanız
https://us1.api.wallarm.comveya EU Wallarm Cloud ile çalışıyorsanızhttps://api.wallarm.comerişimi. Lütfen erişimin bir güvenlik duvarı tarafından engellenmediğinden emin olun -
Tercih ettiğiniz herhangi bir AWS bölgesi; Wallarm node dağıtımı için bölgeye ilişkin özel bir kısıtlama yoktur
-
Terraform, AWS EC2, Security Groups ve diğer AWS servisleri hakkında bilgi
-
AWS root hesabı hiçbir zaman kaynak dağıtımı için kullanılmamalıdır
Lütfen bu kılavuzda açıklanan dağıtımı gerçekleştirmek için gerekli en az izinlere sahip özel bir IAM kullanıcısı veya rolü kullanın.
-
Geniş yetkilerden (örn.
AdministratorAccess) kaçının ve bu modülün çalışması için gereken belirli işlemleri atayınBu dağıtımda kullanılan IAM roller ve izinler, en az ayrıcalık ilkesine göre tasarlanmıştır. Yalnızca gerekli AWS kaynaklarını (örn. EC2, ağ, günlükleme) oluşturmak ve yönetmek için gereken izinler verilmelidir.
Çözüm mimarisi¶
Örnek Wallarm proxy çözümü aşağıdaki bileşenlere sahiptir:
-
İnternete açık Application Load Balancer, trafiği Wallarm node instance'larına yönlendirir.
-
Wallarm node instance'ları trafiği analiz eder ve istekleri ileriye proxy'ler. Şemadaki karşılık gelen öğeler A, B, C EC2 instance'larıdır.
Örnek, Wallarm node'larını açıklanan davranışı sağlayan izleme modunda çalıştırır. Wallarm node'ları, kötü amaçlı istekleri engellemeye ve yalnızca meşru olanları iletmeye yönelik olanlar da dahil olmak üzere diğer modlarda da çalışabilir. Wallarm node modları hakkında daha fazla bilgi için belgelerimizi kullanın.
-
Wallarm node'larının istekleri proxy'lediği servisler. Servis herhangi bir türde olabilir, örneğin:
- VPC Endpoints aracılığıyla VPC'ye bağlı AWS API Gateway uygulaması (ilgili Wallarm Terraform dağıtımı API Gateway için örnekte ele alınmıştır)
- AWS S3
- EKS kümesinde çalışan EKS node'ları (bu durum için Internal Load Balancer veya NodePort Service yapılandırılması önerilir)
- Diğer herhangi bir backend servis
Varsayılan olarak, Wallarm node'ları trafiği
https://httpbin.orgadresine iletir. Bu örneği başlatırken, AWS Virtual Private Cloud (VPC) içinden erişilebilen başka herhangi bir servis alan adını veya yolunu belirterek trafiği oraya proxy'leyebilirsiniz.https_redirect_code = 302modül yapılandırma seçeneği, AWS ALB tarafından HTTP isteklerini HTTPS'e güvenli şekilde yönlendirmenizi sağlar.
Yukarıda listelenen bileşenlerin tamamı (proxy'lenen sunucu hariç) sağlanan wallarm örnek modülü tarafından dağıtılacaktır.
Kod bileşenleri¶
Bu örnek aşağıdaki kod bileşenlerine sahiptir:
-
main.tf: proxy çözümü olarak dağıtılacakwallarmmodülünün ana yapılandırması. Bu yapılandırma bir AWS ALB ve Wallarm instance'ları üretir. -
ssl.tf:domain_namedeğişkeninde belirtilen alan adı için otomatik olarak yeni bir AWS Certificate Manager (ACM) sertifikası çıkaran ve bunu AWS ALB'ye bağlayan SSL/TLS offload yapılandırması.Özelliği devre dışı bırakmak için
ssl.tfvedns.tfdosyalarını kaldırın veya yorum satırı yapın ve ayrıcawallarmmodül tanımındakilb_ssl_enabled,lb_certificate_arn,https_redirect_code,depends_onseçeneklerini yorum satırı yapın. Özellik devre dışı bırakıldığında yalnızca HTTP portunu (80) kullanabileceksiniz. -
dns.tf: AWS ALB için DNS kaydı sağlayan AWS Route 53 yapılandırması.Özelliği devre dışı bırakmak için yukarıdaki notu izleyin.
Örnek Wallarm AWS proxy çözümünü çalıştırma¶
-
Wallarm Console'u açın → Nodes ve Wallarm node türünde bir node oluşturun.
-
Oluşturulan node token'ını kopyalayın.
-
Örnek kodu içeren depoyu makinenize klonlayın:
-
Klonlanan depodaki
examples/proxy/variables.tfdosyasındadefaultseçeneklerindeki değişken değerlerini ayarlayın ve değişiklikleri kaydedin. -
Proxy'lenen sunucunun protokol ve adresini
examples/proxy/main.tf→proxy_passiçinde ayarlayın.Varsayılan olarak, Wallarm trafiği
https://httpbin.orgadresine proxy'ler. Varsayılan değer ihtiyaçlarınızı karşılıyorsa olduğu gibi bırakın. -
Yığını
examples/proxydizininden aşağıdaki komutları çalıştırarak dağıtın:
Dağıtılan ortamı kaldırmak için aşağıdaki komutu kullanın:
Sorun giderme¶
Wallarm sürekli instance oluşturup sonlandırıyor¶
Sağlanan AWS Auto Scaling grup yapılandırması, en yüksek güvenilirlik ve hizmet sürekliliğine odaklanır. AWS Auto Scaling grubu başlatma sırasında EC2 instance'larının tekrarlı oluşturulup sonlandırılması, başarısız sağlık kontrollerinden kaynaklanabilir.
Sorunu gidermek için lütfen aşağıdaki ayarları gözden geçirip düzeltin:
-
Wallarm node token'ı, Wallarm Console UI'dan kopyalanmış geçerli değere sahiptir
-
NGINX yapılandırması geçerlidir
-
NGINX yapılandırmasında belirtilen alan adları başarıyla çözümlenmiştir (örn.
proxy_passdeğeri)
AŞIRI YÖNTEM Yukarıdaki ayarlar geçerliyse, Auto Scaling grup ayarlarında ELB sağlık kontrollerini manuel olarak devre dışı bırakarak sorunun nedenini bulmayı deneyebilirsiniz. Bu, hizmet yapılandırması geçersiz olsa bile instance'ları aktif tutar, instance'lar yeniden başlatılmaz. Böylece birkaç dakika içinde sorunu araştırmak yerine günlükleri ayrıntılı şekilde inceleyip hizmeti hata ayıklayabilirsiniz.
