このドキュメントでは、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 Web Token をクライアント アプリまたはウェブサイトで取得し、それを使用して Fleet Engine と安全に通信する方法を含める必要があります。詳細については、必要なアプリケーションの設定手順をご覧ください。ドライバー エクスペリエンスまたはコンシューマー エクスペリエンスのドキュメントをご覧ください。
サーバー アプリとクライアント アプリのセキュリティ フロー
次のシーケンス図は、バックエンド サーバーで ADC を使用し、クライアント アプリケーションとウェブサイトで JWT を使用して、Fleet Engine でサーバーおよびクライアント アプリの認証と認可を行うフローを示しています。
バックエンド サーバーが Fleet Engine で車両とルートまたはタスクを作成します。
バックエンド サーバーによる車両へのルートまたはタスク: ドライバー アプリがアクティブになると、割り当てを取得します。
バックエンド サーバー: 割り当てられたタスクまたはルートに適した IAM ロールを持つ、それぞれのサービス アカウントの JWT に署名して発行します。
クライアント アプリ: クライアント アプリは、受信した JWT を使用して、車両の位置情報の更新を Fleet Engine に送信します。
次のステップ
- Fleet Engine プロジェクトを作成します。
- サーバーから JSON Web Token を発行する方法を学習する。
- 詳しくは、サービス アカウントのロールをご覧ください。
- 詳しくは、JWT をご覧ください。