メインコンテンツまでスキップ

マルウェアスキャンリクエスト

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

KEYOBJECTDESC
jobIdString作業ID (オプション、未入力時は時間ベースUUIDが自動生成されます。最大36文字)

Request Parts (multipart/form-data)

KEYOBJECTDESC
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

KEYOBJECTREQUIREDDESC
userInfo.userIdStringYesユーザーID (1-40文字)
userInfo.nameStringNoユーザー名 (最大40文字)
userInfo.departmentStringNoユーザー部署 (最大256文字)
userInfo.dutynameStringNoユーザー職責名 (最大40文字)
userInfo.sysCodeStringYesチャネルコード、APIアクセス制御に使用されます。 (最大40文字)
userInfo.businessCodeStringYes業務コード、APIアクセス制御に使用されます。 (最大40文字)
fileInfo.fileNameStringYesファイル名

Response Body (json)

KEYOBJECTDESC
codeint応答コード (下記テーブル参照)
msgString結果メッセージ
jobIdString作業ID (スキャン結果照会時に使用)
logReasonint例外またはエラー時の結果コード値

Response Code

CODEDESCDESC_DETAIL
0スキャンリクエスト成功スキャンリクエストが正常に受理されました。スキャン結果は状態照会APIで確認してください。
1スキャンリクエスト例外重複作業ID、ファイルサイズ超過などによりスキャンが実行されませんでした。
2スキャンリクエストエラーファイル保存失敗、サービスエラーなどによりリクエストが失敗しました。
5アクセスブロックAPIアクセス制御によりリクエストがブロックされました。

Log Reason List

例外、エラー時に返す結果です。

例外

code: 1

CODETITLEMESSAGE
990008[例外] ワクチンスキャンファイルサイズ超過ファイルサイズがワクチンスキャン制限サイズを超過してスキャンが実行されませんでした。
990010[例外] 重複作業IDスキャンリクエスト既存に使用された作業IDで、スキャンリクエストを実行しませんでした。別の作業IDを使用してください
990011[例外] ワクチンスキャン未使用ワクチンスキャン機能が無効化されています。
990015[例外] ワクチンスキャン待機列超過サーバーの処理待機列が満杯でリクエストを受理できませんでした。しばらく後、再度お試しください

エラー

code: 2

CODETITLEMESSAGE
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)