APIって何が出来る?注意すべき点は?

カテゴリ お知らせ

いつも Liquidのご利用ありがとうございます。

今回はLiquidのAPIで出来る事、そして注意点を解説します。
(どちらかというとAPI自体をほとんど使った事のない方向けです。自身でBotを構築したりしてる方には知ってる事ばかりかもしれません。)

 

なぜAPIの解説?

なぜAPIの解説をするかというと、、、先日弊社ではAPIを利用しての疑わしい取引行為を検知した為です。

この原因はAPIキーを保管している外部サービスの脆弱性に関連している可能性が高いとの事でした(少なくとも弊社脆弱性起因では無い)

この件については皆様に このEmail を送っているので、「内容を覚えてない。。。」、「開封してないわ。。。」って方がいたらこのリンクから概要確認できます。

という訳で前置きが長くなりましたが、こういった事を未然に防いだり、皆様にLiquidをより便利で安全に使って欲しいという想いからこの記事をポストしております。

 

APIで何が出来る?

そもそもAPI とはなんでしょうか。

アプリケーションプログラミングインタフェース(API、英: Application Programming Interface)[1]とは、広義ではソフトウェアコンポーネント同士が互いに情報をやりとりするのに使用するインタフェースの仕様である。

APIには、サブルーチン、データ構造、オブジェクトクラス、変数などの仕様が含まれる。APIには様々な形態があり、POSIXのような国際標準規格、マイクロソフトのWindows APIのようなベンダーによる文書、プログラミング言語の標準ライブラリ(例えば、C++のStandard Template LibraryやJava API(英語版)など)がある。

出典: wikipedia

うーむ。難解な単語が多いですね。

実際、APIは様々な事が出来るので全容の理解が難しい部分もあります。
APIが出来る事の1つの側面として、全く異なるサービス同士を接続する機能
と覚えておくと最初の一歩として問題ないと思います。

良く見るケースとして

  • Google mapがサイトに埋め込まれている(Google mapと自分のWebの接続)、
  • Twitterウィンドウがブログに埋め込まれている(Twitterと自分のブログの接続)
  • 銀行の残高と家計簿アプリを連携させて残高推移を表示させる(銀行のAPIと家計簿アプリの接続)

Liquidでも残高を取得したり、発注、決済をAPI接続した先のサービスやシステムから行う事が可能です。

これが出来ると、他取引所の価格が一定以下になったら自動的に注文を出したり、自分の残高が一定金額以上になったら通知を出したり、前年の取引結果と比べたりと、アイディア次第でいろいろな事が出来る様になります。

ここがAPIを利用する1番の楽しみではないかと思っています。

api-usecase

どうやってログインしているのか

APIを利用すると他のサービスと接続する事が出来る。という事がわかりました。
しかし実際のところ、接続するにはどういった情報が必要なのでしょうか。
何と接続するにしても、まずは 接続先のサービスに接続するLiquidのアカウントを指定しなければなりません。

ではどうやって指定すれば良いでしょうか。
ログインの時に使用するEmailとPasswordでしょうか?
確かにこれなら自分のアカウントを指定して自身のものだと証明も出来そうです。
EmailとPasswordを知っているのは原則、自身だけのはずですからね。

しかしLiquidのAPIではこれらを使用しません。
APIトークンIDとAPIトークン秘密鍵を利用します。
長いので、以下トークンIDと秘密鍵と記載しますね。
(他サービスでは、秘密鍵をシークレットと言ったり、トークンIDを単にトークンと言ったり、明確に呼び名は定まっていないと思います。)

 

トークンID

  • 数桁の数字だけの羅列で表される
  • 1つのLIquidアカウントで、何個でも作れる。
  • 1つのトークンIDには必ず1つの秘密鍵が紐づけられている。
  • 自分ではIDの数字を決められない。

 

秘密鍵

  • 数字、英字、記号などが含まれた長めの文で表される。
  • 秘密鍵はトークン作成時に1度しか表示されない。
  • トークンIDがEmailだとすれば、秘密鍵はPasswordにあたる。

