マルウェアスキャンリクエスト
SHIELDEX マルウェアスキャンリクエストのために使用します。
非同期で動作し、リクエスト即座に応答します。スキャン結果は別途の状態照会APIを通じて確認できます。
Notes
- Malware Engine: TurboVaccine ワクチンエンジンを使用してリアルタイムスキャンを実行します。
- Tenant Support: マルチテナント環境をサポートし、テナント別にデータが分離保存されます。
- Backup: スキャンリクエストが正常に受理されると、元のファイルを暗号化したバックアップが自動的に生成されます。
- Status Check: スキャン結果は
GET /inspection/malware/{jobId}APIを通じて照会できます。- Egnine Process: サーバーのCPUコア数だけ並列処理が可能です。
- Queue Size: リクエスト待機列はコア数 * 12です。超過時は例外応答を 返します。
Method
POST
/inspection/malware
/inspection/malware/{jobId}
Request Path Parameter
KEY OBJECT DESC jobIdString 作業ID (オプション、未入力時は時間ベースUUIDが自動生成されます。最大36文字)
Request Parts (multipart/form-data)
KEY OBJECT DESC dataJSON マルウェアスキャンリクエストデータ (必須) fileFile スキャン対象ファイル (必須)
Request Data JSON Structure
{
"userInfo": {
"userId": "string",
"name": "string",
"department": "string",
"dutyname": "string",
"sysCode": "string",
"businessCode": "string"
},
"fileInfo": {
"fileName": "string"
}
}
Request Data Fields
KEY OBJECT REQUIRED DESC userInfo.userIdString Yes ユーザーID (1-40文字) userInfo.nameString No ユーザー名 (最大40文字) userInfo.departmentString No ユーザー部署 (最大256文字) userInfo.dutynameString No ユーザー職責名 (最大40文字) userInfo.sysCodeString Yes チャネルコード、APIアクセス制御に使用されます。 (最大40文字) userInfo.businessCodeString Yes 業務コード、APIアクセス制御に使用されます。 (最大40文字) fileInfo.fileNameString Yes ファイル名
Response Body (json)
KEY OBJECT DESC code int 応答コード (下記テーブル参照) msg String 結果メッセージ jobId String 作業ID (スキャン結果照会時に使用) logReason int 例外またはエラー時の結果コード値
Response Code
CODE DESC DESC_DETAIL 0 スキャンリクエスト成功 スキャンリクエストが正常に受理されました。スキャン結果は状態照会APIで確認してください。 1 スキャンリクエスト例外 重複作業ID、ファイルサイズ超過などによりスキャンが実行されませんでした。 2 スキャンリクエスト エラー ファイル保存失敗、サービスエラーなどによりリクエストが失敗しました。 5 アクセスブロック APIアクセス制御によりリクエストがブロックされました。
Log Reason List
例外、エラー時に返す結果です。
例外
code: 1
CODE TITLE MESSAGE 990008 [例外] ワクチンスキャンファイルサイズ超過 ファイルサイズがワクチンスキャン制限サイズを超過してスキャンが実行されませんでした。 990010 [例外] 重複作業IDスキャンリクエスト 既存に使用された作業IDで、スキャンリクエストを実行しませんでした。別の作業IDを使用してください 990011 [例外] ワクチンスキャン未使用 ワクチンスキャン機能が無効化されています。 990015 [例外] ワクチンスキャン待機列超過 サーバーの処理待機列が満杯でリクエストを受理できませんでした。しばらく後、再度お試しください
エラー
code: 2
CODE TITLE MESSAGE 990014 [エラー] ワクチンスキャンリクエストエラー ワクチンサービスへのリクエスト前にエラーが発生してスキャンできませんでした。
Sample
REQUEST
curl -X POST "/inspection/malware" \
-H "Content-Type: multipart/form-data" \
-F 'data={
"userInfo": {
"userId": "user001",
"name": "山田太郎",
"department": "セキュリティチーム",
"dutyname": "セキュリティ管理者",
"sysCode": "SYS001",
"businessCode": "BIZ001"
},
"fileInfo": {
"fileName": "suspicious_file.exe"
}
};type=application/json' \
-F "file=@/path/to/suspicious_file.exe"RESPONSE - スキャンリクエスト成功 (200 OK)
{
"code": 0,
"msg": "success",
"jobId": "8bc422e1-af1b-11f0-bf7b-7117406ac6f5"
}RESPONSE - [例外] 重複作業IDスキャンリクエスト (200 OK)
{
"code": 1,
"msg": "既存に使用された作業IDで、スキャンリクエストを実行しませんでした。別の作業IDを使用してください",
"jobId": "8bc422e1-af1b-11f0-bf7b-7117406ac6f5",
"logReason": 990010
}RESPONSE - [例外] ワクチンスキャンファイルサイズ超過 (200 OK)
{
"code": 1,
"msg": "ファイルサイズがワクチンスキャン制限サイズを超過してスキャンが実行されませんでした。",
"jobId": "7a3c5d9e-af1c-11f0-bf7b-7117406ac6f5",
"logReason": 990008
}RESPONSE - [例外] ワクチンスキャン未使用 (200 OK)
{
"code": 1,
"msg": "ワクチンスキャン機能が無効化されています。",
"jobId": "9f2e8b4a-af1c-11f0-bf7b-7117406ac6f5",
"logReason": 990011
}RESPONSE - [例外] ワクチンスキャン待機列超過 (200 OK)
{
"code": 1,
"msg": "サーバーの処理待機列が満杯でリクエストを受理できませんでした。しばらく後、再度お試しください",
"jobId": "c4d7f3e2-af1c-11f0-bf7b-7117406ac6f5",
"logReason": 990015
}RESPONSE - [エラー] ワクチンスキャンリクエストエラー (200 OK)
{
"code": 2,
"msg": "ワクチンサービスへのリクエスト前にエラーが発生してスキャンできませんでした。",
"jobId": "395ebb96-af1c-11f0-bf7b-7117406ac6f5",
"logReason": 990014
}RESPONSE - Access Denied (200 OK)
{
"code": 5,
"msg": "Sanitization Request Blocked by API Access control.",
"jobId": "52617927-af1c-11f0-bf7b-7117406ac6f5"
}
Exception Messages (400 Bad Request)
{
"code": 1,
"msg": "必須リクエストパラメータが欠落しています。",
"details": {
"missingPart": "file",
"description": "'file' パラメータを含めてリクエストしてください。"
}
}
{
"code": 1,
"msg": "不正なJSON形式です。",
"details": {
"missingPart": "line 10, column 2",
"description": "line 10, column 2でJSON構文エラーが発生しました。カンマ、中括弧、大括弧などを確認してください。"
}
}
{
"code": 1,
"msg": "リクエスト値が正しくありません。",
"details": {
"missingPart_1": "userInfo.businessCode",
"description_1": "空白にすることはできません",
"missingPart_2": "userInfo.sysCode",
"description_2": "空白にすることはできません",
"missingPart_3": "userInfo.userId",
"description_3": "空白にすることはできません"
}
}
Processing Flow
- このフローは参考用で顧客に提供しない
cdrbroker.properties設定ファイルの次の値を使用 (開発記録用)
shieldex.vaccine.scan.useVaccine=true // デフォルト値: false | ワクチン使用可否、cdrApiServiceのワクチンも該当設定を使用
shieldex.vaccine.scan.time-out=60 // デフ ォルト値: 60 | ワクチンスキャンのタイムアウト、
shieldex.vaccine.scan.maxSizeMB=30 // デフォルト値: 30 | ワクチンスキャン最大サイズ、cdrApiServiceのワクチンも該当設定を使用
shieldex.vaccine.scan.queue-size-mulitpiter=12 // デフォルト値: 12 | ワクチンスキャン待機列サイズ倍率、CPU * 設定値(4 * 12 = 48)