モバイルアプリのセキュリティ

モバイルアプリのセキュリティやユーザーのプライバシーを保護するために、New Relic Mobile では、パフォーマンスデータのみ収集します。監視対象のアプリが利用したり、保存するデータは収集していません。ここでは、モバイルあアプリに関するセキュリティに関する考慮事項について説明します。

データ収集

New Relic Mobile は、iOS や Android アプリの一部であり、アプリの「サンドボックス」内にあるため、モバイルアプリのパフォーマンスデータ以外はアクセスできません。New Relic Mobile SDK エージェントは、以下を含むデータを収集し、New Relic サーバーに送信します。

  • アプリケーションのセッションの長さ
  • HTTP リクエストの URL、HTTP ステータスコードを、レスポンスタイム、リクエストとレスポンスボディの長さ。
  • ネットワーク障害時の OS のエラーコード (完了に失敗した HTTP リクエスト)
  • HTTP リクエストが 4xx や 5xx といったステータスコードを返した際のレスポンスボディの最初の 2KB
  • HTTP リクエストが 4xx や 5xx といったステータスコードを返した際のスタックトレース (Androidのみ)
  • ワイヤレスのキャリア名
  • デバイスのモデル名とメーカー、及び OS バージョン
  • パッケージ、クラス、メソッド、スレッド名
  • ユニークなインスタンスID

New Relic Mobile は、SSL 暗号を使って常にデータを送り、New Relic サーバーの SSL 証明書を検証しています。これにより、一般的なデータ盗聴やサーバーのスプーフィングアタックを防ぎます。エージェントは、データを送信する前に、各 URL からクエリ文字列、フラグメント識別子、ユーザ名、およびパスワードを削除します。

ユニーク識別子

New Relic Mobile エージェントは、インストールされた各アプリのインスタンスごとにユニークな識別子を割り当てます。これにより、個々のインストールを追跡し、定期的なセッションを識別し、時間経過と共にパフォーマンスを相関できるようにしています

  • iOS: バージョン 5.3.5 以上では、iOS 用 Mobile は IdentifierForVendor プロパティを使って、ユニークなデバイス ID を提供しています。

    5.3.4 以下のバージョンでは、オープンソースライブラリの SecureUDID を使っています。SecureUDID は、多くのサードパーティーライブラリで使われており、Apple の App ストアのガイドラインに違反していない業界標準のライブラリです。SecureUDID は、IMEI のようなデバイスのハードウェア ID は利用していません。

  • Android: Android 用 Mobile は、暗号強度の高い UUID を生成し、アプリの SharedPreferences に保存します。

リモート更新なし

New Relic Mobile は、モバイルエージェントをリモートごしにアップグレードする機能はありません。また、エージェントが、勝手にモバイルアプリにコードを追加することもありません。

データストレージ

New Relic Mobile SDK エージェントは、設定情報をアプリの通常の preferences/settings API を使ってモバイルデバイス上に保存します。この設定には、アプリケーショントークン、アプリケーションのバージョン番号、New Relic Mobile SDK エージェントのバージョン番号、そして、1分あたりに追跡する HTTP リクエストの最大数などの設定も含まれています。パフォーマンスデータは、メモリにバッファされており、デバイスのストレージに書き込まれることはありません。

モバイルアプリ用のサーバーサイドのデータ・ストレージは、New Relic Mobile が監視する全ての他のアプリケーションと同様に処理処理されます。詳しく知りたい方は、ホスティングとデータ・ストレージについてのセキュリティに関するドキュメントをご覧ください。

一般的に、New Relic Mobile は、ウェブやモバイルのサブスクリプションのどちらかの多い方の期間に応じたパフォーマンスデータを保持します。また、アプリでアクティブなインスタンス数の集計レコードも保持します。

コードに追加された計測

New Relic Mobile SDK エージェントは、パフォーマンスデータを収集するために、アプリの特定のメソッド呼び出しにコードを挿入します。こうすることで、様々な API の入出力の時間を計測し、監視する New Relic Mobile コードが実行されると、アプリケーションのコールグラフにスタックフレームを追加されるという効果もあります。

この追加されるコードは、セキュリティ関連の欠陥を修正するため、常に見直され、テストされています。そして、安全なコーディングに関連するベストプラクティスを取り入れてきました。このコードがアプリケーションのプロセス内で実行されると、モバイルアプリのコードと同じ権限と制限の対象となります。

更に、iOS 用 Mobile エージェントでは、NSURLProtocol ハンドラーと登録し、NSURLConnection ベースのネットワークのアクティビティを追跡しています。この計測は、その他のカスタムな NSURLProtocol ハンドラーと互換性があります。このハンドラーは、単一のアプリケーションのプロセス内で登録されているため、他のアプリケーションや OS から送信されるネットワークリクエストを監視することができません。

関連情報

関連する情報は以下のとおりです。