APIでは、この2つの情報を使って、接続するアカウントの指定、そして自身のアカウントである証明を行っています。
言い換えれば、これらの情報が第三者に漏洩した場合、その人物はあなたのアカウントの全機能にアクセスする事ができます。
(全機能という事は、注文も、出金も可能という事です)

考えるだけで恐ろしいこのケースですが、これをどうやって防いでいくのか。
あなたのアカウントの防御力を高める方法を次章で紹介していきます。

APIトークンを実際に作る方法についてはこちらのページが参考になるのでご覧下さい。

api-token

 

APIを安全に利用する為に

LiquidのAPIを他サービスと接続するにはトークンIDと秘密鍵が必要であると学びました。
一旦、APIでは無い通常のログイン方法について考えてみましょう。

通常のログインの場合は、下記の3つが必要です。

  • Email
  • Password
  • 2段階認証

APIでは必要な情報が2つしかありませんでした。
これはセキュリティが弱くなっているのでは?

はい。実際のところ、トークンIDと秘密鍵だけではセキュリティが高いとは言えません。

APIを安全に利用する為に取れる手段が大きく分けて3つあるので紹介していきます。
これらをしっかり行う事で、APIを利用する際の安全性を向上できます。

 

IPホワイトリストを設定する

IPアドレスというものがあります。
ざっくり言うと、インターネット上の住所の様なものです。
“IPアドレス確認” などの文章でググるとIPアドレスが確認出来ると思います。

LiquidではIPアドレスをホワイトリストに登録する事が出来ます。
これによって仮にトークンIDと秘密鍵が漏洩しても、ホワイトリストに登録したIPアドレス以外からのアクセスを防ぐ事が出来ます。

これを設定する事で飛躍的にセキュリティを高める事が出来ます。
必ず設定する事を強くお勧めします。

具体的な設定方法は こちら をご覧ください。

ip-whitelist-image

 

 

APIトークンに適切な権限を設定する

APIトークンにはそれぞれ出来る事の設定をする事が可能です。権限の設定にはカテゴリと、それに対する 書き込み権限、読み込み権限が存在します。

このあたりは少し複雑なのですが、簡単に言うと下記です。

  • 書き込み権限があるとなんでも出来る。
  • 読み込み権限があると情報を見る事しか出来ない。

例えば

  • 出金カテゴリに読み込み権限だけがある場合は、API経由で出金履歴を確認する事は出来ますが、実際に出金命令を出す事は出来ません。
  • 注文カテゴリに読み込み権限、書き込み権限の両方がある場合は、発注も出来ますし、注文履歴を確認する事も可能です。

重要なのは、書き込み権限 です。

利用するサービスに応じて必要な権限だけを付与して、不要な権限は付与しない様に設定しましょう。(取引だけのサービスならば、出金には権限を付与しないなど)

 

利用していないAPIトークンは削除する

APIトークンは言い換えると、アカウントにアクセスする為の入り口の数と言えます。
使用していないAPIトークンがある場合は、その入り口を閉じる事でアカウントをより安全に保つ事が出来ます。

APIトークンは削除したとしても、いつでも再作成する事が出来ます。
長い事放置している、など不安なAPIトークンがあれば削除を行いましょう。
必要になったら、またすぐに再作成出来ます。

 


 

まとめ

ここまでLiquidのAPIで出来る事、利用する際の注意点について記載しました。

  • IPホワイトリストは必ず設定する
  • APIトークンには適切な権限を設定する
  • 利用していないAPIトークンは削除する

以上の3つを守って便利に、そして安全にAPIの利用をしましょう。

APIに興味が湧いたという方がおりましたら下記にLiquidのAPI関係のリソースページを記載しておきますので、ぜひご覧ください。

APIドキュメント(英語)

APIドキュメント(日本語)

API関係のナレッジベース

投稿者

Liquid編集部