Cara memeriksa apakah aplikasi saya memanggil API dengan izin minimal

Sekilas
Tujuan: Memverifikasi panggilan API menggunakan izin minimal melalui Azure API Center
Waktu: 20 menit
Plugins:ApiCenterMinimalPermissionsPlugin
Prasyarat:Menyiapkan Dev Proxy, Azure API Center

Saat membuat aplikasi, Anda mungkin berintegrasi dengan beberapa API dan operasi. Untuk memastikan bahwa aplikasi Anda aman dan mengikuti prinsip hak istimewa paling sedikit, Anda harus memeriksa apakah aplikasi Anda memanggil API dengan izin minimal. Dengan menggunakan izin minimal, Anda mengurangi risiko akses tidak sah ke data dan sumber daya Anda.

Sulitnya memeriksa apakah aplikasi Anda memanggil API dengan izin minimal adalah bahwa setiap kali Mengintegrasikan operasi baru, Anda perlu mengevaluasi serangkaian izin yang Anda gunakan di aplikasi Anda. Melacak semua operasi dan izin secara manual memakan waktu dan rawan kesalahan. Menggunakan Dev Proxy dan Azure API Center, Anda dapat mengotomatiskan pemeriksaan apakah aplikasi Anda memanggil API dengan izin minimal.

Untuk memeriksa apakah aplikasi Anda memanggil API menggunakan izin minimal, Anda dapat menggunakan ApiCenterMinimalPermissionsPlugin plugin. Plugin ini membandingkan izin yang digunakan aplikasi Anda dengan izin yang ditentukan di Azure API Center dan melaporkan izin yang berlebihan. Ini juga merekomendasikan serangkaian izin minimal yang harus Anda gunakan.

Cuplikan layar prompt perintah yang menunjukkan pemeriksaan Dev Proxy apakah permintaan API yang direkam menggunakan token izin API minimal.

Sebelum memulai

Untuk memeriksa apakah aplikasi Anda memanggil API menggunakan izin minimal, Anda harus memiliki instans Azure API Center dengan informasi tentang API yang Anda gunakan di organisasi Anda.

Tips

Unduh prasetel untuk artikel panduan ini dengan menjalankan perintah di prompt devproxy config get demo-apicenter-minimalpermissions.

Membuat instans Azure API Center

Sebelum memulai, buat instans Azure API Center dan daftarkan API yang Anda gunakan di organisasi Anda. Untuk setiap API, unggah file spesifikasi OpenAPI yang menjelaskan operasi dan izin API.

Cuplikan layar Azure API Center dengan API dan spesifikasi OpenAPI-nya dengan informasi keamanan.

ApiCenterMinimalPermissionsPlugin menggunakan informasi ini untuk memeriksa apakah aplikasi Anda memanggil API-API menggunakan izin minimal.

Salin informasi API Center

Dari halaman Gambaran Umum instans Azure API Center, salin nama instans API Center, nama grup sumber daya, dan ID langganan. Anda memerlukan informasi ini untuk mengonfigurasi ApiCenterMinimalPermissionsPlugin sehingga dapat terhubung ke instans Azure API Center Anda.

Cuplikan layar halaman gambaran umum Azure API Center dengan beberapa properti disorot.

Mengonfigurasi Proksi Dev

Untuk memeriksa apakah aplikasi Anda memanggil API menggunakan izin minimal, Anda perlu mengaktifkan ApiCenterMinimalPermissionsPlugin di dalam file konfigurasi Proksi Dev. Untuk membuat laporan izin yang digunakan aplikasi Anda, tambahkan reporter.

Aktifkan ApiCenterMinimalPermissionsPlugin

devproxyrc.json Dalam file, tambahkan konfigurasi berikut:

