Skip to content

Commit 456e775

Browse files
authored
fix: (IAC-996) Remediate the critical security vulnerabilities (#311)
1 parent f5a1ae9 commit 456e775

File tree

4 files changed

+38
-62
lines changed

4 files changed

+38
-62
lines changed

Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ WORKDIR /viya4-iac-azure
1010
COPY --from=terraform /bin/terraform /bin/terraform
1111
COPY . .
1212

13-
RUN apk --update --no-cache add git openssh \
13+
RUN apk update \
14+
&& apk --no-cache add git openssh \
1415
&& curl -sLO https://storage.googleapis.com/kubernetes-release/release/v$KUBECTL_VERSION/bin/linux/amd64/kubectl \
1516
&& chmod 755 ./kubectl /viya4-iac-azure/docker-entrypoint.sh \
1617
&& mv ./kubectl /usr/local/bin/kubectl \

modules/kubeconfig/main.tf

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,28 @@ locals {
55
service_account_name = "${var.prefix}-cluster-admin-sa"
66
cluster_role_binding_name = "${var.prefix}-cluster-admin-crb"
77
service_account_secret_name = "${var.prefix}-sa-secret"
8-
}
9-
10-
# Provider based kube config data/template/resources
11-
data "template_file" "kubeconfig_provider" {
12-
count = var.create_static_kubeconfig ? 0 : 1
13-
template = file("${path.module}/templates/kubeconfig-provider.tmpl")
148

15-
vars = {
9+
# Provider based kubeconfig: modules/kubeconfig/templates/kubeconfig-provider.tmpl
10+
kubeconfig_provider = var.create_static_kubeconfig ? null : templatefile("${path.module}/templates/kubeconfig-provider.tmpl", {
1611
cluster_name = var.cluster_name
1712
endpoint = var.endpoint
1813
ca_crt = var.ca_crt
1914
client_crt = var.client_crt
2015
client_key = var.client_key
2116
token = var.token
22-
}
17+
})
18+
19+
# Service Account based kubeconfig: modules/kubeconfig/templates/kubeconfig-sa.tmpl
20+
kubeconfig_sa = var.create_static_kubeconfig ? templatefile("${path.module}/templates/kubeconfig-sa.tmpl", {
21+
cluster_name = var.cluster_name
22+
endpoint = var.endpoint
23+
name = local.service_account_name
24+
ca_crt = base64encode(lookup(data.kubernetes_secret.sa_secret.0.data,"ca.crt", ""))
25+
token = lookup(data.kubernetes_secret.sa_secret.0.data,"token", "")
26+
namespace = var.namespace
27+
}) : null
2328
}
2429

25-
# Service Account based kube config data/template/resources
2630
data "kubernetes_secret" "sa_secret" {
2731
count = var.create_static_kubeconfig ? 1 : 0
2832
metadata {
@@ -33,22 +37,6 @@ data "kubernetes_secret" "sa_secret" {
3337
depends_on = [kubernetes_secret.sa_secret]
3438
}
3539

36-
data "template_file" "kubeconfig_sa" {
37-
count = var.create_static_kubeconfig ? 1 : 0
38-
template = file("${path.module}/templates/kubeconfig-sa.tmpl")
39-
40-
vars = {
41-
cluster_name = var.cluster_name
42-
endpoint = var.endpoint
43-
name = local.service_account_name
44-
ca_crt = base64encode(lookup(data.kubernetes_secret.sa_secret.0.data,"ca.crt", ""))
45-
token = lookup(data.kubernetes_secret.sa_secret.0.data,"token", "")
46-
namespace = var.namespace
47-
}
48-
49-
depends_on = [data.kubernetes_secret.sa_secret]
50-
}
51-
5240
# 1.24 change: Create service account secret
5341
resource "kubernetes_secret" "sa_secret" {
5442
count = var.create_static_kubeconfig ? 1 : 0
@@ -94,7 +82,7 @@ resource "kubernetes_cluster_role_binding" "kubernetes_crb" {
9482

9583
# kube config file generation
9684
resource "local_file" "kubeconfig" {
97-
content = var.create_static_kubeconfig ? data.template_file.kubeconfig_sa.0.rendered : data.template_file.kubeconfig_provider.0.rendered
85+
content = var.create_static_kubeconfig ? local.kubeconfig_sa : local.kubeconfig_provider
9886
filename = var.path
9987
file_permission = "0644"
10088
directory_permission = "0755"

versions.tf

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,31 @@ terraform {
1212
}
1313
azuread = {
1414
source = "hashicorp/azuread"
15-
version = "1.5.0"
15+
version = "2.38.0"
1616
}
1717
external = {
1818
source = "hashicorp/external"
19-
version = "2.1.0"
19+
version = "2.3.1"
2020
}
2121
local = {
2222
source = "hashicorp/local"
23-
version = "2.1.0"
23+
version = "2.4.0"
2424
}
2525
null = {
2626
source = "hashicorp/null"
27-
version = "3.1.0"
28-
}
29-
template = {
30-
source = "hashicorp/template"
31-
version = "2.2.0"
27+
version = "3.2.1"
3228
}
3329
tls = {
3430
source = "hashicorp/tls"
35-
version = "3.1.0"
31+
version = "4.0.4"
3632
}
3733
cloudinit = {
3834
source = "hashicorp/cloudinit"
39-
version = "2.2.0"
35+
version = "2.3.2"
4036
}
4137
kubernetes = {
4238
source = "hashicorp/kubernetes"
43-
version = "2.14.0"
39+
version = "2.20.0"
4440
}
4541
}
4642
}

vms.tf

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,13 @@ locals {
66
? ""
77
: var.storage_type == "ha" ? module.netapp.0.netapp_endpoint : module.nfs.0.private_ip_address
88
)
9+
910
rwx_filestore_path = (var.storage_type == "none"
1011
? ""
1112
: var.storage_type == "ha" ? module.netapp.0.netapp_path : "/export"
1213
)
13-
}
14-
15-
16-
data "template_file" "jump-cloudconfig" {
17-
template = file("${path.module}/files/cloud-init/jump/cloud-config")
18-
count = var.create_jump_vm ? 1 : 0
1914

20-
vars = {
15+
jump_cloudconfig = var.create_jump_vm ? templatefile("${path.module}/files/cloud-init/jump/cloud-config", {
2116
mounts = (var.storage_type == "none"
2217
? "[]"
2318
: jsonencode(
@@ -33,18 +28,24 @@ data "template_file" "jump-cloudconfig" {
3328
rwx_filestore_path = local.rwx_filestore_path
3429
jump_rwx_filestore_path = var.jump_rwx_filestore_path
3530
vm_admin = var.jump_vm_admin
36-
}
31+
}) : null
32+
33+
nfs_cloudconfig = var.storage_type == "standard" ? templatefile("${path.module}/files/cloud-init/nfs/cloud-config", {
34+
aks_cidr_block = module.vnet.subnets["aks"].address_prefixes.0
35+
misc_cidr_block = module.vnet.subnets["misc"].address_prefixes.0
36+
vm_admin = var.nfs_vm_admin
37+
}) : null
3738
}
3839

39-
data "template_cloudinit_config" "jump" {
40+
data "cloudinit_config" "jump" {
4041
count = var.create_jump_vm ? 1 : 0
4142

4243
gzip = true
4344
base64_encode = true
4445

4546
part {
4647
content_type = "text/cloud-config"
47-
content = data.template_file.jump-cloudconfig.0.rendered
48+
content = local.jump_cloudconfig
4849
}
4950
}
5051

@@ -63,32 +64,22 @@ module "jump" {
6364
vm_zone = var.jump_vm_zone
6465
fips_enabled = var.fips_enabled
6566
ssh_public_key = local.ssh_public_key
66-
cloud_init = data.template_cloudinit_config.jump.0.rendered
67+
cloud_init = data.cloudinit_config.jump.0.rendered
6768
create_public_ip = var.create_jump_public_ip
6869

6970
# Jump VM mounts NFS path hence dependency on 'module.nfs'
7071
depends_on = [module.vnet, module.nfs]
7172
}
7273

73-
data "template_file" "nfs-cloudconfig" {
74-
template = file("${path.module}/files/cloud-init/nfs/cloud-config")
75-
count = var.storage_type == "standard" ? 1 : 0
76-
vars = {
77-
aks_cidr_block = module.vnet.subnets["aks"].address_prefixes.0
78-
misc_cidr_block = module.vnet.subnets["misc"].address_prefixes.0
79-
vm_admin = var.nfs_vm_admin
80-
}
81-
}
82-
83-
data "template_cloudinit_config" "nfs" {
74+
data "cloudinit_config" "nfs" {
8475
count = var.storage_type == "standard" ? 1 : 0
8576

8677
gzip = true
8778
base64_encode = true
8879

8980
part {
9081
content_type = "text/cloud-config"
91-
content = data.template_file.nfs-cloudconfig.0.rendered
82+
content = local.nfs_cloudconfig
9283
}
9384
}
9485

@@ -108,7 +99,7 @@ module "nfs" {
10899
vm_zone = var.nfs_vm_zone
109100
fips_enabled = var.fips_enabled
110101
ssh_public_key = local.ssh_public_key
111-
cloud_init = data.template_cloudinit_config.nfs.0.rendered
102+
cloud_init = data.cloudinit_config.nfs.0.rendered
112103
create_public_ip = var.create_nfs_public_ip
113104
data_disk_count = 4
114105
data_disk_size = var.nfs_raid_disk_size

0 commit comments

Comments
 (0)