このドキュメントでは、Fleet Engine システムの 3 つの主要な環境(バックエンド サーバー、Fleet Engine サーバー、クライアント アプリケーションとウェブサイト)間の情報交換を Fleet Engine が保護する方法について説明します。
Fleet Engine は、最小権限の原則に従って、次の 2 つの基本的な方法でセキュリティを管理します。
アプリケーションのデフォルト認証情報(ADC): サーバー間通信などの高権限環境。バックエンド サーバーが車両と乗車を作成し、Fleet Engine で管理している場合に使用されます。詳細については、アプリケーションのデフォルト認証情報をご覧ください。
JSON Web Token(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 でセキュリティを有効にするには、バックエンド サーバーとクライアント アプリケーションおよびウェブサイトで必要なアカウントとセキュリティを設定します。
次の図は、バックエンド サーバーとクライアント アプリケーションでセキュリティを設定する手順の概要を示しています。
詳しくは、以降のセクションをご覧ください。
バックエンド サーバーのセキュリティ設定
フリート管理者は、以下の手順を行う必要があります。
サービス アカウントを作成して構成する:
Google Cloud コンソールでサービス アカウントを作成します。
サービス アカウントに特定の IAM ロールを割り当てます。
作成したサービス アカウントを使用してバックエンド サーバーを構成します。詳細については、サービス アカウントのロールをご覧ください。
Fleet Engine との安全な通信を構成する(ADC): 適切な *Admin サービス アカウントでアプリケーションのデフォルト認証情報を使用して Fleet Engine インスタンスと通信するようにバックエンドを構成します。詳細については、アプリケーションのデフォルト認証情報をご覧ください。
クライアント アプリとの安全な通信を構成する(JWT): JSON Web Token ジェネレータを作成して、クライアント アプリケーションとモニタリング ウェブサイトに適したクレームを含む JWT を作成します。詳細については、JSON ウェブトークンを発行するをご覧ください。
アプリケーションのセキュリティ設定
アプリケーション デベロッパーは、バックエンド サーバーで生成された JSON ウェブトークンを取得し、それを使用して Fleet Engine と安全に通信する方法をクライアント アプリやウェブサイトに組み込む必要があります。詳しくは、必要なアプリケーションのドライバー エクスペリエンスまたはコンシューマー エクスペリエンスのドキュメントにあるセットアップ手順をご覧ください。
サーバーアプリとクライアント アプリのセキュリティ フロー
次のシーケンス図は、Fleet Engine で ADC を使用してバックエンド サーバーを認証し、JWT を使用してクライアント アプリケーションとウェブサイトを認証するサーバーとクライアント アプリの認証と認可のフローを示しています。
バックエンド サーバーが Fleet Engine で車両、乗車、タスクを作成します。
バックエンド サーバーが車両に旅行またはタスクを割り当てる: ドライバー アプリがアクティブな場合、割り当てを取得します。
バックエンド サーバー: 割り当てられたタスクまたは乗車に適切な IAM ロールを使用して、それぞれのサービス アカウントの JWT に署名して発行します。
クライアント アプリ: クライアント アプリは、受け取った JWT を使用して、車両の位置情報の更新を Fleet Engine に送信します。
次のステップ
- Fleet Engine プロジェクトを作成します。
- サーバーから JSON Web Token を発行する方法を学習する。
- サービス アカウントのロールの詳細を確認する。
- JWT の詳細を確認する。