File: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.northwind.com/*"
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/apicenterminimalpermissionsplugin.schema.json",
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default"
  }
}

Di properti subscriptionId, resourceGroupName, dan serviceName, berikan informasi tentang instans Azure API Center Anda.

urlsToWatch Di properti , tentukan URL yang digunakan aplikasi Anda.

Tips

Gunakan ekstensi Dev Proxy Toolkit Visual Studio Code untuk mengelola konfigurasi Dev Proxy dengan mudah.

Menambahkan wartawan

ApiCenterMinimalPermissionsPlugin menghasilkan laporan tentang API yang digunakan oleh aplikasi Anda, dan izin minimal yang diperlukan untuk memanggilnya. Untuk melihat laporan ini, tambahkan reporter ke file konfigurasi Dev Proxy Anda. Dev Proxy menawarkan beberapa wartawan. Dalam contoh ini, Anda menggunakan pelapor teks biasa.

Perbarui file Anda devproxyrc.json dengan referensi ke reporter teks biasa:

File: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.northwind.com/*"
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.0/apicenterminimalpermissionsplugin.schema.json",
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default"
  }
}

Periksa apakah aplikasi Anda memanggil API menggunakan izin minimal

Untuk memeriksa apakah aplikasi Anda memanggil API menggunakan izin minimal, Anda perlu menyambungkan ke langganan Azure, menjalankan Proksi Dev, dan membiarkannya mencegat permintaan API dari aplikasi Anda. Dev Proxy kemudian membandingkan informasi tentang permintaan API dengan informasi dari Azure API Center dan laporan tentang izin minimal.

Menyambungkan ke langganan Azure Anda

Dev Proxy menggunakan informasi dari Azure API Center untuk menentukan apakah aplikasi Anda memanggil API menggunakan izin minimal. Untuk mendapatkan informasi ini, diperlukan koneksi ke langganan Azure Anda. Anda dapat menyambungkan ke langganan Azure Anda dengan beberapa cara.

Jalankan Proksi Dev

Setelah menyambungkan ke langganan Azure Anda, mulai Dev Proxy. Jika Anda memulai Proksi Dev dari folder yang sama tempat file Anda devproxyrc.json berada, file tersebut secara otomatis memuat konfigurasi. Jika tidak, tentukan jalur ke file konfigurasi menggunakan --config-file opsi .

Saat Dev Proxy dimulai, Dev Proxy memeriksa apakah proksi tersebut dapat tersambung ke langganan Azure Anda. Saat koneksi berhasil, Anda akan melihat pesan yang mirip dengan:

 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

Tekan r untuk mulai merekam permintaan API dari aplikasi Anda.

Menggunakan aplikasi Anda

Gunakan aplikasi seperti yang biasa Anda lakukan. Dalam tutorial ini, Anda dapat menggunakan permintaan berikut dengan token akses simulasi dengan customer.readwrite izin:

@readwriteToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJzY3AiOlsiY3VzdG9tZXIucmVhZHdyaXRlIl19.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

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

Dev Proxy mencegat permintaan API dan menyimpan informasi tentang mereka dalam memori. Di baris perintah tempat Proksi Dev berjalan, Anda akan melihat informasi tentang permintaan API yang dilakukan aplikasi Anda.

 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}

Periksa izin

Hentikan perekaman dengan menekan s. Dev Proxy terhubung ke instans API Center dan membandingkan informasi tentang permintaan dengan informasi dari 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

Saat Dev Proxy menyelesaikan analisisnya, Dev Proxy membuat laporan dalam file bernama ApiCenterMinimalPermissionsPlugin_PlainTextReporter.txt dengan konten berikut:

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.

Ringkasan

ApiCenterMinimalPermissionsPluginDengan menggunakan , Anda dapat memeriksa apakah aplikasi Anda memanggil API menggunakan izin minimal. Plugin membandingkan informasi tentang permintaan API dari aplikasi Anda dengan informasi dari Azure API Center dan laporan tentang izin yang berlebihan. Ini juga merekomendasikan izin minimal yang diperlukan untuk memanggil API yang Anda gunakan di aplikasi Anda. Memverifikasi bahwa aplikasi Anda memanggil API menggunakan izin minimal, membantu Anda membuat aplikasi Anda lebih aman. Anda dapat menjalankan pemeriksaan ini secara manual atau berintegrasi dengan alur CI/CD Anda untuk memastikan bahwa aplikasi Anda memanggil API menggunakan izin minimal sebelum merilisnya ke produksi.

Informasi selengkapnya