Microsoft Entra ID と Azure Maps REST API を使用することで入力制約付きデバイスをセキュリティで保護する

このガイドでは、シークレットを安全に格納できない、またはブラウザー入力を受け付けないパブリック アプリケーションやデバイスをセキュリティで保護する方法について説明します。 これらの種類のアプリケーションは、モノのインターネット (IoT) カテゴリに分類されます。 たとえば、スマート テレビ、センサー データ出力アプリケーションなどがあります。

Azure portal で Azure Maps アカウントの認証の詳細を表示するには:

  1. Azure portal にサインインします。

  2. Azure portal メニューに移動します。 [すべてのリソース] を選択し、Azure Maps アカウントを選択します。

  3. 左側のペインの [設定] で、 [認証] を選択します。

    Screenshot showing your Azure Maps authentication options in the Azure portal.

Azure Maps アカウントの作成時に、3 つの値が作成されます。 それらは、Azure Maps で次の 2 種類の認証をサポートするために使用されます。

  • Microsoft Entra 認証: Client ID は、REST API 要求に使用されるアカウントを表します。 Client ID 値は、アプリケーション構成に格納してから、Microsoft Entra 認証を使用する Azure Maps HTTP 要求を行う前に取得する必要があります。
  • 共有キー認証: Primary Key および Secondary Key は、共有キー認証のサブスクリプション キーとして使用されます。 共有キー認証は、Azure Maps への各要求で、Azure Maps アカウントによって生成されたキーを渡す処理に依存しています。 キーを定期的に再生成することをお勧めします。 再生成中に現在の接続を維持するために、2 つのキーが用意されています。 1 つのキーを、もう一方を再生成しているときに使用できます。 キーを再生成したら、新しいキーを使用するように、このアカウントにアクセスするすべてのアプリケーションを更新する必要があります。 詳細については、「Azure Maps による認証」を参照してください

Microsoft Entra ID にアプリケーションの登録を作成する

Note

Microsoft Entra ID でデバイス ベースのアプリケーションを作成して、Microsoft Entra サインインを有効にします。このアプリケーションには、Azure Maps REST API へのアクセスが許可されます。

  1. Azure portal の Azure サービスの一覧で、[Microsoft Entra ID]>[アプリの登録]>[新規登録] を選択します。

    A screenshot showing application registration in Microsoft Entra ID.

  2. [名前] を入力し、 [サポートされているアカウントの種類] として [この組織のディレクトリ内のアカウントのみ] を選択します。 [リダイレクト URI] で、[パブリック クライアント/ネイティブ (モバイルとデスクトップ)] を指定し、値に https://login.microsoftonline.com/common/oauth2/nativeclient を追加します。 詳細については、Microsoft Entra ID の「Web API を呼び出すデスクトップ アプリ: アプリの登録」を参照してください。 次に、アプリケーションを [登録] します。

    A screenshot showing the settings used to register an application.

  3. [認証] に移動し、[アプリケーションをパブリック クライアントとして扱う] を有効にして、Microsoft Entra ID を使用したデバイス コード認証を有効にします。

    A screenshot showing the advanced settings used to specify treating the application as a public client.

  4. 委任された API アクセス許可を Azure Maps に割り当てるには、アプリケーションに移動します。 [API のアクセス許可]>[アクセス許可の追加] の順に選択します。 [所属する組織で使用している API] で、「Azure Maps」を検索して選択します。

    A screenshot showing where you request API permissions.

  5. [Access Azure Maps] (Azure Maps へのアクセス) の横にあるチェック ボックスをオンにしてから、 [アクセス許可の追加] を選択します。

    A screenshot showing where you specify the app permissions you require.

  6. ユーザーまたはグループの Azure ロールベースのアクセス制御 (Azure RBAC) を構成します。 詳しくは、「Azure Maps へのロール ベースのアクセスをユーザーに付与する」をご覧ください。

  7. アプリケーションでトークン フローを取得するためのコードを追加します。実装の詳細については、「デバイス コード フロー」を参照してください。 トークンを取得する場合、前の手順で選んだスコープ user_impersonation を参照します。

    ヒント

    アクセス トークンを取得するには、Microsoft Authentication Library (MSAL) を使用します。 詳しくは、Active Directory ドキュメントの「Web API を呼び出すデスクトップ アプリ: コード構成」をご覧ください。

  8. Microsoft Entra ID から取得したトークンを使用して HTTP 要求を作成し、有効な HTTP クライアントを使用して要求を送信します。

要求のサンプル

中心点と半径を使用して円ジオメトリとして表される単純なジオフェンスをアップロードするための要求本文のサンプルを次に示します。

POST /mapData?api-version=2.0&dataFormat=geojson
Host: us.atlas.microsoft.com
x-ms-client-id: 30d7cc….9f55
Authorization: Bearer eyJ0e….HNIVN

次の要求本文のサンプルは、GeoJSON の内容です。

{
    "type": "FeatureCollection",
    "features": [{
        "type": "Feature",
        "geometry": {
            "type": "Point",
            "coordinates": [-122.126986, 47.639754]
        },
        "properties": {
            "geometryId": "001",
            "radius": 500
        }
    }]
}

応答ヘッダーのサンプル

Operation-Location: https://us.atlas.microsoft.com/mapData/operations/{udid}?api-version=2.0
Access-Control-Expose-Headers: Operation-Location

Azure Maps に対するロールベースのアクセスをユーザーに許可する

Microsoft Entra グループまたはセキュリティ プリンシパルを 1 つまたは複数の Azure Maps ロール定義に割り当てることで、"Azure ロールベースのアクセス制御 (Azure RBAC)" を許可できます。

Azure Maps で使用できる Azure ロールの定義については、「組み込みの Azure Maps ロールの定義を表示する」のセクションを参照してください。

作成されたマネージド ID またはサービス プリンシパルに、使用可能な Azure Maps ロールを割り当てる方法の詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください

大量のユーザーの Azure Maps アプリとリソース アクセスを効率的に管理するには、「Microsoft Entra グループ」を参照してください。

重要

ユーザーがアプリケーションに対する認証を許可されるようにするには、まずそのユーザーを Microsoft Entra ID に作成する必要があります。 詳細については、Microsoft Entra ID を使用してユーザーを追加または削除するを参照してください。

ユーザーの大規模なディレクトリを効果的に管理する方法については、「Microsoft Entra ID」を参照してください。

警告

Azure Maps の組み込みロールの定義は、多くの Azure Maps REST API に対する非常に大きな承認アクセスを提供します。 API のアクセスを最小限に制限するには、カスタム ロールの定義を作成して、システム割り当て ID をカスタム ロールの定義に割り当てる方法に関する記事を参照してください。 これにより、アプリケーションが Azure Maps にアクセスするために必要な最小限の権限が有効になります。

次のステップ

Azure Maps アカウントにおける API 使用状況メトリックを確認します。