앱이 최소한의 권한으로 API를 호출하는지 확인하는 방법
앱을 빌드할 때 여러 API 및 작업과 통합할 가능성이 높습니다. 앱이 안전하고 최소 권한 원칙을 따르도록 하려면 앱이 최소한의 권한으로 API를 호출하는지 확인해야 합니다. 최소 사용 권한을 사용하여 데이터 및 리소스에 대한 무단 액세스 위험을 줄입니다.
앱이 최소 권한으로 API를 호출하는지 확인하기가 어려운 이유는 새 작업을 통합할 때마다 앱에서 사용하는 사용 권한 집합을 평가해야 하기 때문입니다. 모든 작업 및 사용 권한을 수동으로 추적하면 시간이 많이 걸리고 오류가 발생하기 쉽습니다. 개발 프록시 및 Azure API Center를 사용하면 앱이 최소한의 권한으로 API를 호출하는지 여부를 자동으로 확인할 수 있습니다.
앱이 최소 사용 권한을 사용하여 API를 호출하는지 확인하려면 플러그 인을 ApiCenterMinimalPermissionsPlugin
사용할 수 있습니다. 이 플러그 인은 앱에서 사용하는 사용 권한을 Azure API 센터에 정의된 권한과 비교하고 과도한 사용 권한에 대해 보고합니다. 또한 사용해야 하는 최소 사용 권한 집합을 권장합니다.
시작하기 전에
앱이 최소한의 권한을 사용하여 API를 호출하는지 확인하려면 조직에서 사용하는 API에 대한 정보가 포함된 Azure API 센터 인스턴스가 있어야 합니다.
팁
명령 프롬프트 devproxy preset get demo-apicenter-minimalpermissions
를 실행하여 이 방법 문서에 대한 사전 설정을 다운로드합니다.
Azure API Center 인스턴스 만들기
시작하기 전에 Azure API 센터 인스턴스를 만들고 조직에서 사용하는 API를 등록합니다. 각 API에 대해 API 작업 및 사용 권한을 설명하는 OpenAPI 사양 파일을 업로드합니다.
이 ApiCenterMinimalPermissionsPlugin
정보를 사용하여 앱이 최소 사용 권한을 사용하여 API를 호출하는지 확인합니다.
API Center 정보 복사
Azure API Center 인스턴스 개요 페이지에서 API Center 인스턴스의 이름, 리소스 그룹 이름 및 구독 ID를 복사합니다. Azure API Center 인스턴스에 연결할 수 있도록 ApiCenterMinimalPermissionsPlugin
을 구성하려면 이 정보가 필요합니다.
개발 프록시 구성
앱이 최소 사용 권한을 사용하여 API를 호출하는지 확인하려면 개발 프록시 구성 파일에서 ApiCenterMinimalPermissionsPlugin
을 사용하도록 설정해야 합니다. 앱에서 사용하는 사용 권한 보고서를 만들려면 보고자를 추가합니다.
ApiCenterMinimalPermissionsPlugin
사용
devproxyrc.json
파일에서 다음 구성을 추가합니다.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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을 지정합니다.
팁
개발 프록시 도구 키트 Visual Studio Code 확장을 사용하면 개발 프록시 구성을 쉽게 관리할 수 있습니다.
보고자 추가
ApiCenterMinimalPermissionsPlugin
은 앱에서 사용 중인 API 보고서와 이를 호출하는 데 필요한 최소한의 권한을 생성합니다. 이 보고서를 보려면 개발 프록시 구성 파일에 보고자를 추가합니다. 개발 프록시는 여러 보고자를 제공합니다. 이 예에서는 일반 텍스트 보고자를 사용합니다.
일반 텍스트 보고자에 대한 참조를 사용하여 devproxyrc.json
파일을 업데이트합니다.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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
앱에서 API 요청 기록을 시작하려면 r을 누릅니다.
앱 사용
평소처럼 앱을 사용합니다. 이 자습서에서는 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 Center 인스턴스에 연결하고 요청에 대한 정보를 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