Skip to content

Commit facdf67

Browse files
committed
Get attributes
1 parent 571c588 commit facdf67

File tree

1 file changed

+39
-11
lines changed

1 file changed

+39
-11
lines changed

main.go

Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ import (
1616
)
1717

1818
type findingsInfo struct {
19-
Name string
20-
Severity string
21-
Attributes []*ecr.Attribute
19+
Name string
20+
Severity string
21+
PackageVersion string
22+
PackageName string
23+
CVSS2VECTOR string
24+
CVSS2SCORE string
2225
}
2326

2427
var (
@@ -29,7 +32,7 @@ var (
2932
Name: "image_scan_findings",
3033
Help: "ECR Image Scan Findings",
3134
},
32-
[]string{"name", "severity", "attributes"},
35+
[]string{"name", "severity", "package_version", "package_name", "CVSS2_VECTOR", "CVSS2_SCORE"},
3336
)
3437
)
3538

@@ -67,10 +70,12 @@ func snapshot() error {
6770

6871
for _, findingsInfo := range findingsInfos {
6972
labels := prometheus.Labels{
70-
"name": findingsInfo.Name,
71-
"severity": findingsInfo.Severity,
72-
"attributes": "hoge",
73-
// "attributes": findingsInfo.Attributes,
73+
"name": findingsInfo.Name,
74+
"severity": findingsInfo.Severity,
75+
"package_version": findingsInfo.PackageName,
76+
"package_name": findingsInfo.PackageName,
77+
"CVSS2_VECTOR": findingsInfo.CVSS2VECTOR,
78+
"CVSS2_SCORE": findingsInfo.CVSS2SCORE,
7479
}
7580
findings.With(labels).Set(1)
7681
}
@@ -106,6 +111,13 @@ func getECRImageScanFindings() ([]findingsInfo, error) {
106111
RepositoryName: aws.String("api"),
107112
}
108113

114+
var (
115+
packageVersion string
116+
packageName string
117+
CVSS2VECTOR string
118+
CVSS2SCORE string
119+
)
120+
109121
for {
110122
findings, err := svc.DescribeImageScanFindings(input)
111123
if err != nil {
@@ -114,11 +126,27 @@ func getECRImageScanFindings() ([]findingsInfo, error) {
114126

115127
results := make([]findingsInfo, len(findings.ImageScanFindings.Findings))
116128
for i, finding := range findings.ImageScanFindings.Findings {
129+
for _, attr := range finding.Attributes {
130+
switch *attr.Key {
131+
case "package_version":
132+
packageVersion = *attr.Value
133+
case "package_name":
134+
packageName = *attr.Value
135+
case "CVSS2_VECTOR":
136+
CVSS2VECTOR = *attr.Value
137+
case "CVSS2_SCORE":
138+
CVSS2SCORE = *attr.Value
139+
}
140+
}
117141
results[i] = findingsInfo{
118-
Name: aws.StringValue(finding.Name),
119-
Severity: aws.StringValue(finding.Severity),
120-
Attributes: finding.Attributes,
142+
Name: aws.StringValue(finding.Name),
143+
Severity: aws.StringValue(finding.Severity),
144+
PackageName: packageVersion,
145+
PackageVersion: packageName,
146+
CVSS2VECTOR: CVSS2VECTOR,
147+
CVSS2SCORE: CVSS2SCORE,
121148
}
149+
fmt.Printf("attributes: %#v", finding.Attributes)
122150
}
123151

124152
findingsInfos = append(findingsInfos, results...)

0 commit comments

Comments
 (0)