REST API v4 へのアップグレードの技術概要
バージョン 4.0 の REST API では、以前のバージョン (v2) に比べて多くの機能強化、最適化、改善が行われています。API v4 は v2 と同じアクセス・トークンを使用することで互換性を維持し、既存のトークンを引き続き使用しながらコードを v4に徐々に移行します。特に、API v4 のパス・プレフィックスが「/api/v2」から「/api/v4/」に変更されています。多くの関数は名前とモデルを保持しているため、「v2」から「v4」への単純な移行が保証されていますが、一部の関数は変更されています。このトピックは、API v4 で導入された主な変更点の概要を示すテクニカル・ガイドの役割を果たします。
OData バージョン・アップグレード
API は OData v3 の代わりに OData v4 を利用するようになりました。このアップグレードでは、データの強力な集計のサポートなど、高度なクエリー機能が導入されています。
ユーザーへの影響:
- ユーザーは、より複雑なクエリーを活用して正確なデータ取得を行うことができます。
- OData v3 構文に基づく既存のクエリーは、OData v4 標準に合わせて更新する必要があります。
substringofは使用できなくなりました。v4 では代わりにcontainsを使用してください。- Guid リテラルが変更されました:
guid’971314e0-b891-4d2e-b672-0dc37885bb0a’⇒971314e0-b891-4d2e-b672-0dc37885bb0a - DateTime リテラルが変更されました:
DateTime'2024-07-31T07:30:00'⇒2024-07-31T07:30:00z
コレクション関数のページ結果
コレクションを返す関数は、オプションの合計数を含むページ結果を提供するようになりました。
応答は次の形式に従います。
{
"Items": [
{
Item1 ...
},
{
Item2 ...
}
],
"Count": 2 //Optional - appears only if query option $count=true was provided
}
API v2 では、コレクションを返す多くの関数に 2 つのバージョンがあります。1 つはオブジェクトのコレクションを返し、もう 1 つはオブジェクトのページ結果を返します。ページ結果の利点は、$top と $skip を使用して単一のページを取得した場合に、オブジェクトの合計数がデータに含まれるため、カウントの追加要求が不要になることです。
API v4 では、オブジェクトを直接返す関数は省略されます。これらの関数は、常に PageResult 形式でデータを提供します。Count はオプションであり、$count=true がクエリー・オプションに追加された場合にのみ返されます。
例えば、API v2 には 2 つの関数があります。このうち /api/V2/Apps は、通常の形式 (オブジェクトの配列) で結果を返し、/api/V2/Apps/GetAsPage はカウントを含むページ形式で結果を返します。
v4 では、1 つの関数のみがあります。/api/v4/Apps は、結果をページ形式で返し、カウントはオプションです。カウントが不要な場合は、要求しない方が効率的であることに注意してください。
冗長関数の削除
特定のオブジェクトを返す関数は、コレクションを返す関数に特定のオブジェクト ID のフィルターを適用するために削除されました。
この機能は OData v4 ($apply query オプション) を使用して使用できるようになったため、オブジェクトを集約する関数は不要になりました。
例:
GET /api/v2/Scans/CountByUser は v4 に追加されませんでした。
次の URL でも同じ機能を得られます。
GET /api/v4/Scans?$apply=groupby((CreatedBy/Id,CreatedBy/UserName,CreatedBy/FirstName,CreatedBy/LastName,CreatedBy/Email), aggregate($count as Count))
同じ理由で v4 に追加されなかった追加の類似関数:
/api/v2/Scans/CountByStatus
/api/v2/Scans/CountByTechnology
/api/V2/Users/Count
/api/v2/Issues/CountBySeverity/{scope}/{scopeId}
/api/v2/Issues/CountByStatus/{scope}/{scopeId}
/api/V2/AssetGroups/Count
スキャン・テクノロジーの観点での変更
- DynamicAnalyzer ⇒ Dast
- StaticAnalyzer ⇒ Sast
- IASTAnalyzer ⇒ Iast
- ScaAnalyzer ⇒ Sca
これらの変更は、「スキャン」セクションの次の API 関数に影響を与えました。
GET /api/v2/Scans/DynamicAnalyzer/{scanId} ⇒ /api/v4/Scans/Dast/{scanId}GET /api/v2/Scans/StaticAnalyzer/{scanId} ⇒ /api/v4/Scans/Sast/{scanId}GET /api/v2/Scans/ScaAnalyzer/{scanId} ⇒ /api/v4/Scans/Sca/{scanId}GET /api/v2/Scans/StaticAnalyzerExecution/{executionId} ⇒ /api/v4/Scans/SastExecution/{executionId}GET /api/v2/Scans/DynamicAnalyzerExecution/{executionId} ⇒ /api/v4/Scans/DastExecution/{executionId}GET /api/v2/Scans/DynamicAnalyzerScanFile/{executionId} ⇒ /api/v4/Scans/DastScanFile/{executionId}POST /api/v2/Scans/StaticAnalyzer ⇒ /api/v4/Scans/SastPOST /api/v2/Scans/DynamicAnalyzerUploadedResultsFromFile ⇒ /api/v4/Scans/DastScanResultsPOST /api/v2/Scans/IASTAnalyzer ⇒ /api/v4/Scans/Iast
DAST スキャンを作成するために、API v2 の 3 つの関数は、すべてのオプションを公開する単一の関数に統合されました。v4 の新機能に必要なモデルは、v2 のモデルと異なることに注意してください。詳しくは、API 資料を参照してください。
次の 3 つの関数があります。
POST /api/v2/Scans/DynamicAnalyzer
POST /api/v2/Scans/DynamicAnalyzerWithFile
POST /api/v2/Scans/DynamicAnalyzerWithFiles
1 つの関数にマージ:
POST /api/v4/Scans/Dast
問題モデルの変更
GET /api/v4/Issues/{scope}/{scopeId} から返される) 問題モデルにいくつかの変更が加えられました。- 「Id」と「ApplicationId」のタイプが文字列から GUID に変更されました。これは微調整ですが、OData フィルターの形式に影響します。
- 次の廃版プロパティーがモデルから削除されました。AvailabilityImpact、Classification、ConfidentialityImpact、Authentication、AccessComplexity、AccessVector、ProjectName、Protocol、RemediationLevel、ReportConfidence、NessusPluginId、FixRecommendation、IntegrityImpact、Summary、WhiteHatSecVulnId、StepsToReproduce、Description、Exploitability、ApplicationName、FriendlyId。