import requests
url = "https://platform.ankra.app/api/v1/org/clusters/imported/{cluster_id}/stacks/{stack_name}/security"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://platform.ankra.app/api/v1/org/clusters/imported/{cluster_id}/stacks/{stack_name}/security', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://platform.ankra.app/api/v1/org/clusters/imported/{cluster_id}/stacks/{stack_name}/security \
--header 'Authorization: Bearer <token>'{
"status": "connected",
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stack_name": "<string>",
"stack_resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"scanner": {
"fresh_clusters": 123,
"last_scan": "2023-11-07T05:31:56Z",
"stale_after_seconds": 123,
"stale_clusters": 123,
"status": "fresh",
"unscanned_clusters": 123
},
"intelligence": {
"epss_synced_at": "2023-11-07T05:31:56Z",
"kev_listed": 123,
"kev_synced_at": "2023-11-07T05:31:56Z"
},
"scope": {
"addons": 123,
"manifests": 123,
"declared_objects": 123,
"matched_workloads": 123,
"unmatched_members": 123
},
"findings": {
"observed": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"actionable": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"acknowledged": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"accepted_risk": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"findings": 123,
"fixable_severe": 123,
"known_exploited": 123,
"known_exploited_findings": 123,
"affected_images": 123,
"affected_workloads": 123,
"last_scan": "2023-11-07T05:31:56Z"
},
"known_exploited": [
{
"actionable_count": 123,
"affected_clusters": 123,
"affected_workloads": 123,
"cve_id": "<string>",
"finding_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fixable_occurrences": 123,
"last_seen_at": "2023-11-07T05:31:56Z",
"package_name": "<string>",
"package_type": "<string>",
"severity": "<string>",
"title": "<string>",
"known_exploited": true,
"kev_date_added": "<string>",
"kev_due_date": "<string>",
"kev_ransomware_use": true,
"epss_score": 123,
"epss_percentile": 123,
"kev_vendor_project": "<string>",
"kev_product": "<string>",
"kev_vulnerability_name": "<string>",
"kev_required_action": "<string>"
}
],
"top_actionable_findings": [
{
"actionable_count": 123,
"affected_clusters": 123,
"affected_workloads": 123,
"cve_id": "<string>",
"finding_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fixable_occurrences": 123,
"last_seen_at": "2023-11-07T05:31:56Z",
"package_name": "<string>",
"package_type": "<string>",
"severity": "<string>",
"title": "<string>",
"known_exploited": true,
"kev_date_added": "<string>",
"kev_due_date": "<string>",
"kev_ransomware_use": true,
"epss_score": 123,
"epss_percentile": 123,
"kev_vendor_project": "<string>",
"kev_product": "<string>",
"kev_vulnerability_name": "<string>",
"kev_required_action": "<string>"
}
],
"sbom": {
"containers": 123,
"containers_with_sbom": 123,
"containers_without_sbom": 123,
"pods": 123,
"images": 123,
"components": 123,
"workloads": 123,
"latest_generated_at": "2023-11-07T05:31:56Z",
"coverage": {
"scanned_clusters": 123,
"clusters_with_sbom": 123,
"images": 123,
"components": 123,
"workloads": 123,
"latest_generated_at": "2023-11-07T05:31:56Z"
}
},
"members": [
{
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "addon",
"name": "<string>",
"namespace": "<string>",
"release_name": "<string>",
"chart_name": "<string>",
"declared_objects": 123,
"workloads": 123,
"observed": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"actionable": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"fixable_severe": 123,
"known_exploited": 123,
"affected_images": 123,
"containers": 123,
"containers_with_sbom": 123,
"containers_without_sbom": 123,
"sbom_images": 123,
"sbom_components": 123,
"last_scan": "2023-11-07T05:31:56Z"
}
]
}{
"detail": "<string>"
}{
"detail": "permission_denied",
"permission": "<string>",
"scope_type": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}Get imported cluster stack security posture
import requests
url = "https://platform.ankra.app/api/v1/org/clusters/imported/{cluster_id}/stacks/{stack_name}/security"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://platform.ankra.app/api/v1/org/clusters/imported/{cluster_id}/stacks/{stack_name}/security', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request GET \
--url https://platform.ankra.app/api/v1/org/clusters/imported/{cluster_id}/stacks/{stack_name}/security \
--header 'Authorization: Bearer <token>'{
"status": "connected",
"cluster_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"stack_name": "<string>",
"stack_resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"scanner": {
"fresh_clusters": 123,
"last_scan": "2023-11-07T05:31:56Z",
"stale_after_seconds": 123,
"stale_clusters": 123,
"status": "fresh",
"unscanned_clusters": 123
},
"intelligence": {
"epss_synced_at": "2023-11-07T05:31:56Z",
"kev_listed": 123,
"kev_synced_at": "2023-11-07T05:31:56Z"
},
"scope": {
"addons": 123,
"manifests": 123,
"declared_objects": 123,
"matched_workloads": 123,
"unmatched_members": 123
},
"findings": {
"observed": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"actionable": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"acknowledged": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"accepted_risk": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"findings": 123,
"fixable_severe": 123,
"known_exploited": 123,
"known_exploited_findings": 123,
"affected_images": 123,
"affected_workloads": 123,
"last_scan": "2023-11-07T05:31:56Z"
},
"known_exploited": [
{
"actionable_count": 123,
"affected_clusters": 123,
"affected_workloads": 123,
"cve_id": "<string>",
"finding_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fixable_occurrences": 123,
"last_seen_at": "2023-11-07T05:31:56Z",
"package_name": "<string>",
"package_type": "<string>",
"severity": "<string>",
"title": "<string>",
"known_exploited": true,
"kev_date_added": "<string>",
"kev_due_date": "<string>",
"kev_ransomware_use": true,
"epss_score": 123,
"epss_percentile": 123,
"kev_vendor_project": "<string>",
"kev_product": "<string>",
"kev_vulnerability_name": "<string>",
"kev_required_action": "<string>"
}
],
"top_actionable_findings": [
{
"actionable_count": 123,
"affected_clusters": 123,
"affected_workloads": 123,
"cve_id": "<string>",
"finding_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fixable_occurrences": 123,
"last_seen_at": "2023-11-07T05:31:56Z",
"package_name": "<string>",
"package_type": "<string>",
"severity": "<string>",
"title": "<string>",
"known_exploited": true,
"kev_date_added": "<string>",
"kev_due_date": "<string>",
"kev_ransomware_use": true,
"epss_score": 123,
"epss_percentile": 123,
"kev_vendor_project": "<string>",
"kev_product": "<string>",
"kev_vulnerability_name": "<string>",
"kev_required_action": "<string>"
}
],
"sbom": {
"containers": 123,
"containers_with_sbom": 123,
"containers_without_sbom": 123,
"pods": 123,
"images": 123,
"components": 123,
"workloads": 123,
"latest_generated_at": "2023-11-07T05:31:56Z",
"coverage": {
"scanned_clusters": 123,
"clusters_with_sbom": 123,
"images": 123,
"components": 123,
"workloads": 123,
"latest_generated_at": "2023-11-07T05:31:56Z"
}
},
"members": [
{
"resource_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "addon",
"name": "<string>",
"namespace": "<string>",
"release_name": "<string>",
"chart_name": "<string>",
"declared_objects": 123,
"workloads": 123,
"observed": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"actionable": {
"critical": 123,
"high": 123,
"low": 123,
"medium": 123,
"unknown": 123
},
"fixable_severe": 123,
"known_exploited": 123,
"affected_images": 123,
"containers": 123,
"containers_with_sbom": 123,
"containers_without_sbom": 123,
"sbom_images": 123,
"sbom_components": 123,
"last_scan": "2023-11-07T05:31:56Z"
}
]
}{
"detail": "<string>"
}{
"detail": "permission_denied",
"permission": "<string>",
"scope_type": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Response
Successful response
The security summary of one stack of an imported cluster: CVEs, CISA-listed exploited vulnerabilities and bills of materials across every workload its add-ons and manifests deploy.
connected: the figures describe scanned workloads. stale: the newest report is older than the scanner's freshness window. no_reports: workloads were attributed but none carries a report or a bill of materials yet. unmatched: no member resolved to an object in the resource cache. unscanned: the scanner has never reported on this cluster. empty: the stack has no add-on or manifest members.
connected, stale, no_reports, unmatched, unscanned, empty Show child attributes
Show child attributes
Show child attributes
Show child attributes
How much of the stack the read could attribute to running objects.
Show child attributes
Show child attributes
The CVE posture across the stack's workloads: live, namespaced occurrences only.
Show child attributes
Show child attributes
Every actionable finding of the stack listed in the CISA KEV catalog, earliest remediation due date first (capped at 50; the findings list with known_exploited=true carries the rest).
Show child attributes
Show child attributes
The actionable findings to fix first: CISA-listed, then by severity, then fixable ones (capped at 8).
Show child attributes
Show child attributes
The bill-of-materials picture of the stack; coverage is the cluster's opt-in state so an absent inventory can be read against it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes