[レポート] あなたのAPIをセキュアにする5つのステップ #SEC221 #reinvent

2019.12.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!DA事業本部の大高です!現地ラスベガスがらお送りします。

本記事はAWS re:Invent 2019のセッションレポートとなります。

概要

Cloud applications come with lots of built-in security features, but software administrators and users also play an integral role in keeping your system secure. As a result, organizations that haven’t been focusing on API security could be vulnerable to data theft, corruption, or DDoS attacks. In this session, a representative from Akamai walks you through some common attack vectors to help you increase your awareness of potential threats. Then, you learn about a five-step plan that you can implement to help protect your APIs. This presentation is brought to you by Akamai Technologies, an APN Partner.

クラウドアプリケーションには多くのセキュリティ機能が組み込まれていますが、ソフトウェア管理者とユーザーもシステムを安全に保つために不可欠な役割を果たします。その結果、APIセキュリティに注力していない組織は、データの盗難、破損、またはDDoS攻撃に対して脆弱になる可能性があります。このセッションでは、Akamaiの代表者が一般的な攻撃ベクトルを紹介し、潜在的な脅威に対する認識を高めます。次に、APIを保護するために実装できる5ステップの計画について学びます。このプレゼンテーションは、APNパートナーであるAkamai Technologiesによって提供されます。

スピーカー

スピーカーは以下の方になります。

  • Javier Garza - Sr. Developer Evangelist, Akamai

動画

スライド

スライドはこちらで公開されています。

アジェンダ

セッションは以下のアジェンダに沿って進行されました。

  1. 攻撃の方向性を理解する
  2. 5ステップによる攻撃の抑制
  3. エッジの効用
  4. おさらい

攻撃の方向性を理解する

  • APIの利用増加に伴い、ウェブのコンテンツタイプが変わってきた
  • 以前はHTMLが多かったが、いまではAPIによるJSON/XMLの呼び出しが多数を占める
  • IoTデバイスによる通信の増加もあり、今後の増加も見込まれる
  • 今日におけるハッカーの主な対象はAPIへ移った

APIのリクエストは以前から増えているであろうことは分かりますが、改めてグラフにして出されると、以下にウェブの世界が変わってきたかよく分かりますね。

  • APIには4つのエリアの脆弱性がある
  1. DDosアタック
  2. パラメータアタック
    • サーバに到達するまでにサニタライズをするべき
  3. SQLインジェクションアタック
  4. 認証情報盗聴攻撃

5ステップによる攻撃の抑制

Step 1: DDoS抑制

  • ネットワークコントロール
    • IPやCIDRによるブラックリスト化
    • 国による制限も
  • レートリミット
    • これは特に重要となる抑制方法
    • 閾値を設けて呼び出し制限を行う
  • スローポスト
    • 制限を設けることでコネクションを切断する
  • 認証
    • 相互認証

Step 2: 処理の保護

  • プロセッサー消費攻撃に対する対策を打つ
    • JSONのキーに対する上限を設定する
    • 最大のネストの深さを設定する

Step 3: 範囲攻撃とスクレイピング

  • 通信内容をスクレイピングし、データ取得範囲を書き換える攻撃に対する対策
    • 許容する範囲を設定することで抑制する

このあたりは個人的に意識が薄くなってしまうところなので、気を付けたいと思います。

Step 4: 認証の保護

  • 名簿が売買されることもあるので、パスワードの使い回しをしない
  • ログイン試行回数の抑制をする
  • 二要素認証
  • 人なのか機械なのかを判断する
    • モバイルの指紋による生体認証など

Step 5: BOTの管理

  • BOTを分類し、対応する

近年、ウェブリクエストにおけるBOTはとても増えているとのことです。良いBOTと悪意のあるBOTをいかに分類して制御するかがポイントとなります。

エッジの効用

  • CDNを利用することにより、よりセキュアに
  • パフォーマンスの向上

ここはAWSのサービスでは、CloudFrontを挟んであげることでうまく対処できそうですね。

API管理

  • セキュアで管理されたAPIが必要
  • API Gatewayによって簡単に実現

デモ

ここからは、地図上に示された各地点のサーバからのアクセス制御のデモです。

このデモではリクエストに閾値を設けて、閾値を超えたらリクエストをドロップするAPIのデモとなっていました。 地図上のオレンジアイコンの地点から同時にリクエストを行った場合、閾値を超えたらリクエストをドロップしている様子が、動的にグラフで表示される興味深いデモでした。

おさらい

  • セキュリティー対策 > 検証 > 防御 > 分析 のサイクルを回していく
  • 7日以内にすべきこと
    • APIにアクセスして、セキュリティーリスクを洗い出す
  • 1ヶ月以内にすべきこと
    • アクセスを理解する(誰が?どこから?どのように?)
    • APIのセキュリティー指標を定める
  • 3ヶ月以内にすべきこと
    • 組織が求めるものに応じて、セキュリティーソリューションを選択し、自動的に保護させる
    • すべてのパブリック、または、プライベートなAPIの保護をするため、開発プロジェクトを進める

まとめ

以上、「あなたのAPIをセキュアにする5つのステップ」のレポートでした。

セキュリティーについては、個人的には「ふわっと知っている」という程度だったのですが、このセッションによって、API保護のために行わなければならないポイントを抑えることができ、とてもためになりました。

それでは、また!