セキュリティの概要

このドキュメントでは、Fleet Engine システムの 3 つの主要な環境(バックエンド サーバー、Fleet Engine サーバー、クライアント アプリケーションとウェブサイト)間で Fleet Engine が情報を安全に交換する方法について説明します。

Fleet Engine は、最小権限の原則に基づいて、次の 2 つの基本的な方法でセキュリティを管理します。

  • アプリケーションのデフォルト認証情報(ADC): サーバー間通信などの高権限環境。バックエンド サーバーが車両と乗車を作成し、Fleet Engine で管理している場合に使用されます。詳細については、アプリケーションのデフォルト認証情報をご覧ください。

  • JSON ウェブトークン(JWT): スマートフォンやブラウザで実行されるクライアント アプリケーションなどの信頼度の低い環境。Fleet Engine で車両の位置情報を更新するなど、権限の低いオペレーションを実行するために使用されます。

    信頼度の低い環境で必要な JWT は、サービス アカウントの秘密鍵を保護するためにバックエンド サーバーによって生成され、発行されます。また、Fleet Engine 固有の追加のクレームも含まれます。詳細については、JSON ウェブトークンをご覧ください。

    たとえば、ドライバー アプリがある場合、ドライバーはアプリを通じて Fleet Engine のデータにアクセスします。アプリは、バックエンド サーバーから取得した JWT を使用して認証されます。含まれる JWT クレームとサービス アカウントのロールによって、ドライバー アプリがアクセスできるシステムのどの部分と、実行できる操作が決まります。このアプローチにより、運転業務の完了に必要なデータのみにアクセスが制限されます。

Fleet Engine は、これらのセキュリティ アプローチを使用して次の機能を提供します。

  • 認証は、リクエストを行うエンティティの ID を検証します。Fleet Engine は、高信頼性環境には ADC を使用し、低信頼性環境には JWT を使用します。

  • 認可では、認証されたエンティティがアクセスできるリソースを指定します。Fleet Engine は、Google Cloud IAM ロールを持つサービス アカウントと、認証済みエンティティがリクエストしているデータを表示または変更する権限を持つことを保証する JWT クレームを使用します。

サーバーとクライアントのセキュリティ設定

Fleet Engine でセキュリティを有効にするには、バックエンド サーバーとクライアント アプリケーションおよびウェブサイトで必要なアカウントとセキュリティを設定します。

次の図は、バックエンド サーバーとクライアント アプリケーションでセキュリティを設定する手順の概要を示しています。

サーバーアプリとクライアント アプリの認証の設定時のセキュリティ フローの図

詳しくは、以降のセクションをご覧ください。

バックエンド サーバーのセキュリティ設定

フリート管理者は、以下の手順を行う必要があります。

  1. サービス アカウントを作成して構成する:

    1. Google Cloud コンソールでサービス アカウントを作成します。

    2. サービス アカウントに特定の IAM ロールを割り当てます。

    3. 作成したサービス アカウントを使用してバックエンド サーバーを構成します。詳細については、サービス アカウントのロールをご覧ください。

  2. Fleet Engine との安全な通信を構成する(ADC): 適切な *Admin サービス アカウントでアプリケーションのデフォルト認証情報を使用して Fleet Engine インスタンスと通信するようにバックエンドを構成します。詳細については、アプリケーションのデフォルト認証情報をご覧ください。

  3. クライアント アプリとの安全な通信を構成する(JWT): JSON Web Token ジェネレータを作成して、クライアント アプリケーションとモニタリング ウェブサイトに適したクレームを含む JWT を作成します。詳細については、JSON Web Token を発行するをご覧ください。

アプリケーションのセキュリティ設定

アプリケーション デベロッパーは、バックエンド サーバーで生成された JSON ウェブトークンを取得し、それを使用して Fleet Engine と安全に通信する方法をクライアント アプリやウェブサイトに組み込む必要があります。詳しくは、必要なアプリの Driver Experience または Consumer Experience のドキュメントにあるセットアップ手順をご覧ください。

サーバーとクライアント アプリのセキュリティ フロー

次のシーケンス図は、Fleet Engine で ADC をバックエンド サーバーに使用し、JWT をクライアント アプリケーションとウェブサイトに使用して、サーバーとクライアント アプリの認証と認可のフローを示しています。

サーバーとクライアント アプリの認証におけるオペレーション中のセキュリティ フローの図

  • バックエンド サーバーが Fleet Engine で車両、乗車、タスクを作成します。

  • バックエンド サーバーが車両に乗車またはタスクを割り当てる: ドライバー アプリがアクティブな場合、割り当てを取得します。

  • バックエンド サーバー: 割り当てられたタスクまたは乗車に適切な IAM ロールを持つ、それぞれのサービス アカウントの JWT に署名して発行します。

  • クライアント アプリ: クライアント アプリは、受け取った JWT を使用して、車両の位置情報の更新を Fleet Engine に送信します。

次のステップ