APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

Wallarm クラウドネイティブWAAP・APIセキュリティープラットホームのご紹介

はじめに

エーピーコミュニケーションズでは先日「Wallarm クラウドネイティブWAAP・APIセキュリティープラットホーム」の販売と導入支援を開始いたしました。

www.ap-com.co.jp

今回はその雰囲気を少しでも感じてもらえるよう、簡単に内容をご紹介したいと思います。

Wallarm クラウドネイティブWAAP・APIセキュリティープラットホームのご紹介

Cloud Native時代、従来型のWebアプリケーションに加え、RESTful APIなどさまざまなプロトコルを利用したAPIによるサービスの提供が増えています。さらにMicroserviceによりAPI Endpointも増加しており、そのセキュリティの確保が重要度を増しています。 こうした状況に従来型WAF(Web Application Firewall)では管理が追いつかないといったことも起きているのではないでしょうか。

Wallarm.Incが提供するWallarm クラウドネイティブWAAP・APIセキュリティープラットホーム(以下Wallarmと略します)はこうした課題を解決するサービスです。

www.wallarm.com

Wallarmは以下のような特徴を持っています。

シンプルな運用

Wallarmは シグネチャレス なWAFとして機能します。環境に合わせた細かい設定などは必要ありません。インストールしたその直後から脅威検知・ブロック等が行われます。 さらに偽陽性も少なく(ゼロに近い)、さらに自動インシデント分析機能で検出したセキュリティ脅威に優先順位をつけられるため、普段の運用負荷がとても小さくすることができます。

また、検出した脅威のリプレイコマンド(curlコマンドに必要情報を付加したスニペット)を生成できるので、脅威対応(修正)後の動作確認も容易に行うことができます。

著名なチャットツールやログサービスとも連携できるので、重要な脅威検知時の自動通知なども簡単に実現できます。

多様なプロトコルをサポート

APIとひとことで言っても現在は複数のデータフォーマット(プロトコル)が存在します。これに合わせWallarmではAPIで利用する主要なプロトコルをサポートしています。

  • RESTful API
  • GraphQL
  • gRPC
  • WebSocket

多様なプラットフォームに対応

Wallarmは、以下のような多様な形式で 提供されており、プラットフォームを問わず様々なプラットフォームにデプロイ可能です。

  • Nginx / Nginx Plus
  • Envoy
  • Docker container
  • Kubernates ingress nginx controller
  • Kubernetes sidecar
  • Kong Servicemesh

API自動ディスカバリー

Wallarmは処理した内容から自動的にAPIを検出できます。REST APIではOpenAPI(Swagger) Viewも自動生成可能です。 こうした情報を自動生成しているので、ゾンビAPI(本来サービスを終了しているはずが、何らかの理由で利用し続けられている状態のAPI)などの検出も容易です。

シンプルな課金体系

Wallarmは単純にアクセス数をベースにした課金体系を採用しています。インストールノード数等は課金には影響ありません。 複数のサービスを提供しているならば、導入したいところすべてにいくつもノードをインストールしてもOKです。それらすべてのトータルのアクセス数が課金対象となります。

AKS Ingress Controllerで利用する

実際にどのようにインストールするかをご紹介しましょう。今回はAKSに導入しようと思います。 Wallarm社が ingress nginx controllerのhelm chartを用意しているので、こちらを利用します。こちらの内容は本家ingress-nginxのものに、wallarm機能を追加ものですのですでにingressn-ngnxの設定を持っている場合は values.yamlのcontroller.wallarm の項目を追加するだけでOKです(実際私もそのようにしました)。標準的には数項目の追加でOK.

controller:
  wallarm:
      enabled: true
      apiHost: us1.api.wallarm.com
      existingSecret:
        enabled: true
        secretKey: nodeToken
        secretName: wallarm-config
〜〜以下略 通常のingress controllerの設定です〜〜

こちらを導入したら、あとは対象とするサービスのIngress設定のannotationsに以下の内容を追加します。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name:  service-name
  labels:
    app: service-name
metadata:
  annotatoins:
    # ここではblockモードにしています / 検知だけする observer モードもあります
    nginx.ingress.kubernetes.io/wallarm-mode: block
    # Wallarm内でグルーピングするためのアプリケーション番号を指定します
    nginx.ingress.kubernetes.io/wallarm-application: <app number>

これで完了です。

(設定後数日経過していますが)Wallarmのコンソール画面では以下のように確認できます。

Maricious trafficが3と出ているのは動作確認のために意図的に自分でアタックを仕掛けたものです。 ちゃんと検出されているのがわかります。なお、このアタックは攻撃実行時にリアルタイムで画面上で確認できました。 もちろん個別の攻撃内容も確認できます。

導入までとても簡単、そしてそれ以降とくに何も設定していません。本当に簡単です。

公開利用/組織内利用問わず現在の各種サービスはインターネットを経由してWebサービス/APIを提供していることが多いと思います。その数もどんどん増えてる一方ではないかと思います。そうした多くのサービスごとにWallamを導入することで攻撃・脅威から守ることができます。ぜひ、ご活用を検討いただければと思います。

さいごに

私たちACS事業部はAzure・AKSなどのクラウドネイティブ技術を活用した内製化のご支援をしております。ぜひお声がけください。

www.ap-com.co.jp

また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。

www.ap-com.co.jp