Mapboxを安全に使用する

Mapboxはお客様にとって重要なインフラであり、当社はお客様のアカウント、データ、ユーザーを保護する為、最大限の努力を払っています。本ガイドではセキュアなアプリケーションの構築、アカウントの保護に関する推奨事項とリソース、Mapboxのセキュリティに関するより詳しい情報を参照できる場所について説明します。

セキュアなアプリケーションの構築

Mapboxを利用し、よりセキュアなアプリケーションを構築するためのガイドラインです。

アクセス・トークン

スコープの管理 各アクセス・トークンは特定のリクエストをMapbox API— に送信する スコープ と呼ばれる権限があります。以下にアクセス・トークンのスコープの事例を紹介します。:

  • クライアントアプリケーション (ブラウザ上で実行するWebアプリなど)はパブリック(公開)スコープのみを使用します。パブリックトークンはスタイルの読み取り専用のアクセス権です。
  • Make all requests requiring a token with secret scopes on a server. Secret token API requests should never be exposed to the client.
  • クライアント側で機密性の高い操作を行う必要がある場合 (新しいデータのアップロードやスタイルの削除など)、Mapbox Tokens APIを使い、操作用に一時トークンを生成します。
  • アカウントとデータを保護するために、各トークンに必要以上のスコープ(権限)を付与しないこと。たとえば、 Mapbox Uploads APIでデータをMapboxにアップロードするトークンを作成する場合、 uploads:writeuploads:readのスコープを選択します。Web/モバイルアプリでマップを表示する場合、styles:readfonts:readの含める個別のスコープを作成するものとし、機密情報のアップロードに関するスコープを含まないものとする。

URL制限の有効化 URL制限の追加を利用し、Webアプリのアクセス・トークンをよりセキュアにする事が可能です。URL制限を追加したトークンは指定URLから発信されたリクエストのみ処理し、制限のないトークンはどのURLから発信されたリクエストも処理します。本機能はMapbox GL JS 0.53.1以降のバージョンから対応しています。

トークンのローテーション Webページ上のパブリックアクセス・トークンは最終的に見えてしまう可能性があります。不正利用の疑いがある場合、トークンの削除とローテーションを行ってください。以下に、アクセス・トークンを管理およびローテーションするためのヒントを記載します:

  • トークンを御社サーバ内のアプリケーション設定や環境変数内に保存する。
  • 作成するアプリケーションごとに個別のトークンを生成することで、使用状況を管理し、予期しないアクティビティを検知しやすくなります。
  • Mapbox Tokens APIを利用し、トークンのローテーションを一定期間ごとに行う。

トークンを非公開にする オープンソースで公開されているiOSアプリやAndoroidアプリ内のアクセス・トークンをよりセキュアにし、他の開発者が濫用できない様にすることが可能です:

  • Xcodeを使用して非公開を利用して、GitHubレポジトリのiOSプロジェクト内にアクセス・トークンを保管することを避ける。
  • Gradleを使用して、GithubレポジトリのAndroidプロジェクト内にアクセス・トークンを保管することを避ける。

トークンの分析 予期しない使用状況を特定する為、トークンの分析を管理します。以下はアクセス・トークン別に使用状況を管理する上での推奨事項になります:

  • 統計ページ から、年間、月間、週間、カスタム日付範囲のアカウント/アクセス・トークン別の使用状況を確認できます。
  • アプリケーションごとに個別のトークンを使い、より詳細な使用状況確認可能です。

データセキュリティ

Mapboxアカウントには、アセットごとに様々なプライバシー/セキュリティの設定が存在します。プライバシーの設定をより詳しく知り、状況に合わせて正しく判断できる様になります。

タイルセット デフォルトの設定ではタイルセットはパブリック(公開)になっています。Only users on エンタープライスプランユーザーのみがプライベートタイルセットを作成可能です。以下にパブリックタイルセットとプライベートタイルセットを紹介します:

  • パブリックタイルセット: 全Mapboxユーザーのアクセス・トークンで使用できますが、別のユーザーが御社のタイルセットを使用する場合、タイルセットIDを必要とします。公開アクセス可能なタイルセットの中央レポジトリは存在しません。クライアント側のコードからパブリックタイルセットのタイルセットIDを公開した場合、別のMapboxユーザーはタイルセットを使用できますが、編集できません。
  • プライベートタイルセット: エンタープライスプランのユーザーは、Mapboxアカウントにタイルセットをアップロードの制限が可能になります。制限を行った場合、タイルセットは所有者のアクセス・トークンのみから読み込み可能になり、他のユーザー のアクセス・トークンから 御社 の手タイルセットにアクセスできません。

