このドキュメントでは、Fleet Engine が Fleet Engine システムの 3 つの主要な環境(バックエンド サーバー、Fleet Engine サーバー、クライアント アプリケーションとウェブサイト)間の情報交換を保護する方法について説明します。
Fleet Engine は、最小権限の原則を使用して、次の 2 つの基本的な方法でセキュリティを管理します。
アプリケーションのデフォルト認証情報(ADC): サーバー間通信などの高権限環境。バックエンド サーバーが車両とルートを作成し、Fleet Engine で管理する場合に使用されます。詳細については、アプリケーションのデフォルト認証情報をご覧ください。
JSON Web Token(JWT): スマートフォンやブラウザで実行されるクライアント アプリケーションなど、信頼性の低い環境向け。Fleet Engine での車両位置の更新など、権限の低いオペレーションを実行するために使用されます。
信頼性の低い環境で必要とされる JWT は、サービス アカウントの秘密鍵を保護するためにバックエンド サーバーによって生成、発行され、Fleet Engine 固有の追加のクレームが含まれます。詳細については、JSON Web Token をご覧ください。
たとえば、ドライバーアプリがある場合、ドライバーはアプリを介して Fleet Engine のデータにアクセスします。アプリは、バックエンド サーバーから取得した JWT を使用して認証されます。含まれる JWT クレームとサービス アカウントのロールによって、ドライバーアプリがアクセスできるシステムの部分と、実行できる操作が決まります。このアプローチにより、運転タスクを完了するために必要なデータのみにアクセスが制限されます。
Fleet Engine は、これらのセキュリティ アプローチを使用して、次の機能を提供します。
認証は、リクエストを行うエンティティの ID を検証します。Fleet Engine は、信頼性の高い環境には ADC を、信頼性の低い環境には JWT を使用します。
認可は、認証されたエンティティがアクセスできるリソースを指定します。Fleet Engine は、Google Cloud IAM ロールを持つサービス アカウントと、認証されたエンティティにリクエストされたデータの表示または変更の権限があることを確認する JWT クレームを使用します。
サーバーとクライアントのセキュリティ設定
Fleet Engine でセキュリティを有効にするには、バックエンド サーバー、クライアント アプリケーション、ウェブサイトで必要なアカウントとセキュリティを設定します。
次の図は、バックエンド サーバーとクライアント アプリケーションでセキュリティを設定する手順の概要を示しています。

詳しくは、以降のセクションをご覧ください。
バックエンド サーバーのセキュリティ設定
フリート管理者は、以下の手順を行う必要があります。
サービス アカウントを作成して構成する。
Google Cloud コンソールでサービス アカウントを作成します。
サービス アカウントに特定の IAM ロールを割り当てる。
作成したサービス アカウントを使用してバックエンド サーバーを構成します。詳細については、サービス アカウントのロールをご覧ください。
Fleet Engine(ADC)との安全な通信を構成する: 適切な *Admin サービス アカウントでアプリケーションのデフォルト認証情報を使用して、Fleet Engine インスタンスと通信するようにバックエンドを構成します。詳細については、アプリケーションのデフォルト認証情報をご覧ください。
クライアント アプリ(JWT)との安全な通信を構成する: JSON Web Token ジェネレータを作成して、クライアント アプリケーションとモニタリング ウェブサイトに適切なクレームを含む JWT を作成します。詳細については、JSON Web Token を発行するをご覧ください。
アプリケーションのセキュリティ設定
アプリケーション デベロッパーは、バックエンド サーバーによって生成された JSON ウェブトークンをクライアント アプリまたはウェブサイトで取得し、それを使用して Fleet Engine と安全に通信する方法を組み込む必要があります。詳細については、必要なアプリケーションのドライバー エクスペリエンスまたはコンシューマー エクスペリエンスのドキュメントのセットアップ手順をご覧ください。
サーバーアプリとクライアント アプリのセキュリティ フロー
次のシーケンス図は、バックエンド サーバーで ADC を使用し、クライアント アプリケーションとウェブサイトで JWT を使用する Fleet Engine でのサーバーアプリとクライアント アプリの認証と認可のフローを示しています。

バックエンド サーバーが Fleet Engine で車両とルートまたはタスクを作成する。
バックエンド サーバーが車両にトリップまたはタスクを割り当てる: ドライバーアプリがアクティブな場合、割り当てを取得します。
バックエンド サーバー: 割り当てられたタスクまたはトリップに適切な IAM ロールを持つ、それぞれのサービス アカウントの JWT に署名して発行します。
クライアント アプリ: クライアント アプリは、受信した JWT を使用して、車両の位置情報の更新を Fleet Engine に送信します。
次のステップ
- Fleet Engine プロジェクトを作成します。
- サーバーから JSON Web Token を発行する方法を確認する。
- 詳しくは、サービス アカウントのロールをご覧ください。
- JWT の詳細を確認する。