F5 XC API Security のご紹介
F5 Distributed Cloud Services(以下、F5 XC)のWAAPの機能のAPI Securityについてご紹介します。
みなさん、こんにちは。
東京エレクトロンデバイスでエンジニアをしているあつふみです。
今回は F5 XCのセキュリティ機能の1つであるAPI Securityについて紹介します。
F5 XCについては、以下のブログで紹介していますので、併せてご確認ください。
F5 Distributed Cloud Services(以下、F5 XC)とは
今回はAPI Securityについて、2回のブログに分けて紹介していきたいと思います。
1回目では、以下について紹介していきます。
API 及びAPI Securityとは
まず、APIと言われてもどんなものなのかイメージがつかない方も多いかと思いますので、簡単に紹介します。
APIとは、Application Programing Interfaceの略です。
あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のことです。
簡単に言ってしまうと、アプリケーションやソフトウェアの内容を公開してくれるインターフェースのことでして、実は日常的によく使われています。
Youtubeの例になりますが、ある動画の視聴者の数、平均視聴時間、いいねの数などを地域または年齢毎の試聴データとして整理したい場合、APIがない場合、1つ1つ情報を取得して自分で整理しないといけません。
しかしながら、APIがある場合、特定のリクエストを投げるだけで、整理された視聴データを一括して取得することができます。また、APIでしか取れない情報などもあります。
このように、実はSNSなどでも日常的に使われているAPIですが、このAPIは製品によってはインターネットなどから誰でもアクセスすることが可能になっています。また、情報を取得するだけでなく、任意の情報を書き込んだり設定変更などをすることも可能です。
近年のIT製品のほとんどはこのAPIを持っており、このAPIを使って機器のステータス確認や設定投入などを行うケースが多くなっています。また、ユーザーからのアクセスだけでなく、複数のアプリケーションの連携でもこのAPIが良く使われています。
このようにあらゆるシーンでAPIが使われていますが、APIを使って機密情報を不正に取得したり、重要データを書き換えるなどの攻撃にも利用できてしまいます。
そこで、このAPIを使った攻撃を守るためにでてきたのがAPI Securityになります。
API Securityでは、アクセスできるユーザーを限定したりユーザーに必要以上の操作権限を与えない認証・認可の仕組みや、悪意のある攻撃や脆弱性をついた攻撃から保護する機能などが提供されます。
F5 XCのAPI Securityについて
それでは、F5 XCで提供されるAPI Securityの機能を見ていきたいと思います。
F5 XCのAPI Securityの機能はいくつかありますが、大きく「API Discovery」と「API Protection」の2つに分けることができます。
本ブログでは、API Discoveryについて説明したいと思います。API Protectionについては、次のブログで紹介する予定です。
API Discovery
F5 XCのAPI Discoveryは、F5 XCを経由する通信を学習することで、APIのエンドポイントやリクエストのレイテンシーなどのパフォーマンス情報を可視化してくれる機能です。
ちなみにAPIエンドポイントとは、以下のようなURLを指しています。APIを提供しているURLという意味ですね。
- ユーザー情報の取得ができるAPIエンドポイント: https://api.example.com/users
- 商品一覧の取得ができるAPIエンドポイント: https://api.example.com/products
- 特定の商品の詳細が取得できるAPIエンドポイント: https://api.example.com/products/123
- ユーザーの新しい投稿の作成ができるAPIエンドポイント: https://api.example.com/users/456/posts
今回は以下のような構成でAPI Discoveryの機能を試してみました。
APIのサーバーとしては、F5 BIG-IPを利用しており、api.example.comという仮のFQDNでAPIを公開しているような構成になっています。
BIG-IPはデフォルトでAPIが実装されており、デプロイするだけですぐ利用できますので、検証目的では便利ですね。
F5 XCのAPI Discoveryの設定方法についても簡単に説明します。
まずは、HTTP Load Balancerが必要になりますので、F5 XCのコンソールにログインします。次にWeb App & API Protectionというパネルをクリックして作成画面に移動します。
作成画面に移動したら、Manage > Load Balancers > HTTP Load Balancersから、Load Balancerを作成していきます。
細かい操作方法は省きますが、基本的には以下の設定をし「Save and Exit」をクリックするだけでHTTP Load Balancerを作成できます。
- DomainsにAPIサーバーのFQDN名(api.example.com)を登録
- OriginsにAPIサーバーのIPアドレスとポートを登録
- API Discovery の機能をEnable
なお、実際にはHTTPS通信を終端するためのサーバー証明書などの登録をする必要はありますが、今回は省略しています。
HTTP Load Balancerを作成すると、以下のようなCNAMEレコードが払い出されます。
払い出されたCNAMEレコードを使って、api.example.comのDNSレコードを以下のように書き換えます。
api.example.com CNAME ves-io-752xxxxxxxxxx
DNSレコードを書き換えることで、api.example.com宛の通信はすべてF5 XCを経由するようになり、これでAPI通信を学習することができるようになります。非常に簡単ですね。
では実際にAPIリクエストを投げて可視化してみたいと思います。
今回は、以下のようなリクエストを複数投げました。
そして、実際にF5 XCでAPIエンドポイントを可視化したのが以下の図になります。この図は、Overview > Dashboards > Security Dashboardから確認できます。
まず図のAPIエンドポイントの見方を、赤枠で囲った部分を例にみていきます。
「/」、「/mgmt」、「/tm」、「/ltm」、「/node」は、APIエンドポイントの各階層のパスを表しています。12や11などの数字は、その下の階層のパスが何種類あるかを示しています。そして、青字で「GET(Schema)」となっている部分が実際のAPI エンドポイントを表しています。
今回のFQDNはapi.example.comですので、赤枠の部分の灰色の帯をたどっていくことで、以下のようなAPIエンドポイントを発見したという意味になります。
- GET https://api.example.com/mgmt/tm/ltm/node
ちなみに、図では「GET(Schema)」のみですが、POSTメソッドの通信であれば、「POST(scheme)」となり、GET以外のメソッドも可視化されます。
同じような見方で他を見てみると、例えば、Segment4にある「/ltm」やSegment5にある「/pool」は以下のAPIエンドポイント表しています。
- Segment4 GET https://api.example.com/mgmt/tm/ltm
- Segment5 GET https://api.example.com/mgmt/tm/pool
文字で表現すると非常にイメージしにくいですが、この図のように可視化されると視覚的にも非常に分かりやすくなると思います。
今度は以下のEndpoint Detailsについてみてきます。
各APIエンドポイントをクリックすることで、エンドポイント毎にエラーレートやリクエストレートなどの情報を参照することが出来ます。これを確認することで、どこのAPIエンドポイントが良く使われているか、また各APIエンドポイントの負荷状況や遅延状況を確認できます。これも非常に便利な機能ですね。
ちなみに、このAPI Discoveryのどの部分がセキュリティの機能なのだろうかと思った方もいらっしゃるかもしれません。
確かにAPI Discovery自体が攻撃から守る機能ではないのですが、このAPIのエンドポイントを可視化することが非常に重要です。
全く想定していないAPIリクエストが来ている場合は攻撃の可能性がありますし、把握していないAPIエンドポイントがあり、そこの防御対策が不十分だった場合は、脆弱性をついた攻撃を受ける可能性があるからです。
そのような状況をいち早く察知して対応するために、このようなAPI Discoveryの機能が必要になってきます。
また、このAPI Discoveryの機能は、次回紹介する「API Protection」と併用することでさらに真価を発揮します。
今回のブログは以上になります。いかがでしたでしょうか。
次回は、F5 XCのAPI Protectionについてご紹介したいと思います。