APIセキュリティとは?基礎知識や重要性、サイバー攻撃への対策方法を解説!
![](https://www.gmosign.com/media/wp-content/uploads/2022/09/eyecatch_00006.jpg)
クラウドサービスなどをより便利に利用できるとされているAPIとはどのようなものでしょうか。また、利用する場合、セキュリティ対策は不要なのでしょうか。今回はAPIの基礎知識と、セキュリティ対策について解説します。
APIの基礎知識
まず、ここではAPIの基礎知識と基本的な使い方、そしてAPIを利用するとどのようなことが実現できるのかを解説します。
APIとは?
API(Application Programming Interface)とは、プログラムやアプリケーションを他のプログラムやアプリケーションなどと連携させるために用意する仕組みです。(他のプログラムとのやりとりを行う仕組み自体のことをインターフェイスと呼びます。)
APIの具体的な使用例
APIを使うと、他のアプリケーションやシステム、クラウドサービスなど(以降、これらをサービスと表記します)から、別のサービスとのデータ連携が可能となります。
例えば、顧客情報をまとめるサービス(A)があるとします。このサービス(A)が提供するAPIを利用すると、他のサービス(B)から、新たな顧客情報をサービス(A)に引っ張ってきて、格納することができます。
情報を提供するサービスなどにも、APIが設けられている場合があります。例えば、天気予報を提供するサービス(C)があるとします。このサービス(C)が提供するAPIに対して、他のサービスから住所を送信すると、その住所の天気予報が取得できるのです。
APIの提供者と利用者の関係
APIは提供する側と利用する側が存在します。
まず、APIを提供する側は、基本的には自身の開発したプログラムやサービスがあります。
開発したサービス(A)は、利用者に対してあるデータを提供しているとしましょう。サービス(A)から提供されるデータは、サービス(A)の利用者にしか提供されません。しかし、利用者からすると、同時に使っている他のサービス(B)からも、サービス(A)のデータが使えれば利便性が高まる場合があります。そこで、開発者はユーザの利便性向上のために、サービス(A)とサービス(B)の連携を実現することを目的に、APIを開発するのです。
次に、APIの利用する側を見てみましょう。
前述のようにAPIの利用者は、サービス(A)に設けられたAPIを使うことで、他のサービス(B)と連携できます。これまで解説したようにAPIを利用すると、利便性は高まりますが、それだけではありません。APIの利用者がサービス(C)を開発するときにサービス(A)の機能を組み込めるようになるのです。
Web APIとは?
APIの中でも、インターネットを通じて利用できるものをWeb APIと呼びます。Web APIを利用するために必要な通信は、通常のインターネット接続と同じく、HTTP/HTTPSが使われます。
多くのWeb APIでは、API提供元のサービスに対して、依頼内容をHTTPリクエスト※の形で送信し、その結果を受け取る流れです。例えば、データが欲しいというリクエストや、データを格納したいというリクエストを行うと、成否が得られ、その結果に応じてデータを受け取れるというわけです。
(この記事では、主にWeb APIを想定して解説しています。)
※HTTPリクエスト:Webサーバに対して要求するリクエストです。日ごろ私たちは特に意識していませんが、Webサイトを閲覧する場合もHTTPリクエストが使われています。具体的には「このURLの結果を見たい」というHTTPリクエストをWebサーバに対して行い、その応答としてWebサイトのデータが送られています。
APIのセキュリティが重要な理由
APIを利用する場合、セキュリティにも注意を払う必要があります。まずは、APIを利用するうえで起こりうるリスクには、どのようなものがあるか見てみましょう。
まず、データの改ざんです。もし利用するAPIが、第三者によって改ざんされていた場合、意図しない不正なデータが返ってくる可能性があります。さらに、本来利用しようと考えていたAPIではない、すなわち正規のAPIになりすましたAPIに接続させられる可能性もあるのです。
また、データの傍受というリスクもあります。APIで利用される通信を傍受されてしまえば、重要なデータが外部に流出してしまったり、第三者によって収集されたりするおそれもあるのです。
さらに、APIの認証情報を悪用されるリスクもあります。API提供者は、APIの利用には基本的に認証を行っています。これは第三者にAPIを使われないようにすることが、主な理由です。一方で、この認証情報が第三者に漏えいしてしまえば、APIを利用したデータの取得や書き換えも、第三者が行えるようになってしまうのです。
主なAPIのセキュリティ対策
前述したようにAPIは便利な半面、セキュリティリスクもあります。このためAPI提供者は、さまざまな対策を講じているのです。ここでは5つの対策について、簡単に解説します。
トークンによるアクセス制御
利用者の持つ鍵(トークン)を利用し、アクセスを制御する方法です。代表的な方法にOAuth2.0などがあります。
暗号化と署名の使用
APIで使用する通信を暗号化したり、取得できるデータを暗号化したりします。暗号化はいわゆるパスワードを用いるのではなく、電子署名を用いるものもあります。
脆弱性の特定
APIはプログラムで作成されており、他のソフトウェアや、通信も利用しています。このため、APIは一度作ったから終わりではなく、常に最新の情報をもとに、脆弱性の有無を確認する必要があります。当然ですが、脆弱性を特定したら、それを塞ぐ作業も必要です。
クォータとスロットリングの使用
APIクォータを使うと、APIの実行回数に制限がかけられます。このため、悪意のあるものが不正にAPIを連続で利用するといった被害を防ぐことが可能です。また、スロットリングも同様に、アクセス回数を制限できます。スロットリングはある時間内における回数や、特定の操作に対する制限なども可能です。
APIゲートウェイの使用
APIの認証情報などを外部サービスであるAPIゲートウェイに任せ、APIを利用しやすくする方法です。APIゲートウェイは使用回数などを監視しやすくしてくれるため、不正な利用なども確認しやすくなるでしょう。
FAPI
Financial-grade APIの略で、金融関連といった高度なセキュリティ対策が必要な場面に使われます。FAPIはセキュリティ標準であり、これに準拠することで高度なセキュリティ対策が可能です。例えば、FAPIには、トークンの暗号化/セッション※を奪われない対策/生体認証などの高度な認証/なりすまし対策などが含まれています。
APIにおいては、OAuth2.0とFAPIを組み合わせることで、最も強固といえるセキュリティ対策を実現できるといえるでしょう。
※ログインなどを何度も行わずに済むよう、一定期間ログイン状態を維持する仕組みです。APIでは、連続してAPIを利用する場合に使われています。セッションを奪われてしまうと、第三者が容易にログインできてしまいます。
以上、5つの対策を見てみましたが、APIの利用者から見ると、これらを選んで対策するのは、現実的には難しいといえます。なぜなら、これらの対策は、基本的にAPIの提供者が行うからです。
では、利用者はどのようなことに注意すればよいのでしょうか。例えば「認証情報をしっかりと管理する」「利用しているサービスにどのようなAPIがあり、自社でどのAPIを使っているのか把握する」「利用していないAPIを利用停止できるのであれば、使えなくしておく」などです。
利用者自身が行えるセキュリティ対策が少ないこともあり、APIを積極的かつ安全に使いたい場合は、しっかりとAPIに対するセキュリティ対策を行っているサービスを選択することが大切です。しかし、「OAuth2.0とFAPIを組み合わせているAPIを使いたい」と思ってもなかなか難しい現実があります。それは、APIの提供者がそこまでの情報を公開していないことが一般的だからです。気になる場合には、提供者に問い合わせてみるのもよいでしょう。
APIはセキュリティ対策のきちんとしたものを選びたい
APIは、プログラムとプログラムを連携し、データなどをやりとりする仕組みです。このAPIという仕組みを使い、さまざまなサービスが便利な機能を提供しています。便利な一方で、セキュリティ対策についても考慮する必要があります。
しかし、APIのセキュリティ対策が、どの程度まで行われているかを公開しているサービスは多くありません。もし電子契約システム「電子印鑑GMOサイン」のAPIについて、セキュリティ対策が気になる場合には、ぜひお問い合わせください。