Akamai EdgeWorkersとWallarm Code Bundle¶
Akamai EdgeWorkers は、プラットフォームのエッジでカスタムロジックの実行や軽量なJavaScript関数のデプロイを可能にする強力なエッジコンピューティングプラットフォームです。Akamai EdgeWorkers上でAPIやトラフィックを運用しているお客様向けに、Wallarmはインフラストラクチャを保護するためにAkamai EdgeWorkersにデプロイ可能なコードバンドルを提供します。
このソリューションでは、Wallarmノードを外部にデプロイし、特定のプラットフォームにカスタムコードまたはポリシーを注入します。これにより、トラフィックが外部のWallarmノードに転送され、潜在的な脅威に対する分析および保護が実現されます。Wallarmのコネクタと呼ばれるこれらの要素は、Azion Edge、Akamai Edge、Mulesoft、Apigee、AWS Lambdaなどのプラットフォームと外部のWallarmノードとの間の重要な連携役を果たします。このアプローチにより、シームレスな統合、安全なトラフィック解析、リスク軽減、そして全体的なプラットフォームのセキュリティが実現されます。
ユースケース¶
すべてのWallarm導入オプションの中で、本ソリューションは以下のユースケースに推奨されます:
-
Akamai EdgeWorkers上で運用されるAPIやトラフィックの保護
-
包括的な攻撃監視、レポーティング、および悪意あるリクエストの即時ブロックを提供するセキュリティソリューションが求められる場合
制限事項¶
このソリューションは受信リクエストのみで動作するため、いくつかの制限があります:
-
パッシブ検出方式を使用した脆弱性検出は正しく機能しません。このソリューションは、テスト対象の脆弱性に典型的な悪意あるリクエストに対するサーバーの応答に基づいてAPIの脆弱性を判断します。
-
Wallarm API Discoveryは、応答解析に依存しているため、トラフィックに基づいたAPIインベントリの探索は行えません。
-
強制閲覧の防御は、応答コードの解析が必要なため利用できません。
また、EdgeWorkers product limitationsおよびhttp-requestによる以下の制限もあります:
-
サポートされるトラフィック配信方式は、強化TLSのみです。
-
最大応答ヘッダーサイズは8000バイトです。
-
最大ボディサイズは1MBです。
-
サポートされないHTTPメソッド:
CONNECT
、TRACE
、OPTIONS
(サポートされるメソッド:GET
、POST
、HEAD
、PUT
、PATCH
、DELETE
)。 -
サポートされないヘッダー:
connection
、keep-alive
、proxy-authenticate
、proxy-authorization
、te
、trailers
、transfer-encoding
、host
、content-length
、vary
、accept-encoding
、content-encoding
、upgrade
。
必要条件¶
デプロイを進めるために、以下の必要条件を満たしていることを確認してください:
-
Akamai EdgeWorkers技術の理解
-
Akamai EdgeWorkers上で運用されるAPIやトラフィック
デプロイ¶
Wallarmを使用してAkamai EdgeWorkers上のAPIを保護するため、以下の手順に従ってください:
-
利用可能なデプロイオプションのいずれかを使用してWallarmノードをデプロイします。
-
Wallarm code bundleを取得し、Akamai EdgeWorkers上で実行します。
1. Wallarmノードのデプロイ¶
Akamai EdgeWorkers上でWallarmを利用する際、トラフィックフローはin-lineとなります。
-
サポートされるWallarmノードデプロイソリューションまたはアーティファクトのいずれかを選択し、提供されたデプロイ手順に従ってください。
-
以下のテンプレートを使用して、デプロイしたノードの設定を行ってください:
server { listen 80; server_name _; access_log off; wallarm_mode off; location / { proxy_set_header Host $http_x_forwarded_host; proxy_pass http://unix:/tmp/wallarm-nginx.sock; } } server { listen 443 ssl; server_name yourdomain-for-wallarm-node.tld; ### ここにSSL構成を記述 access_log off; wallarm_mode off; location / { proxy_set_header Host $http_x_forwarded_host; proxy_pass http://unix:/tmp/wallarm-nginx.sock; } } server { listen unix:/tmp/wallarm-nginx.sock; server_name _; wallarm_mode monitoring; #wallarm_mode block; real_ip_header X-EDGEWRK-REAL-IP; set_real_ip_from unix:; location / { echo_read_request_body; } }
以下の設定に注意してください:
- HTTPSトラフィック用のTLS/SSL証明書:Wallarmノードが安全なHTTPSトラフィックを処理できるよう、TLS/SSL証明書を適切に設定してください。具体的な設定は選択したデプロイ手法によります。たとえば、NGINXを使用している場合は、こちらの記事を参照してください。
- Wallarm operation mode の設定。
-
デプロイが完了したら、後で受信リクエスト転送先のアドレスとして使用するため、ノードインスタンスのIPアドレスを控えておいてください。
2. Wallarm code bundleの取得とAkamai EdgeWorkers上での実行¶
Akamai EdgeWorkers上でWallarm code bundleを取得し、実行するには、以下の手順に従ってください:
-
support@wallarm.comまでお問い合わせいただき、Wallarm code bundleを取得してください。
-
Akamaiの契約にEdgeWorkersを追加してください。
-
EdgeWorker IDを作成してください。
-
作成したIDを開き、Create Versionを押して、Wallarm code bundleをアップロードしてください。
-
最初にステージング環境で、作成したバージョンをActivateしてください。
-
すべてが正しく動作していることを確認後、本番環境で再度バージョンの公開を行ってください。
-
Akamai Property Managerで、Wallarmをインストールしたいプロパティを選択するか新規に作成してください。
-
新しく作成したEdgeWorkerを使用して新規のビヘイビアを作成し、例としてWallarm Edgeと命名し、以下の条件を追加してください:
-
Origin Serverが先にデプロイしたノードを指すように、もう一つのビヘイビアWallarm Nodeを作成してください。Forward Host HeaderをOrigin Hostnameに切り替え、以下の条件を追加してください:
-
新規プロパティ変数
PMUSER_WALLARM_MODE
に、値としてmonitoring
(デフォルト)またはblock
を追加してください。
セキュリティ設定ではHiddenを選択してください。 -
新しいバージョンを保存し、最初にステージング環境にデプロイした後、こちらを参照して本番環境にデプロイしてください。
テスト¶
デプロイされたポリシーの機能をテストするため、以下の手順に従ってください:
-
テストPath Traversal攻撃を使用してAPIにリクエストを送信してください:
-
Wallarm Consoleを開いて、US CloudまたはEU CloudのAttacksセクションに攻撃が表示されていることを確認してください。
Wallarmノードモードがblockingに設定されている場合、リクエストはブロックされます。
サポートが必要ですか?¶
WallarmとAkamai EdgeWorkersの連携によるデプロイに関して問題が発生した場合やサポートが必要な場合は、Wallarm supportチームまでお問い合わせください。実装プロセス中に発生する可能性のある問題の解決やガイダンスの提供に対応しております。