セキュリティの概要

このドキュメントでは、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 でセキュリティを有効にするには、バックエンド サーバー、クライアント アプリケーション、ウェブサイトで必要なアカウントとセキュリティを設定します。

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

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

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

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

フリート管理者は、以下の手順に沿って対応する必要があります。

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

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

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

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

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

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

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

アプリケーション デベロッパーは、バックエンド サーバーによって生成された JSON Web Token をクライアント アプリまたはウェブサイトで取得し、それを使用して Fleet Engine と安全に通信する方法を含める必要があります。詳細については、必要なアプリケーションのドライバー エクスペリエンスまたはコンシューマ エクスペリエンスのドキュメントで設定手順をご覧ください。

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

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

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

  • バックエンド サーバーが Fleet Engine で車両とルートまたはタスクを作成します

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

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

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

次のステップ