보안 취약성 가져오기
https://api.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.us3.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.us5.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.datadoghq.eu/api/v2/security/vulnerabilitieshttps://api.ap1.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.ap2.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.uk1.datadoghq.com/api/v2/security/vulnerabilitieshttps://api.ddog-gov.com/api/v2/security/vulnerabilitieshttps://api.us2.ddog-gov.com/api/v2/security/vulnerabilities개요
CycloneDX 1.5 형식의 외부 스캐너에서 보안 취약성을 가져옵니다.
페이로드는 CycloneDX 1.5 JSON 스키마 및 다음 사항에 대해 유효성이 검사됩니다. 추가 제약 조건:
metadata,metadata.component및metadata.component.name은 필수 항목입니다.metadata.tools.components에는name필드가 있는 요소가 정확히 하나 포함되어야 합니다.components는 비어 있을 수 없습니다. 각 구성 요소에는bom-ref,type,name및version이 필요합니다.type이library인 경우purl이 필요하며 유효한 PURL이어야 합니다.type이operating-system인 경우name은 지원되는 OS 값 중 하나여야 합니다alma,alpine,amazon,azurelinux,bottlerocket,cbl-mariner,chainguard,centos,debian,fedora,opensuse,opensuse-leap,opensuse-tumbleweed,oracle,photon,redhat,rocky,slem,sles,ubuntu,wolfi,windows,macos.vulnerabilities는 비어 있을 수 없습니다. 각 취약성에는id, 정확히 하나의ratings항목, 그리고 최소 하나의affects항목이 필요합니다.- 각
affects[].ref는components의bom-ref값과 일치해야 합니다.
OAuth apps require the security_monitoring_findings_write authorization scope to access this endpoint.
요청
Body Data (required)
bomFormat [required]취약성 데이터를 포함하는 CycloneDX 1.5 BOM(자재 명세서) 문서입니다.
components [required]The list of scanned software components. Cannot be empty.
bom-ref [required]A unique reference identifier used to link vulnerabilities to this component.
name [required]The name of the component.
purlThe Package URL (PURL) of the component. Required when type is library.
type [required]The type of the scanned component.
library, application, operating-systemversion [required]The version of the component.
metadata [required]Metadata about the BOM, including the scanned asset and the scanner tool.
component [required]The asset that was scanned (for example, a host or container image).
bom-refA unique reference identifier for this metadata component. If set, must match a bom-ref in components.
name [required]The name or identifier of the scanned asset (for example, an instance ID or hostname).
typeThe type of the scanned asset.
tools [required]Information about the scanner tool that produced this BOM.
components [required]The scanner tool components. Must contain exactly one element.
name [required]The name of the scanner tool.
typeThe type of the tool component.
specVersion [required]The CycloneDX specification version. Must be 1.5.
versionThe version number of the BOM document.
vulnerabilities [required]The list of detected vulnerabilities. Cannot be empty.
advisoriesExternal advisory references for the vulnerability.
urlThe URL of the advisory.
affects [required]The components affected by this vulnerability. Must be non-empty. Each ref must match a bom-ref in components.
ref [required]The bom-ref of the affected component.
analysisThe exploitability analysis for the vulnerability. When state is set to resolved
or resolved_with_pedigree, the vulnerability is closed in Datadog.
Other state values are accepted but have no effect on the vulnerability status.
stateThe vulnerability analysis state.
cwesCWE identifiers associated with the vulnerability.
descriptionA short description of the vulnerability.
detailDetailed information about the vulnerability.
id [required]The vulnerability identifier (for example, a CVE ID).
ratings [required]The severity ratings for the vulnerability. Must contain exactly one element.
scoreThe CVSS score.
severityThe severity level.
vectorThe CVSS vector string.
referencesExternal reference identifiers for the vulnerability.
idThe identifier of the external reference (for example, a GHSA ID).
sourceThe source of an external vulnerability reference.
urlThe URL of the reference source.
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"bom-ref": "host-ref-abc123",
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"advisories": [
{
"url": "https://example.com/advisory/CVE-2021-1234"
}
],
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"analysis": {
"state": "resolved"
},
"cwes": [
123,
345
],
"description": "Sample vulnerability detected in the application.",
"detail": "Details about the vulnerability.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
],
"references": [
{
"id": "GHSA-35m5-8cvj-8783",
"source": {
"url": "https://example.com"
}
}
]
}
]
}응답
Vulnerabilities accepted successfully.
Bad Request
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Forbidden
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Too many requests
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Internal Server Error
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}코드 예시
# Set your Datadog site and credentials
export DD_SITE="datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="us3.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="us5.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="datadoghq.eu"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="ap1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="ap2.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="uk1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF# Set your Datadog site and credentials
export DD_SITE="us2.ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/security/vulnerabilities" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"bomFormat": "CycloneDX",
"components": [
{
"bom-ref": "a3390fca-c315-41ae-ae05-af5e7859cdee",
"name": "lodash",
"purl": "pkg:npm/lodash@4.17.21",
"type": "library",
"version": "4.17.21"
}
],
"metadata": {
"component": {
"name": "i-12345",
"type": "operating-system"
},
"tools": {
"components": [
{
"name": "my-scanner",
"type": "application"
}
]
}
},
"specVersion": "1.5",
"version": 1,
"vulnerabilities": [
{
"affects": [
{
"ref": "a3390fca-c315-41ae-ae05-af5e7859cdee"
}
],
"description": "Sample vulnerability detected in the application.",
"id": "CVE-2021-1234",
"ratings": [
{
"score": 9,
"severity": "high",
"vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"
}
]
}
]
}
EOF// Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
package main
import (
"context"
"fmt"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
body := datadogV2.CycloneDXBom{
BomFormat: "CycloneDX",
Components: []datadogV2.CycloneDXComponent{
{
BomRef: "a3390fca-c315-41ae-ae05-af5e7859cdee",
Name: "lodash",
Purl: datadog.PtrString("pkg:npm/lodash@4.17.21"),
Type: datadogV2.CYCLONEDXCOMPONENTTYPE_LIBRARY,
Version: "4.17.21",
},
},
Metadata: datadogV2.CycloneDXMetadata{
Component: datadogV2.CycloneDXMetadataComponent{
BomRef: datadog.PtrString("host-ref-abc123"),
Name: "i-12345",
Type: datadog.PtrString("operating-system"),
},
Tools: datadogV2.CycloneDXMetadataTools{
Components: []datadogV2.CycloneDXToolComponent{
{
Name: "my-scanner",
Type: datadog.PtrString("application"),
},
},
},
},
SpecVersion: "1.5",
Version: datadog.PtrInt64(1),
Vulnerabilities: []datadogV2.CycloneDXVulnerability{
{
Advisories: []datadogV2.CycloneDXVulnerabilityAdvisory{
{
Url: datadog.PtrString("https://example.com/advisory/CVE-2021-1234"),
},
},
Affects: []datadogV2.CycloneDXVulnerabilityAffects{
{
Ref: "a3390fca-c315-41ae-ae05-af5e7859cdee",
},
},
Analysis: &datadogV2.CycloneDXVulnerabilityAnalysis{
State: datadog.PtrString("resolved"),
},
Cwes: []int64{
123,
345,
},
Description: datadog.PtrString("Sample vulnerability detected in the application."),
Detail: datadog.PtrString("Details about the vulnerability."),
Id: "CVE-2021-1234",
Ratings: []datadogV2.CycloneDXVulnerabilityRating{
{
Score: datadog.PtrFloat64(9.0),
Severity: datadog.PtrString("high"),
Vector: datadog.PtrString("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N"),
},
},
References: []datadogV2.CycloneDXVulnerabilityReference{
{
Id: datadog.PtrString("GHSA-35m5-8cvj-8783"),
Source: &datadogV2.CycloneDXVulnerabilityReferenceSource{
Url: datadog.PtrString("https://example.com"),
},
},
},
},
},
}
ctx := datadog.NewDefaultContext(context.Background())
ctx = context.WithValue(ctx, datadog.ContextAccessToken, os.Getenv("DD_BEARER_TOKEN"))
configuration := datadog.NewConfiguration()
configuration.SetUnstableOperationEnabled("v2.ImportSecurityVulnerabilities", true)
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewSecurityMonitoringApi(apiClient)
r, err := api.ImportSecurityVulnerabilities(ctx, body)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `SecurityMonitoringApi.ImportSecurityVulnerabilities`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
}
Instructions
First install the library and its dependencies and then save the example to main.go and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"// Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.SecurityMonitoringApi;
import com.datadog.api.client.v2.model.CycloneDXBom;
import com.datadog.api.client.v2.model.CycloneDXComponent;
import com.datadog.api.client.v2.model.CycloneDXComponentType;
import com.datadog.api.client.v2.model.CycloneDXMetadata;
import com.datadog.api.client.v2.model.CycloneDXMetadataComponent;
import com.datadog.api.client.v2.model.CycloneDXMetadataTools;
import com.datadog.api.client.v2.model.CycloneDXToolComponent;
import com.datadog.api.client.v2.model.CycloneDXVulnerability;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityAdvisory;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityAffects;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityAnalysis;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityRating;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityReference;
import com.datadog.api.client.v2.model.CycloneDXVulnerabilityReferenceSource;
import java.util.Arrays;
import java.util.Collections;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
defaultClient.setUnstableOperationEnabled("v2.importSecurityVulnerabilities", true);
SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient);
CycloneDXBom body =
new CycloneDXBom()
.bomFormat("CycloneDX")
.components(
Collections.singletonList(
new CycloneDXComponent()
.bomRef("a3390fca-c315-41ae-ae05-af5e7859cdee")
.name("lodash")
.purl("pkg:npm/lodash@4.17.21")
.type(CycloneDXComponentType.LIBRARY)
.version("4.17.21")))
.metadata(
new CycloneDXMetadata()
.component(
new CycloneDXMetadataComponent()
.bomRef("host-ref-abc123")
.name("i-12345")
.type("operating-system"))
.tools(
new CycloneDXMetadataTools()
.components(
Collections.singletonList(
new CycloneDXToolComponent()
.name("my-scanner")
.type("application")))))
.specVersion("1.5")
.version(1L)
.vulnerabilities(
Collections.singletonList(
new CycloneDXVulnerability()
.advisories(
Collections.singletonList(
new CycloneDXVulnerabilityAdvisory()
.url("https://example.com/advisory/CVE-2021-1234")))
.affects(
Collections.singletonList(
new CycloneDXVulnerabilityAffects()
.ref("a3390fca-c315-41ae-ae05-af5e7859cdee")))
.analysis(new CycloneDXVulnerabilityAnalysis().state("resolved"))
.cwes(Arrays.asList(123L, 345L))
.description("Sample vulnerability detected in the application.")
.detail("Details about the vulnerability.")
.id("CVE-2021-1234")
.ratings(
Collections.singletonList(
new CycloneDXVulnerabilityRating()
.score(9.0)
.severity("high")
.vector("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N")))
.references(
Collections.singletonList(
new CycloneDXVulnerabilityReference()
.id("GHSA-35m5-8cvj-8783")
.source(
new CycloneDXVulnerabilityReferenceSource()
.url("https://example.com"))))));
try {
apiInstance.importSecurityVulnerabilities(body);
} catch (ApiException e) {
System.err.println(
"Exception when calling SecurityMonitoringApi#importSecurityVulnerabilities");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Instructions
First install the library and its dependencies and then save the example to Example.java and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java""""
Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
"""
from os import environ
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
from datadog_api_client.v2.model.cyclone_dx_bom import CycloneDXBom
from datadog_api_client.v2.model.cyclone_dx_component import CycloneDXComponent
from datadog_api_client.v2.model.cyclone_dx_component_type import CycloneDXComponentType
from datadog_api_client.v2.model.cyclone_dx_metadata import CycloneDXMetadata
from datadog_api_client.v2.model.cyclone_dx_metadata_component import CycloneDXMetadataComponent
from datadog_api_client.v2.model.cyclone_dx_metadata_tools import CycloneDXMetadataTools
from datadog_api_client.v2.model.cyclone_dx_tool_component import CycloneDXToolComponent
from datadog_api_client.v2.model.cyclone_dx_vulnerability import CycloneDXVulnerability
from datadog_api_client.v2.model.cyclone_dx_vulnerability_advisory import CycloneDXVulnerabilityAdvisory
from datadog_api_client.v2.model.cyclone_dx_vulnerability_affects import CycloneDXVulnerabilityAffects
from datadog_api_client.v2.model.cyclone_dx_vulnerability_analysis import CycloneDXVulnerabilityAnalysis
from datadog_api_client.v2.model.cyclone_dx_vulnerability_rating import CycloneDXVulnerabilityRating
from datadog_api_client.v2.model.cyclone_dx_vulnerability_reference import CycloneDXVulnerabilityReference
from datadog_api_client.v2.model.cyclone_dx_vulnerability_reference_source import CycloneDXVulnerabilityReferenceSource
body = CycloneDXBom(
bom_format="CycloneDX",
components=[
CycloneDXComponent(
bom_ref="a3390fca-c315-41ae-ae05-af5e7859cdee",
name="lodash",
purl="pkg:npm/lodash@4.17.21",
type=CycloneDXComponentType.LIBRARY,
version="4.17.21",
),
],
metadata=CycloneDXMetadata(
component=CycloneDXMetadataComponent(
bom_ref="host-ref-abc123",
name="i-12345",
type="operating-system",
),
tools=CycloneDXMetadataTools(
components=[
CycloneDXToolComponent(
name="my-scanner",
type="application",
),
],
),
),
spec_version="1.5",
version=1,
vulnerabilities=[
CycloneDXVulnerability(
advisories=[
CycloneDXVulnerabilityAdvisory(
url="https://example.com/advisory/CVE-2021-1234",
),
],
affects=[
CycloneDXVulnerabilityAffects(
ref="a3390fca-c315-41ae-ae05-af5e7859cdee",
),
],
analysis=CycloneDXVulnerabilityAnalysis(
state="resolved",
),
cwes=[
123,
345,
],
description="Sample vulnerability detected in the application.",
detail="Details about the vulnerability.",
id="CVE-2021-1234",
ratings=[
CycloneDXVulnerabilityRating(
score=9.0,
severity="high",
vector="CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N",
),
],
references=[
CycloneDXVulnerabilityReference(
id="GHSA-35m5-8cvj-8783",
source=CycloneDXVulnerabilityReferenceSource(
url="https://example.com",
),
),
],
),
],
)
configuration = Configuration()
configuration.access_token = environ["DD_BEARER_TOKEN"]
configuration.unstable_operations["import_security_vulnerabilities"] = True
with ApiClient(configuration) as api_client:
api_instance = SecurityMonitoringApi(api_client)
api_instance.import_security_vulnerabilities(body=body)
Instructions
First install the library and its dependencies and then save the example to example.py and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"# Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
require "datadog_api_client"
DatadogAPIClient.configure do |config|
config.access_token = ENV["DD_BEARER_TOKEN"]
config.unstable_operations["v2.import_security_vulnerabilities".to_sym] = true
end
api_instance = DatadogAPIClient::V2::SecurityMonitoringAPI.new
body = DatadogAPIClient::V2::CycloneDXBom.new({
bom_format: "CycloneDX",
components: [
DatadogAPIClient::V2::CycloneDXComponent.new({
bom_ref: "a3390fca-c315-41ae-ae05-af5e7859cdee",
name: "lodash",
purl: "pkg:npm/lodash@4.17.21",
type: DatadogAPIClient::V2::CycloneDXComponentType::LIBRARY,
version: "4.17.21",
}),
],
metadata: DatadogAPIClient::V2::CycloneDXMetadata.new({
component: DatadogAPIClient::V2::CycloneDXMetadataComponent.new({
bom_ref: "host-ref-abc123",
name: "i-12345",
type: "operating-system",
}),
tools: DatadogAPIClient::V2::CycloneDXMetadataTools.new({
components: [
DatadogAPIClient::V2::CycloneDXToolComponent.new({
name: "my-scanner",
type: "application",
}),
],
}),
}),
spec_version: "1.5",
version: 1,
vulnerabilities: [
DatadogAPIClient::V2::CycloneDXVulnerability.new({
advisories: [
DatadogAPIClient::V2::CycloneDXVulnerabilityAdvisory.new({
url: "https://example.com/advisory/CVE-2021-1234",
}),
],
affects: [
DatadogAPIClient::V2::CycloneDXVulnerabilityAffects.new({
ref: "a3390fca-c315-41ae-ae05-af5e7859cdee",
}),
],
analysis: DatadogAPIClient::V2::CycloneDXVulnerabilityAnalysis.new({
state: "resolved",
}),
cwes: [
123,
345,
],
description: "Sample vulnerability detected in the application.",
detail: "Details about the vulnerability.",
id: "CVE-2021-1234",
ratings: [
DatadogAPIClient::V2::CycloneDXVulnerabilityRating.new({
score: 9.0,
severity: "high",
vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N",
}),
],
references: [
DatadogAPIClient::V2::CycloneDXVulnerabilityReference.new({
id: "GHSA-35m5-8cvj-8783",
source: DatadogAPIClient::V2::CycloneDXVulnerabilityReferenceSource.new({
url: "https://example.com",
}),
}),
],
}),
],
})
p api_instance.import_security_vulnerabilities(body)
Instructions
First install the library and its dependencies and then save the example to example.rb and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"// Import security vulnerabilities returns "Vulnerabilities accepted
// successfully." response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
use datadog_api_client::datadogV2::model::CycloneDXBom;
use datadog_api_client::datadogV2::model::CycloneDXComponent;
use datadog_api_client::datadogV2::model::CycloneDXComponentType;
use datadog_api_client::datadogV2::model::CycloneDXMetadata;
use datadog_api_client::datadogV2::model::CycloneDXMetadataComponent;
use datadog_api_client::datadogV2::model::CycloneDXMetadataTools;
use datadog_api_client::datadogV2::model::CycloneDXToolComponent;
use datadog_api_client::datadogV2::model::CycloneDXVulnerability;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityAdvisory;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityAffects;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityAnalysis;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityRating;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityReference;
use datadog_api_client::datadogV2::model::CycloneDXVulnerabilityReferenceSource;
#[tokio::main]
async fn main() {
let body = CycloneDXBom::new(
"CycloneDX".to_string(),
vec![CycloneDXComponent::new(
"a3390fca-c315-41ae-ae05-af5e7859cdee".to_string(),
"lodash".to_string(),
CycloneDXComponentType::LIBRARY,
"4.17.21".to_string(),
)
.purl("pkg:npm/lodash@4.17.21".to_string())],
CycloneDXMetadata::new(
CycloneDXMetadataComponent::new("i-12345".to_string())
.bom_ref("host-ref-abc123".to_string())
.type_("operating-system".to_string()),
CycloneDXMetadataTools::new(vec![CycloneDXToolComponent::new(
"my-scanner".to_string(),
)
.type_("application".to_string())]),
),
"1.5".to_string(),
vec![CycloneDXVulnerability::new(
vec![CycloneDXVulnerabilityAffects::new(
"a3390fca-c315-41ae-ae05-af5e7859cdee".to_string(),
)],
"CVE-2021-1234".to_string(),
vec![CycloneDXVulnerabilityRating::new()
.score(9.0 as f64)
.severity("high".to_string())
.vector("CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N".to_string())],
)
.advisories(vec![CycloneDXVulnerabilityAdvisory::new()
.url("https://example.com/advisory/CVE-2021-1234".to_string())])
.analysis(CycloneDXVulnerabilityAnalysis::new().state("resolved".to_string()))
.cwes(vec![123, 345])
.description("Sample vulnerability detected in the application.".to_string())
.detail("Details about the vulnerability.".to_string())
.references(vec![CycloneDXVulnerabilityReference::new()
.id("GHSA-35m5-8cvj-8783".to_string())
.source(
CycloneDXVulnerabilityReferenceSource::new().url("https://example.com".to_string()),
)])],
)
.version(1);
let mut configuration = datadog::Configuration::new();
configuration.set_unstable_operation_enabled("v2.import_security_vulnerabilities", true);
let api = SecurityMonitoringAPI::with_config(configuration);
let resp = api.import_security_vulnerabilities(body).await;
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}
Instructions
First install the library and its dependencies and then save the example to src/main.rs and run following commands:
DD_SITE="datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us3.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us5.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="datadoghq.eu" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ap1.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ap2.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="uk1.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run/**
* Import security vulnerabilities returns "Vulnerabilities accepted successfully." response
*/
import { client, v2 } from "@datadog/datadog-api-client";
const configuration = client.createConfiguration({
authMethods: {
AuthZ: {
accessToken: process.env.DD_BEARER_TOKEN as string,
},
},
});
configuration.unstableOperations["v2.importSecurityVulnerabilities"] = true;
const apiInstance = new v2.SecurityMonitoringApi(configuration);
const params: v2.SecurityMonitoringApiImportSecurityVulnerabilitiesRequest = {
body: {
bomFormat: "CycloneDX",
components: [
{
bomRef: "a3390fca-c315-41ae-ae05-af5e7859cdee",
name: "lodash",
purl: "pkg:npm/lodash@4.17.21",
type: "library",
version: "4.17.21",
},
],
metadata: {
component: {
bomRef: "host-ref-abc123",
name: "i-12345",
type: "operating-system",
},
tools: {
components: [
{
name: "my-scanner",
type: "application",
},
],
},
},
specVersion: "1.5",
version: 1,
vulnerabilities: [
{
advisories: [
{
url: "https://example.com/advisory/CVE-2021-1234",
},
],
affects: [
{
ref: "a3390fca-c315-41ae-ae05-af5e7859cdee",
},
],
analysis: {
state: "resolved",
},
cwes: [123, 345],
description: "Sample vulnerability detected in the application.",
detail: "Details about the vulnerability.",
id: "CVE-2021-1234",
ratings: [
{
score: 9.0,
severity: "high",
vector: "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N",
},
],
references: [
{
id: "GHSA-35m5-8cvj-8783",
source: {
url: "https://example.com",
},
},
],
},
],
},
};
apiInstance
.importSecurityVulnerabilities(params)
.then((data: any) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);
})
.catch((error: any) => console.error(error));
Instructions
First install the library and its dependencies and then save the example to example.ts and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"