コンテンツにスキップ

自分の API をテストする

Mayhem がどのように API テストに役立つのかを確認しました。今度は、自分の API をテストしましょう。

API のテストを開始するには、次の 2 つを指定するだけです。

  1. API を記述する仕様
  2. API に到達可能な URL

たとえば、次のようなコマンドを実行します。

mapi run my-api 30 <specification> --url <url>

API 仕様

Info

仕様はローカル ファイルまたは URL として mapi に渡すことができます。

Mayhem は OpenAPI 3 仕様を中心として構築されています。API を記述した OpenAPI 仕様がすでに存在する場合、準備は完了です。URL またはファイル システム パスを <specification> 引数として直接 mapi に渡します。

OpenAPI 仕様がない場合、下記のとおり、いくつかの選択肢があります。

OpenAPI 2.x ("Swagger" と呼ばれることもあります)

mapi run は自動的に古い OpenAPI/Swagger 仕様を検出し、処理します。

別の方法として、mapi convert swagger2 コマンドを使用して古い仕様を実行することで、OpenAPI 3 への 1 回限りの変換を行うこともできます (詳細については mapi help convert swagger2 を参照してください)。

Postman

Mayhem は Postman Collection をサポートしています。詳細についてはこちらの「Postman Collection のサポート」を参照してください。

HAR

上記のどれも存在しない場合、Mayhem が使用できる仕様を生成するため、多少の作業を行う必要があります。手順についてはこちらの詳細ドキュメントを参照してください。

API URL

Mayhem は API サーバーの URL を認識している必要があります。リクエストはローカルで実行されている mapi CLI ツールから直接送信されるため、以下の API をテストできます。

  • 企業のファイアウォールの背後にある API
  • ローカルホスト上の API
  • プライベートなネットワーク内の API
  • パブリックなインターネット上の API

CLI を実行している CLI が API にアクセスできれば、ファジングが可能です。

fuzz-private-example

近接性と遅延時間

Mayhem は任意の構成で動作しますが、(ネットワーク用語で) API サーバーに「近い」ほど良好に動作します。最善の結果を得るには、ローカルで実行されているサーバー インスタンスをファザーに指定します。

絶対に運用環境では実行しない

Mayhem の仕事はただ 1 つ、API を壊す方法を発見することです。絶対に、運用環境のサービスの URL をテスト対象として Mayhem に指定してはいけません。

ローカルに結果を保存する

Enterprise プランを利用している場合、mapi run の呼び出しで --local フラグを指定することで、「ローカル」モードで mapi CLI を実行できます。通常どおりにターゲット API がファジングされますが、いくつか注意点があります。

ローカル モードで Mayhem API テストを実行する場合の必要事項

  • mapi CLI を実行する組織メンバーのアクティブな Enterprise プラン

ローカルなランで Mayhem サーバーにアップロードされるもの

  • 匿名化されたコントリビューター シート数
  • API ターゲットのプレースホルダー (一致するターゲットが存在しない場合)

ローカルなランで Mayhem サーバーにアップロードされないもの

  • ジョブの詳細 (遅延時間、カバーされたエンドポイント)
  • 問題 (送信リクエスト、受信レスポンス)
  • 変換対象の仕様 (つまり、HAR ファイルは自動的にアップロードされず、仕様に変換されません)
  • OWASP ZAP API Scan ルールなど、サードパーティとの統合によるカスタム問題ルール

ローカルなランの結果を取得する方法

mapi CLI によってサポートされるレポート フォーマットは、Web UI レポート以外は問題のレポートに関する章で説明されているとおりに動作します。結果が Mayhem API テスト サービスにアップロードされないため、Web UI レポートは動作しません。

ローカルなランの結果を永続的に保存するのは呼び出し側の責任です。

変換用ファイル (swagger2 → openapi なし)

ご自分の API をテストするよう Mayhem を構成できたでしょうか?

Info

API ですでに問題が発見されている場合、先に結果の詳細について扱っている問題に関する章を参照するとよいでしょう。

多くの現実の API では、Mayhem に認証の方法を指示することが次のステップになるでしょう。これについては、次のセクションで説明します。