セキュリティの概要

このドキュメントでは、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 に送信します。

次のステップ