スタイル 契約プランに関係なく、スタイルをパブリックまたはプライベートにすることが可能です。スタイルを作成する場合、デフォルト設定ではプライベートになっています。以下にプパブリックとプライベートのスタイルの両方を紹介します:

  • パブリックスタイル: パブリックスタイル: スタイルがパブリックの場合、 全 Mapboxユーザーがアクセス・トークンを使ってスタイルURLを使用できます。ただし、スタイルをパブリックに変更または削除できるのは、スタイルの所有者だけです。
  • プライベートスタイル: スタイルがプライベートの場合、スタイルURL は所有者のアクセス・トークンでのみ使用できます。

コンテンツセキュリティポリシー(CSP)ディレクティブ

コンテンツセキュリティポリシー(CSP)でWebサイトのセキュリティポリシーを指定し、クロスサイトクリプティング(XSS)やその他のセキュリティ脆弱性のリスクを低減します。 その場合、Mapbox GL JSには次のCSPディレクティブが必要になります:

child-src blob: ; img-src data: blob: ; script-src 'unsafe-eval' ;

Mapboxやその他サービスからスタイルをリクエストするには、追加ディレクティブが必要になります。Mapboxでは、次のconnect-srcディレクティブを使用できます:

connect-src https://*.tiles.mapbox.com https://api.mapbox.com

Mapbox GL JS ポップアップ

開発者は、ユーザーがsetHTMLを使用してポップアップに任意データ(または、「信用されていないコンテンツ」)を提供するのを禁止してください。この手法には HTMLフィルタリングやサニタイジングは含まれておらず、信頼されたコンテンツでのみ使用してください。ユーザーがポップアップコンテンツを提供する場合は、setText を使用し、XSSに対するセキュリティを強化します。

APIリクエスト

Tilesets APIを使用してTileJSONメタデータを取得する場合、?secure パラメーターを使用しHTTPSエンドポイントとしてレスポンス内のリソースを要求します。

セキュリティ情報の確認

全Mapbox 製品に関蓮するセキュリティ上の問題については、セキュリティ情報ページをご確認ください。

アカウントを安全に保つ

Mapboxアカウントを安全に保ち、データ、請求情報、その他プロファイル情報を保護します。

強固なパスワード

アカウントを安全に保つ為、強固なパスワードを使用します。アカウント間でパスワードを再利用するのは避け、また、パスワードは秘密にし、可能な限り複雑なパスワードを使用してください。Mapboxアカウントにパスワードマネージャを使用することをご検討ください。

二要素認証

Mapboxアカウントに二要素認証を設定する可能です。多要素認証 (MFA) または 2段階認証とも呼ばれる 二要素認証 オプションではありますが、アカウントのセキュリティを強化する上で推奨します。有効にすると、モバイルデバイスの認証アプリで生成されたセキュリティコードとパスワードの入力を求めるメッセージをログイン時に表示します。当社は、Google Authenticator(iOS版Android版)を推奨しております。また、Windows phoneの場合は Authenticator アプリをご利用ください。

アカウントの二要素認証を有効にする方法については、 アカウントドキュメントのセキュリティセクションをご確認ください。

リカバリコードは、認証デバイスがなくてもサインイン可能なコードです。認証デバイスを紛失・交換した際にリカバリコードを使用してアカウントにアクセスを行います。コードを使用するには、パスワードとユーザー名またはメールアドレスが必要になります。 リカバリコードの使用手順に関しては、アカウントドキュメントをご確認ください。

バグバウンティ・プログラムについて

Mapboxは、インターネットをより安全な場所にするべく日々努力を重ねるソフトウェアセキュリティ研究者の方々に感謝をささげたいと常々考えています。当社のソフトウェアとWebサービスにセキュリティ脆弱性やバグを発見されたセキュリティ研究者に報奨金制度を設けさせて頂きました。

Learn about or report a security issue to our bug bounty program