次の方法で共有


アプリが最小限のアクセス許可で API を呼び出しているかどうかを確認する方法

アプリをビルドするときは、多くの場合、いくつかの API と操作と統合します。 アプリが安全であり、最小特権の原則に従っていることを確認するには、アプリが最小限のアクセス許可で API を呼び出しているかどうかを確認する必要があります。 最小限のアクセス許可を使用することで、データとリソースへの不正アクセスのリスクを軽減できます。

アプリが最小限のアクセス許可で API を呼び出しているかどうかを確認するのは、新しい操作を統合するたびに、アプリで使用するアクセス許可のセットを評価する必要があることです。 すべての操作とアクセス許可を手動で追跡することは時間がかかり、エラーが発生しやすくなります。 Dev Proxy と Azure API Center を使用すると、アプリが最小限のアクセス許可で API を呼び出しているかどうかを自動的に確認できます。

アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認するには、プラグインを ApiCenterMinimalPermissionsPlugin 使用できます。 このプラグインは、アプリが使用するアクセス許可と Azure API Center で定義されているアクセス許可を比較し、過剰なアクセス許可について報告します。 また、使用する必要がある最小限のアクセス許可セットも推奨されます。

記録された API 要求でトークンの最小限の API アクセス許可が使用されているかどうかを確認する開発プロキシを示すコマンド プロンプトのスクリーンショット。

開始する前に

アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認するには、組織内で使用する API に 関する情報を含む Azure API センター インスタンスが必要です。

ヒント

コマンド プロンプトで実行して、この方法に関する記事のプリセットをダウンロードします devproxy preset get demo-apicenter-minimalpermissions

Azure API Center インスタンスを作成する

開始する前に、Azure API Center インスタンスを作成し、組織内で使用する API を登録します。 API ごとに、API の操作とアクセス許可を記述した OpenAPI 仕様ファイルをアップロードします。

セキュリティ情報を含む API とその OpenAPI 仕様を含む Azure API Center のスクリーンショット。

この ApiCenterMinimalPermissionsPlugin 情報を使用して、アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認します。

API センターの情報をコピーする

Azure API Center インスタンスの [概要] ページで、API Center インスタンスの名前、リソース グループ名前、サブスクリプション ID をコピーします。 この情報は、Azure API Center インスタンスに接続できるように構成 ApiCenterMinimalPermissionsPlugin するために必要です。

いくつかのプロパティが強調表示されている Azure API Center の概要ページのスクリーンショット。

開発プロキシの構成

アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認するには、Dev Proxy 構成ファイルで有効にする ApiCenterMinimalPermissionsPlugin 必要があります。 アプリが使用するアクセス許可のレポートを作成するには、レポーターを追加します。

を有効にします。 ApiCenterMinimalPermissionsPlugin

ファイルに devproxyrc.json 、次の構成を追加します。

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.northwind.com/*"
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "subscriptionId": "00000000-0000-0000-0000-000000000000",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default"
  }
}

subscriptionIdresourceGroupName、およびserviceNameプロパティで、Azure API Center インスタンスに関する情報を指定します。

このプロパティで urlsToWatch 、アプリで使用する URL を指定します。

ヒント

Dev Proxy Toolkit Visual Studio Code 拡張機能を使用すると、開発プロキシの構成を簡単に管理できます。

レポーターを追加する

アプリ ApiCenterMinimalPermissionsPlugin が使用している API と、それらを呼び出すために必要な最小限のアクセス許可のレポートが生成されます。 このレポートを表示するには、開発プロキシ構成ファイルにレポーターを追加します。 開発プロキシには、いくつかの レポーターが用意されています。 この例では、プレーンテキスト レポーター使用します。

devproxyrc.jsonプレーンテキスト レポーターへの参照を使用してファイルを更新します。

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.northwind.com/*"
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "subscriptionId": "00000000-0000-0000-0000-000000000000",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default"
  }
}

アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認する

アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認するには、Azure サブスクリプションに接続し、開発プロキシを実行して、アプリからの API 要求をインターセプトする必要があります。 次に、開発プロキシは、API 要求に関する情報と Azure API Center からの情報を比較し、最小限のアクセス許可に関するレポートを表示します。

Azure サブスクリプションへの接続

開発プロキシは、Azure API Center からの情報を使用して、アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを判断します。 この情報を取得するには、Azure サブスクリプションへの接続が必要です。 Azure サブスクリプションには、いくつかの方法接続できます。

開発プロキシの実行

Azure サブスクリプションに接続したら、開発プロキシを起動します。 ファイルがあるのと同じフォルダーから開発プロキシを devproxyrc.json 起動すると、構成が自動的に読み込まれます。 それ以外の場合は、オプションを使用して構成ファイルへのパスを --config-file 指定します。

開発プロキシは、起動時に Azure サブスクリプションに接続できることを確認します。 接続が成功すると、次のようなメッセージが表示されます。

 info    Plugin ApiCenterMinimalPermissionsPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

r キーを押して、アプリからの API 要求の記録を開始します。

アプリを使用する

通常どおりにアプリを使用します。 このチュートリアルでは、次の要求を、アクセス許可を持つシミュレートされたアクセス トークンと共に customer.readwrite 使用できます。

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

GET https://api.northwind.com/customers/ALFKI
Authorization: Bearer {{readwriteToken}}

開発プロキシは、API 要求をインターセプトし、それらに関する情報をメモリに格納します。 開発プロキシが実行されるコマンド ラインには、アプリが行う API 要求に関する情報が表示されます。

 info    Plugin ApiCenterMinimalPermissionsPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://api.northwind.com/customers/ALFKI
 mock  ╰ 200 /{customer-id}

アクセス許可を確認する

s キーを押 して記録を停止します。 開発プロキシは API センター インスタンスに接続し、要求に関する情報と API Center からの情報を比較します。

 info    Plugin ApiCenterMinimalPermissionsPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://api.northwind.com/customers/ALFKI
 mock  ╰ 200 /{customer-id}
○ Stopped recording
 info    Checking if recorded API requests use minimal permissions as defined in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...
 info    Checking minimal permissions for API https://api.northwind.com...
 info    Analyzing recorded requests...
 warn    Calling API Northwind with excessive permissions: customer.readwrite. Minimal permissions are: customer.read
 info    DONE

開発プロキシは、分析が完了すると、次の内容の名前 ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt のファイルにレポートを作成します。

Azure API Center minimal permissions report

APIS

Northwind

x Called using excessive permissions

Permissions

- Minimal permissions: customer.read
- Permissions on the token: customer.readwrite
- Excessive permissions: customer.readwrite

Requests

- GET https://api.northwind.com/customers/ALFKI

UNMATCHED REQUESTS

No unmatched requests found.

ERRORS

No errors occurred.

まとめ

ApiCenterMinimalPermissionsPlugin使用すると、アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認できます。 このプラグインは、アプリからの API 要求に関する情報と Azure API Center からの情報を比較し、過剰なアクセス許可に関するレポートを表示します。 また、アプリで使用している API を呼び出すために必要な最小限のアクセス許可も推奨されます。 最小限のアクセス許可を使用してアプリが API を呼び出していることを確認すると、アプリの安全性を高めるのに役立ちます。 このチェックを手動で実行するか、CI/CD パイプラインと統合して、運用環境にリリースする前に、アプリが最小限のアクセス許可を使用して API を呼び出していることを確認できます。

詳細