Skip to content

Commit 6875c21

Browse files
authored
Update aws_kubernetes_cluster_version.yaml
1 parent 59fe41e commit 6875c21

File tree

1 file changed

+58
-6
lines changed

1 file changed

+58
-6
lines changed

compliance/controls/baseline/aws/eks/aws_kubernetes_cluster_version.yaml

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,77 @@ Query:
99
Parameters:
1010
- Key: awsEksClusterLatestVersion
1111
Required: true
12-
DefaultValue: "1.29"
12+
DefaultValue: "1.29" # e.g. "1.29", can also be "1.29.4" or "1.29.4.3"
1313
PrimaryTable: aws_eks_cluster
1414
QueryToExecute: |
15+
WITH cluster_versions AS (
16+
SELECT
17+
-- Parse up to four segments from the cluster's 'version' field
18+
COALESCE(NULLIF(split_part(version, '.', 1), ''), '0')::int AS major,
19+
COALESCE(NULLIF(split_part(version, '.', 2), ''), '0')::int AS minor,
20+
COALESCE(NULLIF(split_part(version, '.', 3), ''), '0')::int AS patch,
21+
COALESCE(NULLIF(split_part(version, '.', 4), ''), '0')::int AS sub,
22+
version,
23+
arn,
24+
platform_integration_id,
25+
platform_resource_id,
26+
title,
27+
region,
28+
account_id
29+
FROM aws_eks_cluster
30+
),
31+
32+
param_versions AS (
33+
SELECT
34+
-- Parse up to four segments from the param {{.awsEksClusterLatestVersion}}
35+
COALESCE(NULLIF(split_part('{{.awsEksClusterLatestVersion}}', '.', 1), ''), '0')::int AS major,
36+
COALESCE(NULLIF(split_part('{{.awsEksClusterLatestVersion}}', '.', 2), ''), '0')::int AS minor,
37+
COALESCE(NULLIF(split_part('{{.awsEksClusterLatestVersion}}', '.', 3), ''), '0')::int AS patch,
38+
COALESCE(NULLIF(split_part('{{.awsEksClusterLatestVersion}}', '.', 4), ''), '0')::int AS sub
39+
)
40+
1541
SELECT
1642
arn AS resource,
1743
platform_integration_id,
1844
platform_resource_id,
1945
CASE
20-
WHEN (version)::decimal >= '{{.awsEksClusterLatestVersion}}'::decimal THEN 'ok'
46+
WHEN (
47+
-- Convert cluster version to a big integer
48+
cluster_versions.major * 1000000000 +
49+
cluster_versions.minor * 1000000 +
50+
cluster_versions.patch * 1000 +
51+
cluster_versions.sub
52+
) >= (
53+
-- Convert param version to a big integer
54+
param_versions.major * 1000000000 +
55+
param_versions.minor * 1000000 +
56+
param_versions.patch * 1000 +
57+
param_versions.sub
58+
)
59+
THEN 'ok'
2160
ELSE 'alarm'
2261
END AS status,
2362
CASE
24-
WHEN (version)::decimal >= '{{.awsEksClusterLatestVersion}}'::decimal THEN title || ' runs on a supported kubernetes version.'
25-
ELSE title || ' is running on version ' || version || ' which is not supported. supported versions are >= ' || '{{.awsEksClusterLatestVersion}}'::decimal
63+
WHEN (
64+
cluster_versions.major * 1000000000 +
65+
cluster_versions.minor * 1000000 +
66+
cluster_versions.patch * 1000 +
67+
cluster_versions.sub
68+
) >= (
69+
param_versions.major * 1000000000 +
70+
param_versions.minor * 1000000 +
71+
param_versions.patch * 1000 +
72+
param_versions.sub
73+
)
74+
THEN title || ' runs on a supported Kubernetes version.'
75+
ELSE
76+
title || ' is running on version ' || cluster_versions.version ||
77+
' which is not supported. Supported versions are >= ' || '{{.awsEksClusterLatestVersion}}'
2678
END AS reason,
2779
region,
2880
account_id
29-
FROM
30-
aws_eks_cluster;
81+
FROM cluster_versions
82+
CROSS JOIN param_versions;
3183
Severity: low
3284
Tags:
3385
platform_score_cloud_service_name:

0 commit comments

Comments
 (0)