IBM API Connect için Wallarm Bağlayıcısı¶
IBM API Connect, API’lerin oluşturulması, güvence altına alınması, yönetilmesi ve izlenmesi için araçlar içeren, API yaşam döngüsünün tamamını kapsayan bir çözümüdür. Wallarm, IBM API Connect üzerinden yönetilen API’leri korumak için API trafiğini inceleyip kötü amaçlı istekleri azaltarak bir bağlayıcı olarak kullanılabilir.
Wallarm’ı IBM API Connect ile entegre etmek için, Wallarm Node’u harici olarak dağıtın ve inceleme için IBM API Gateway’i trafiği Node’a proxy’leyecek şekilde yapılandırın.
IBM API Connect için Wallarm bağlayıcısı yalnızca in-line trafik analizini destekler:
API belirtimiyle eşleşen istekler
IBM API Connect davranışına göre, yalnızca tanımlı OpenAPI yollarıyla eşleşen istekler Wallarm Node tarafından incelenecektir.
Kullanım senaryoları¶
Bu çözüm, IBM API Connect üzerinden yayımlanan API’lerin güvence altına alınması için önerilir.
Sınırlamalar¶
-
When deploying the Wallarm service with the
LoadBalancer
type using the Helm chart, a trusted SSL/TLS certificate is required for the domain. Self-signed certificates are not yet supported. -
Custom blocking page and blocking code configurations are not yet supported.
All blocked malicious traffic is returned with status code
403
and the default block page. -
Rate limiting by Wallarm rules is not supported.
Rate limiting cannot be enforced on the Wallarm side for this connector. If you need rate limiting, use the features built into your API gateway or cloud platform.
-
Multitenancy is not supported.
All protected APIs are managed under a single Wallarm account; separating protection across multiple accounts for different infrastructures or environments is not yet supported.
Gereksinimler¶
Dağıtıma devam etmeden önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
-
IBM API Connect ve IBM DataPower Gateway hakkında bilgi sahibi olmak.
-
Çalışır durumda bir IBM API Connect ortamı (yerel veya bulut yönetimli).
-
IBM API Connect içinde yayımlanmış bir API.
-
Komut satırı etkileşimi için kurulmuş IBM API Toolkit (
apic
veyaapic-slim
). -
US Cloud veya EU Cloud için Wallarm Console’da Administrator rolüne sahip hesaba erişim.
-
0.13.x serisinde 0.13.3 veya üzeri, ya da 0.14.1 veya üzeri sürümde Wallarm Node.
Dağıtım¶
1. Bir Wallarm Node’u dağıtın¶
Wallarm Node, dağıtmanız gereken Wallarm platformunun çekirdek bileşenidir. Gelen trafiği inceler, kötü amaçlı etkinlikleri tespit eder ve tehditleri azaltacak şekilde yapılandırılabilir.
İhtiyaç duyduğunuz kontrol seviyesine bağlı olarak Wallarm tarafından barındırılan ya da kendi altyapınızda barındırılan şekilde dağıtabilirsiniz.
Gerekli Wallarm Node sürümü
IBM API Connect entegrasyonu, 0.13.x serisinde 0.13.3 veya üzeri ya da 0.14.1 veya üzeri Wallarm Node sürümünü gerektirir. Daha eski sürümler bu bağlayıcıyı desteklemez.
Bağlayıcı için Wallarm tarafından barındırılan bir Node dağıtmak üzere talimatları izleyin.
Kendi barındırılan Node dağıtımı için bir yapıt seçin ve ekli talimatları izleyin:
- Yalın metal veya sanal makinelerdeki Linux altyapıları için All-in-one installer
- Konteyner tabanlı dağıtımlar kullanan ortamlar için Docker image
- Kubernetes kullanan altyapılar için Helm chart
2. Wallarm ilkelerini edinin ve IBM API Connect içindeki API’lere uygulayın¶
Wallarm, API Connect içindeki API’lere eklenebilen özel ilkeler sağlar. Bu ilkeler, API istek ve yanıtlarını inceleme ve tehdit tespiti için Wallarm Node üzerinden proxy’ler.
-
Wallarm Console → Security Edge → Connectors → Download code bundle yolunu izleyin ve platformunuz için bir code bundle indirin.
Kendi barındırılan Node çalıştırıyorsanız, code bundle almak için sales@wallarm.com ile iletişime geçin.
-
İstek inceleme ilkesini kaydedin:
-
Yanıt inceleme ilkesini kaydedin:
Çoğu durumda configured-gateway-service
adı datapower-api-gateway
’dir.
3. Wallarm inceleme adımlarını assembly işlem hattına entegre edin¶
API belirtiminizde, x-ibm-configuration.assembly.execute
bölümünde, trafiği Wallarm Node üzerinden yönlendirmek için aşağıdaki adımları ekleyin veya güncelleyin:
-
invoke
adımından önce, gelen istekleri Wallarm Node’a proxy’lemek içinwallarm_pre
adımını ekleyin. -
invoke
adımının aşağıdaki şekilde yapılandırıldığından emin olun:target-url
şu biçimi izlemelidir:$(target-url)$(request.path)?$(request.query-string)
. Bu, isteklerin orijinal arka uç yoluna tüm sorgu parametreleriyle birlikte proxy’lenmesini sağlar.header-control
veparameter-control
tüm başlık ve parametrelerin geçmesine izin verir. Bu, Wallarm Node’un tüm isteği analiz etmesine, isteğin herhangi bir bölümündeki saldırıları tespit etmesine ve API envanterini doğru biçimde oluşturmasına olanak tanır.
-
invoke
adımından sonra, yanıtları inceleme için Wallarm Node’a proxy’lemek üzerewallarm_post
adımını ekleyin.
...
x-ibm-configuration:
properties:
target-url:
value: <BACKEND_ADDRESS>
...
assembly:
execute:
- wallarm_pre:
version: 1.0.1
title: wallarm_pre
wallarmNodeAddress: <WALLARM_NODE_URL>
- invoke:
title: invoke
version: 2.0.0
verb: keep
target-url: $(target-url)$(request.path)?$(request.query-string)
persistent-connection: true
- wallarm_post:
version: 1.0.1
title: wallarm_post
wallarmNodeAddress: <WALLARM_NODE_URL>
...
Wallarm ilkelerinde desteklenen özellikler:
Parametre | Adım adı | Açıklama | Gerekli mi? |
---|---|---|---|
wallarmNodeAddress | wallarm_pre , wallarm_post | Wallarm Node örneği URL’si. | Evet |
failSafeBlock | wallarm_pre , wallarm_post | true (varsayılan) ise, Wallarm Node kullanılamaz olduğunda veya istek/yanıt iletiminde hata döndürdüğünde istek veya yanıtı engeller. | Hayır |
4. Güncellenmiş API ile ürününüzü yayımlayın¶
Trafik akışına yönelik değişiklikleri uygulamak için, değiştirilen API’yi içeren ürünü yeniden yayımlayın:
apic products:publish \
--scope <CATALOG OR SPACE> \
--server <MANAGEMENT SERVER ENDPOINT> \
--org <ORG NAME OR ID> \
--catalog <CATALOG NAME OR ID> \
<PATH TO THE UPDATED PRODUCT YAML>
Örnek: Wallarm ilkeleriyle API ve ürün¶
Bu örnek, assembly içine eklenmiş Wallarm istek ve yanıt inceleme adımlarını (wallarm_pre
, invoke
, wallarm_post
) içeren temel bir API ve ürün yapılandırmasını gösterir. Wallarm Node üzerinden trafik incelemesini test etmek için dağıtabilirsiniz.
- API belirtimi:
openapi: 3.0.3
info:
title: Hello API
version: 1.0.0
x-ibm-name: hello-api
servers:
- url: /
paths:
/hello:
get:
summary: Say Hello
responses:
'200':
description: OK
content:
text/plain:
schema:
type: string
x-ibm-configuration:
properties:
target-url:
value: https://httpbin.org
description: Filtreden geçen trafiğin proxy’lendiği yer
encoded: false
type: rest
phase: realized
enforced: true
testable: true
cors:
enabled: true
gateway: datapower-api-gateway
assembly:
execute:
- wallarm_pre:
version: 1.0.1
title: wallarm_pre
wallarmNodeAddress: <WALLARM_NODE_URL>
- invoke:
title: invoke
version: 2.0.0
verb: keep
target-url: $(target-url)$(request.path)?$(request.query-string)
persistent-connection: true
- wallarm_post:
version: 1.0.1
title: wallarm_post
wallarmNodeAddress: <WALLARM_NODE_URL>
activity-log:
enabled: true
success-content: activity
error-content: payload
- Ürün belirtimi:
product: 1.0.0
info:
name: hello-product
title: Hello Product
version: 1.0.0
description: Hello API’yi sunan temel bir ürün
apis:
hello-api:
$ref: ./api.yaml
plans:
default:
title: Default Plan
description: Açık erişim planı
approval: false
rate-limit:
value: unlimited
apis:
hello-api: {}
visibility:
view:
enabled: true
type: public
subscribe:
enabled: true
type: authenticated
gateways:
- datapower-api-gateway
Test¶
Dağıtılan ilkelerin işlevselliğini test etmek için şu adımları izleyin:
-
API’nize test Path Traversal saldırısını içeren isteği gönderin:
curl -k --request GET --url https://localhost:9444/<PATH ALLOWED BY SPEC> \ --header 'X-IBM-Client-Id: <YOUR IBM CLIENT ID>' \ --header 'accept: /etc/passwd'
IBM API Connect davranışına göre, yalnızca tanımlı OpenAPI yollarıyla eşleşen istekler Wallarm Node tarafından incelenecektir.
-
Wallarm Console → Attacks bölümünü US Cloud veya EU Cloud içinde açın ve saldırının listede göründüğünden emin olun.
Wallarm node modu engelleme olarak ayarlanmışsa ve trafik in-line akıyorsa, istek ayrıca engellenecektir (ekran görüntüsü bu durumu göstermektedir).
İlkeleri yükseltme¶
Dağıtılmış Wallarm ilkelerini daha yeni bir sürüme yükseltmek için:
-
Wallarm Console → Security Edge → Connectors → Download code bundle üzerinden IBM için güncellenmiş Wallarm ilkelerini indirin.
Kendi barındırılan Node çalıştırıyorsanız, güncellenmiş code bundle için sales@wallarm.com ile iletişime geçin.
-
Her bir ilkeyi
policies:create
komutunu kullanarak yeniden kaydedin ve güncellenmiş.zip
dosyalarını belirtin: -
wallarm-post.zip
için tekrarlayın. -
API belirtiminizde,
x-ibm-configuration.assembly.execute
içinde ilke sürümlerini güncelleyin:... x-ibm-configuration: ... assembly: execute: - wallarm_pre: version: <NEW_VERSION> ... - wallarm_post: version: <NEW_VERSION> ...
Her iki ilke de aynı sürüm numarasını kullanır.
-
İlgili ürünü
products:publish
komutunu kullanarak yeniden yayımlayın.
İlke yükseltmeleri, özellikle ana sürüm güncellemelerinde bir Wallarm Node yükseltmesi gerektirebilir. Kendi barındırılan Node sürüm notları ve yükseltme talimatları için Native Node değişiklik günlüğüne veya Edge connector yükseltme prosedürüne bakın. Eskimeyi önlemek ve gelecekteki yükseltmeleri kolaylaştırmak için düzenli Node güncellemeleri önerilir.