API経由でデータをアップロードする
SBOM ファイル、画像スキャン、および証明書データをアップロードするには、IBM® Concert API を使用します。
- SBOM とパッケージの関係が作成できませんでした。
- エラーが発生したため、データベース接続を取得できませんでした。
- パイプラインを呼び出すことができませんでした。
POSTリクエストを使って、以下のデータタイプをConcertアップロードすることができる:- アプリケーションSBOM
application_sbom - ビルドSBOM
application_sbom) - SBOMの展開
application_sbom - パッケージ SBOM
package_sbom - 脆弱性スキャン(CVEとエクスポージャ)
- 画像の脆弱性スキャン
image_scan) - ソースコードの脆弱性スキャン
code_scan) - ランタイムまたは仮想マシンの脆弱性スキャン
vm_scan) - CVE
dynamic_scan)の動的アプリケーション・セキュリティ・テスト(DAST) - SARIF形式のソースコードの静的アプリケーション・セキュリティ・テスト(SAST)
static_code_scan)
- 画像の脆弱性スキャン
- 証明書の詳細 (
certificate)
data_typeパラメータ値をapplication_sbomに設定しなければなりません。準備
- リクエストを認証するには、有効な Concert API キーが必要です。 手順については、 APIキーの生成を参照してください。
- ベース URLと APIリクエスト・ヘッダの詳細については、 APIリファレンスと認証を参照のこと。
データ取り込み用APIエンドポイント
https://${concert_host}:${port}/ingestion/api/v1/upload_files
| 変数 | 説明 |
|---|---|
${concert_host} |
Concert APIサーバーのホスト名。 |
{port} |
APIサーバーがリクエストの受信をリッスンしているポートの番号。 SaaS および OpenShift Container Platform のデプロイメントでは、ポートの値は 443 です。 ポート番号は、VMのデプロイメントによって異なる場合がある。 |
コード・スニペット
$CURL -X 'POST' \
"https://${concert_host}:${port}/ingestion/api/v1/upload_files" \
-H 'accept: application/json' \
-H "InstanceID: <string>" \
-H "Authorization: <type> ${Concert_API_Key}" \
-H 'Content-Type: multipart/form-data' \
-F "data_type=<enum>" \
-F "filename=@<string>"
パラメーター
| パラメーター | 説明 |
|---|---|
InstanceID |
ConcertインスタンスのユニークID。 この値は、Concert UIでAPIキーを生成したときに、APIキーの使用に関連する他の詳細とともに一時的にUIに表示されます。 フォーマット例0000-0000-0000-0000 |
Authorization |
Concert APIキーの型と値。
|
data_type |
アップロードするデータの種類。
|
filename |
アップロードするファイルのパスと名前。 ファイルパスの前に@記号を付けます。 例えば、@slacksim-definition.json |
| カテゴリー | データ形式 | データ・タイプ | ファイルの種類 | メタデータ |
|---|---|---|---|---|
| コンサート目録 | アプリケーションSBOM ConcertDef | アプリケーション | json | メタデータなし |
| SBOMのビルド ConcertDef | アプリケーション | json | メタデータなし | |
| SBOMの展開 ConcertDef | アプリケーション | json | メタデータなし | |
| ソフトウェア構成 | SBOM パッケージ ( CycloneDX ) - イメージ | パッケージ_sbom | json | メタデータなし |
| SBOM パッケージ ( CycloneDX ) - ソース | パッケージ_sbom | json | (オプション ) repo_url | |
| 脆弱性 | Prisma Cloud スキャン | イメージスキャン | json | (オプション ) scanner_name |
| Prisma Cloud スキャン | イメージスキャン | csv | (オプション ) scanner_name | |
| Sysdig | イメージスキャン | csv | (オプション ) scanner_name | |
| VDRスキャン ( CycloneDX ) | イメージスキャン | json | (オプション ) scanner_name | |
| Aqua Security | イメージスキャン | json | (オプション ) scanner_name | |
| VDRスキャン ( CycloneDX ) | コードスキャン | json | (必須 ) repo_url | |
| コンサート・カスタム・フォーマット | コードスキャン | csv | (オプション ) scanner_name | |
| (オプション ) repo_url | ||||
| Mend | コードスキャン | csv | (オプション ) scanner_name | |
| (オプション ) repo_url | ||||
| Qualys | vm_scan | csv | (オプション ) scanner_name | |
| SARIF | 静的コードスキャン | json | (必須 ) repo_url | |
| (必須 ) repo_name | ||||
| コンサート・カスタム・フォーマット | 静的コードスキャン | csv | (必須 ) repo_url | |
| (必須 ) repo_name | ||||
| SonarQube | 静的コードスキャン | csv | (必須 ) repo_url | |
| (必須 ) repo_name | ||||
| (オプション ) scanner_name | ||||
| Zap | ダイナミック・スキャン | json | (必須 ) env_name | |
| (必須 ) アクセスポイント名 | ||||
| コンサート・カスタム・フォーマット | ダイナミック・スキャン | csv | (必須 ) env_name | |
| (必須 ) アクセスポイント名 | ||||
| (必須 ) access_point_url | ||||
| 証明書 | コンサート・カスタム・フォーマット | 証明書 | csv | (必須 ) env_name |
| 証明書SBOM ConcertDef | 証明書 | json | メタデータなし | |
| コンプライアンス | コンプライアンス・カタログ | コンプライアンス・カタログ | json | メタデータなし |
| コンプライアンス・ポスチャ | コンプライアンス姿勢 | json | メタデータなし |
用例
以下の各例は、Concertプラットフォームに特定のタイプのデータをアップロードするためのAPIコールの構造を示しています。
アプリケーション、ビルド、またはデプロイのSBOMファイルConcertDef形式)をアップロードする
次の例は、 ConcertDef フォーマット で example-SBOM.json と呼ばれるアプリケーション、ビルド、またはデプロイ SBOM ファイルをアップロードする。
$CURL -X 'POST' \
"https://${concert_host}:${port}/ingestion/api/v1/upload_files" \
-H 'accept: application/json' \
-H "InstanceID: 0000-0000-0000-0000" \
-H "Authorization: <type> ${Concert_API_key}" \
-H 'Content-Type: multipart/form-data' \
-F "data_type=application_sbom" \
-F "filename=@my-application-SBOM.json"
パッケージSBOMCycloneDX形式)のアップロード
以下の例は、 CycloneDX フォーマット に my-package-sbom.json というパッケージ SBOM ファイルをアップロードする。
$CURL -X 'POST' \
"https://${concert_host}:${port}/ingestion/api/v1/upload_files" \
-H 'accept: application/json' \
-H "InstanceID: 0000-0000-0000-0000" \
-H "Authorization: <type> ${Concert_API_key}" \
-H 'Content-Type: multipart/form-data' \
-F "data_type=package_sbom" \
-F "filename=@my-package-SBOM.json"
脆弱性スキャン(画像)のアップロード
次の例は、 my-image-scan.csv という脆弱性スキャンをアップロードします。
$CURL -X 'POST' \
"https://${concert_host}:${port}/ingestion/api/v1/upload_files" \
-H 'accept: application/json' \
-H "InstanceID: 0000-0000-0000-0000" \
-H "Authorization: <type> ${Concert_API_key}" \
-H 'Content-Type: multipart/form-data' \
-F "data_type=image_scan" \
-F "filename=@my-image-scan.csv" \
-F 'metadata={"scanner_name": "<scan source>"}'
脆弱性スキャン(ソースコード)のアップロード
次の例は、 my-code-scan.csv という脆弱性スキャンをアップロードします。
$CURL -X 'POST' \
"https://${concert_host}:${port}/ingestion/api/v1/upload_files" \
-H 'accept: application/json' \
-H "InstanceID: 0000-0000-0000-0000" \
-H "Authorization: <type> ${Concert_API_key}" \
-H 'Content-Type: multipart/form-data' \
-F "data_type=code_scan" \
-F "filename=@my-code-scan.csv" \
-F 'metadata={"scanner_name": "<scan source>"}'
ランタイムまたは仮想マシンの)脆弱性スキャンのアップロード
次の例は、 my-vm-scan.csv という脆弱性スキャンをアップロードします。
$CURL -X 'POST' \
"https://${concert_host}:${port}/ingestion/api/v1/upload_files" \
-H 'accept: application/json' \
-H "InstanceID: 0000-0000-0000-0000" \
-H "Authorization: <type> ${Concert_API_key}" \
-H 'Content-Type: multipart/form-data' \
-F "data_type=vm_scan" \
-F "filename=@my-vm-scan.csv" \
-F 'metadata={"scanner_name": "<scan source>"}'
DAST動的脆弱性スキャンのアップロード
次の例では、 dast-scan.csv という動的アプリケーションセキュリティテスト(DAST)スキャンをアップロードします。
$CURL -X 'POST' \
"https://${concert_host}:${port}/ingestion/api/v1/upload_files" \
-H 'accept: application/json' \
-H "InstanceID: 0000-0000-0000-0000" \
-H "Authorization: <type> ${Concert_API_key}" \
-H 'Content-Type: multipart/form-data' \
-F "data_type=dynamic_scan" \
-F "filename=@/Users/jsmith/Desktop/dast-scan.csv" \
-F 'metadata={"env_name": "prod","access_point_name": "<string>","access_point_url": "<url>"}'
SAST脆弱性スキャンのアップロード
次の例は、 sast-scan.csv という SARIF 形式の静的アプリケーションセキュリティテスト(SAST)スキャンをアップロードする。
$CURL -X 'POST' \
"https://${concert_host}:${port}/ingestion/api/v1/upload_files" \
-H 'accept: application/json' \
-H "InstanceID: 0000-0000-0000-0000" \
-H "Authorization: <type> ${Concert_API_key}" \
-H 'Content-Type: multipart/form-data' \
-F "data_type=static_code_scan" \
-F "filename=@/Users/jsmith/Desktop/sast-scan.csv" \
-F 'metadata={"env_name": "prod","repo_url": "<url>", "repo_name":"<string>"}'
証明書の詳細をアップロード
証明書データは、csvファイルまたはJSONファイルとしてアップロードできる。 詳細な手順とサンプルファイルについては、 証明書データのアップロードを参照してください。
次の例は、 my-certificates.csv というcsvファイルをアップロードするものです。
$CURL -X 'POST' \
"https://${concert_host}:${port}/ingestion/api/v1/upload_files" \
-H 'accept: application/csv' \
-H "InstanceID: 0000-0000-0000-0000" \
-H "Authorization: <type> ${Concert_API_key}" \
-H 'Content-Type: multipart/form-data' \
-F "data_type=certificate" \
-F 'metadata={"env_name": "prod"}'
-F "filename=@my-certificates.csv"
以下の例では、証明書データのアップロードに my-certificates.json と呼ばれるJSONファイルを使用しています。
$CURL -X 'POST' \ "https://${concert_host}:{port}/ingestion/api/v1/upload_files" \
-H 'accept: application/json' \
-H "InstanceID: 0000-0000-0000-0000" \
-H "Authorization: <type> ${Concert_API_key}" \
-H 'Content-Type: multipart/form-data" \
-F "data_type=certificate" \
-F "filename=@my-certificates.json"
HTTP 応答コード
200成功しました。 ファイルが正常にアップロードされました。400無効なリクエストパラメータです。 リクエストの詳細を確認する。401Unauthorized - 認証トークンが無効か不足しています。500Internal Server Error - サーバーでエラーが発生しました。