アプリが最小限のアクセス許可で API を呼び出しているかどうかを確認する方法
アプリをビルドするときは、多くの場合、いくつかの API と操作と統合します。 アプリが安全であり、最小特権の原則に従っていることを確認するには、アプリが最小限のアクセス許可で API を呼び出しているかどうかを確認する必要があります。 最小限のアクセス許可を使用することで、データとリソースへの不正アクセスのリスクを軽減できます。
アプリが最小限のアクセス許可で API を呼び出しているかどうかを確認するのは、新しい操作を統合するたびに、アプリで使用するアクセス許可のセットを評価する必要があることです。 すべての操作とアクセス許可を手動で追跡することは時間がかかり、エラーが発生しやすくなります。 Dev Proxy と Azure API Center を使用すると、アプリが最小限のアクセス許可で API を呼び出しているかどうかを自動的に確認できます。
アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認するには、プラグインを ApiCenterMinimalPermissionsPlugin
使用できます。 このプラグインは、アプリが使用するアクセス許可と Azure API Center で定義されているアクセス許可を比較し、過剰なアクセス許可について報告します。 また、使用する必要がある最小限のアクセス許可セットも推奨されます。
開始する前に
アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認するには、組織内で使用する API に 関する情報を含む Azure API センター インスタンスが必要です。
ヒント
コマンド プロンプトで実行して、この方法に関する記事のプリセットをダウンロードします devproxy preset get demo-apicenter-minimalpermissions
。
Azure API Center インスタンスを作成する
開始する前に、Azure API Center インスタンスを作成し、組織内で使用する API を登録します。 API ごとに、API の操作とアクセス許可を記述した OpenAPI 仕様ファイルをアップロードします。
この ApiCenterMinimalPermissionsPlugin
情報を使用して、アプリが最小限のアクセス許可を使用して API を呼び出しているかどうかを確認します。
API センターの情報をコピーする
Azure API Center インスタンスの [概要] ページで、API Center インスタンスの名前、リソース グループの名前、サブスクリプション ID をコピーします。 この情報は、Azure API Center インスタンスに接続できるように構成 ApiCenterMinimalPermissionsPlugin
するために必要です。
開発プロキシの構成
アプリが最小限のアクセス許可を使用して 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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"resourceGroupName": "demo",
"serviceName": "contoso-api-center",
"workspaceName": "default"
}
}
subscriptionId
resourceGroupName
、および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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"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 を呼び出していることを確認できます。
詳細
Dev Proxy