Experience Builder


Terraform

< Back

Repository
sethvargo / vault-on-gke
Description

Run @HashiCorp Vault on Google Kubernetes Engine (GKE) with Terraform

Stars

 496

Failed Checks
  •  Security Scanning
     Linting

  • Scan Date

    2023-10-30 17:57:40

    Security Scanning

    This repository failed the Experience Builder Terraform Module's Security Scanning validation. This means that a security scanning tool was not found to be implemented in any of the CICD tool configuration files in the repository.

    There is an opportunity to:

    Checkov Output
                    
                      terraform scan results:
    
    Passed checks: 45, Failed checks: 21, Skipped checks: 0
    
    Check: CKV_GCP_27: "Ensure that the default network does not exist in a project"
    	FAILED for resource: google_project.vault
    	File: /terraform/gcp.tf:20-26
    	Guide: https://docs.bridgecrew.io/docs/bc_gcp_networking_7
    
    		20 | resource "google_project" "vault" {
    		21 |   count           = var.project != "" ? 0 : 1
    		22 |   name            = random_id.project_random.hex
    		23 |   project_id      = random_id.project_random.hex
    		24 |   org_id          = var.org_id
    		25 |   billing_account = var.billing_account
    		26 | }
    
    Check: CKV_GCP_114: "Ensure public access prevention is enforced on Cloud Storage bucket"
    	FAILED for resource: google_storage_bucket.vault
    	File: /terraform/gcp.tf:69-92
    
    		69 | resource "google_storage_bucket" "vault" {
    		70 |   name          = "${data.google_project.vault.project_id}-vault-storage"
    		71 |   project       = data.google_project.vault.project_id
    		72 |   force_destroy = true
    		73 |   storage_class = "MULTI_REGIONAL"
    		74 | 
    		75 |   uniform_bucket_level_access = true
    		76 | 
    		77 |   versioning {
    		78 |     enabled = true
    		79 |   }
    		80 | 
    		81 |   lifecycle_rule {
    		82 |     action {
    		83 |       type = "Delete"
    		84 |     }
    		85 | 
    		86 |     condition {
    		87 |       num_newer_versions = 1
    		88 |     }
    		89 |   }
    		90 | 
    		91 |   depends_on = [google_project_service.service]
    		92 | }
    
    Check: CKV_GCP_62: "Bucket should log access"
    	FAILED for resource: google_storage_bucket.vault
    	File: /terraform/gcp.tf:69-92
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-storage-gcs-policies/bc-gcp-logging-2.html
    
    		69 | resource "google_storage_bucket" "vault" {
    		70 |   name          = "${data.google_project.vault.project_id}-vault-storage"
    		71 |   project       = data.google_project.vault.project_id
    		72 |   force_destroy = true
    		73 |   storage_class = "MULTI_REGIONAL"
    		74 | 
    		75 |   uniform_bucket_level_access = true
    		76 | 
    		77 |   versioning {
    		78 |     enabled = true
    		79 |   }
    		80 | 
    		81 |   lifecycle_rule {
    		82 |     action {
    		83 |       type = "Delete"
    		84 |     }
    		85 | 
    		86 |     condition {
    		87 |       num_newer_versions = 1
    		88 |     }
    		89 |   }
    		90 | 
    		91 |   depends_on = [google_project_service.service]
    		92 | }
    
    Check: CKV_GCP_82: "Ensure KMS keys are protected from deletion"
    	FAILED for resource: google_kms_crypto_key.vault-init
    	File: /terraform/gcp.tf:127-131
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-general-policies/ensure-gcp-kms-keys-are-protected-from-deletion.html
    
    		127 | resource "google_kms_crypto_key" "vault-init" {
    		128 |   name            = var.kms_crypto_key
    		129 |   key_ring        = google_kms_key_ring.vault.id
    		130 |   rotation_period = "604800s"
    		131 | }
    
    Check: CKV_GCP_82: "Ensure KMS keys are protected from deletion"
    	FAILED for resource: google_kms_crypto_key.kubernetes-secrets
    	File: /terraform/gcp.tf:141-145
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-general-policies/ensure-gcp-kms-keys-are-protected-from-deletion.html
    
    		141 | resource "google_kms_crypto_key" "kubernetes-secrets" {
    		142 |   name            = var.kubernetes_secrets_crypto_key
    		143 |   key_ring        = google_kms_key_ring.vault.id
    		144 |   rotation_period = "604800s"
    		145 | }
    
    Check: CKV_GCP_26: "Ensure that VPC Flow Logs is enabled for every subnet in a VPC Network"
    	FAILED for resource: google_compute_subnetwork.vault-subnetwork
    	File: /terraform/gcp.tf:174-192
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/logging-policies-1/bc-gcp-logging-1.html
    
    		174 | resource "google_compute_subnetwork" "vault-subnetwork" {
    		175 |   name          = "vault-subnetwork"
    		176 |   project       = data.google_project.vault.project_id
    		177 |   network       = google_compute_network.vault-network.self_link
    		178 |   region        = var.region
    		179 |   ip_cidr_range = var.kubernetes_network_ipv4_cidr
    		180 | 
    		181 |   private_ip_google_access = true
    		182 | 
    		183 |   secondary_ip_range {
    		184 |     range_name    = "vault-pods"
    		185 |     ip_cidr_range = var.kubernetes_pods_ipv4_cidr
    		186 |   }
    		187 | 
    		188 |   secondary_ip_range {
    		189 |     range_name    = "vault-svcs"
    		190 |     ip_cidr_range = var.kubernetes_services_ipv4_cidr
    		191 |   }
    		192 | }
    
    Check: CKV_GCP_76: "Ensure that Private google access is enabled for IPV6"
    	FAILED for resource: google_compute_subnetwork.vault-subnetwork
    	File: /terraform/gcp.tf:174-192
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-networking-policies/ensure-gcp-private-google-access-is-enabled-for-ipv6.html
    
    		174 | resource "google_compute_subnetwork" "vault-subnetwork" {
    		175 |   name          = "vault-subnetwork"
    		176 |   project       = data.google_project.vault.project_id
    		177 |   network       = google_compute_network.vault-network.self_link
    		178 |   region        = var.region
    		179 |   ip_cidr_range = var.kubernetes_network_ipv4_cidr
    		180 | 
    		181 |   private_ip_google_access = true
    		182 | 
    		183 |   secondary_ip_range {
    		184 |     range_name    = "vault-pods"
    		185 |     ip_cidr_range = var.kubernetes_pods_ipv4_cidr
    		186 |   }
    		187 | 
    		188 |   secondary_ip_range {
    		189 |     range_name    = "vault-svcs"
    		190 |     ip_cidr_range = var.kubernetes_services_ipv4_cidr
    		191 |   }
    		192 | }
    
    Check: CKV_GCP_66: "Ensure use of Binary Authorization"
    	FAILED for resource: google_container_cluster.vault
    	File: /terraform/gcp.tf:229-353
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-kubernetes-policies/ensure-use-of-binary-authorization.html
    
    		Code lines for this resource are too many. Please use IDE of your choice to review the file.
    Check: CKV_GCP_24: "Ensure PodSecurityPolicy controller is enabled on the Kubernetes Engine Clusters"
    	FAILED for resource: google_container_cluster.vault
    	File: /terraform/gcp.tf:229-353
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-kubernetes-policies/bc-gcp-kubernetes-9.html
    
    		Code lines for this resource are too many. Please use IDE of your choice to review the file.
    Check: CKV_GCP_65: "Manage Kubernetes RBAC users with Google Groups for GKE"
    	FAILED for resource: google_container_cluster.vault
    	File: /terraform/gcp.tf:229-353
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-kubernetes-policies/manage-kubernetes-rbac-users-with-google-groups-for-gke.html
    
    		Code lines for this resource are too many. Please use IDE of your choice to review the file.
    Check: CKV_GCP_68: "Ensure Secure Boot for Shielded GKE Nodes is Enabled"
    	FAILED for resource: google_container_cluster.vault
    	File: /terraform/gcp.tf:229-353
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-kubernetes-policies/ensure-secure-boot-for-shielded-gke-nodes-is-enabled.html
    
    		Code lines for this resource are too many. Please use IDE of your choice to review the file.
    Check: CKV_GCP_21: "Ensure Kubernetes Clusters are configured with Labels"
    	FAILED for resource: google_container_cluster.vault
    	File: /terraform/gcp.tf:229-353
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-kubernetes-policies/bc-gcp-kubernetes-13.html
    
    		Code lines for this resource are too many. Please use IDE of your choice to review the file.
    Check: CKV_GCP_69: "Ensure the GKE Metadata Server is Enabled"
    	FAILED for resource: google_container_cluster.vault
    	File: /terraform/gcp.tf:229-353
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-kubernetes-policies/ensure-the-gke-metadata-server-is-enabled.html
    
    		Code lines for this resource are too many. Please use IDE of your choice to review the file.
    Check: CKV_GCP_61: "Enable VPC Flow Logs and Intranode Visibility"
    	FAILED for resource: google_container_cluster.vault
    	File: /terraform/gcp.tf:229-353
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/google-cloud-kubernetes-policies/enable-vpc-flow-logs-and-intranode-visibility.html
    
    		Code lines for this resource are too many. Please use IDE of your choice to review the file.
    Check: CKV_K8S_21: "The default namespace should not be used"
    	FAILED for resource: kubernetes_secret.vault-tls
    	File: /terraform/k8s.tf:16-26
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-20.html
    
    		16 | resource "kubernetes_secret" "vault-tls" {
    		17 |   metadata {
    		18 |     name = "vault-tls"
    		19 |   }
    		20 | 
    		21 |   data = {
    		22 |     "vault.crt" = "${tls_locally_signed_cert.vault.cert_pem}\n${tls_self_signed_cert.vault-ca.cert_pem}"
    		23 |     "vault.key" = tls_private_key.vault.private_key_pem
    		24 |     "ca.crt"    = tls_self_signed_cert.vault-ca.cert_pem
    		25 |   }
    		26 | }
    
    Check: CKV_K8S_21: "The default namespace should not be used"
    	FAILED for resource: kubernetes_service_account.vault-server
    	File: /terraform/k8s.tf:28-32
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-20.html
    
    		28 | resource "kubernetes_service_account" "vault-server" {
    		29 |   metadata {
    		30 |     name = "vault-server"
    		31 |   }
    		32 | }
    
    Check: CKV_K8S_21: "The default namespace should not be used"
    	FAILED for resource: kubernetes_role_binding.vault-server
    	File: /terraform/k8s.tf:47-63
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-20.html
    
    		47 | resource "kubernetes_role_binding" "vault-server" {
    		48 |   metadata {
    		49 |     name = "vault-server"
    		50 |   }
    		51 | 
    		52 |   role_ref {
    		53 |     api_group = "rbac.authorization.k8s.io"
    		54 |     kind      = "Role"
    		55 |     name      = kubernetes_role.vault-server.metadata.0.name
    		56 |   }
    		57 | 
    		58 |   subject {
    		59 |     kind      = "ServiceAccount"
    		60 |     name      = kubernetes_service_account.vault-server.metadata.0.name
    		61 |     namespace = kubernetes_service_account.vault-server.metadata.0.namespace
    		62 |   }
    		63 | }
    
    Check: CKV_K8S_21: "The default namespace should not be used"
    	FAILED for resource: kubernetes_service.vault-lb
    	File: /terraform/k8s.tf:65-91
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-20.html
    
    		65 | resource "kubernetes_service" "vault-lb" {
    		66 |   metadata {
    		67 |     name = "vault"
    		68 |     labels = {
    		69 |       app = "vault"
    		70 |     }
    		71 |   }
    		72 | 
    		73 |   spec {
    		74 |     type                        = "LoadBalancer"
    		75 |     load_balancer_ip            = google_compute_address.vault.address
    		76 |     load_balancer_source_ranges = var.vault_source_ranges
    		77 |     external_traffic_policy     = "Local"
    		78 | 
    		79 |     selector = {
    		80 |       app          = "vault"
    		81 |       vault-active = "true"
    		82 |     }
    		83 | 
    		84 |     port {
    		85 |       name        = "vault-port"
    		86 |       port        = 443
    		87 |       target_port = 8200
    		88 |       protocol    = "TCP"
    		89 |     }
    		90 |   }
    		91 | }
    
    Check: CKV_K8S_21: "The default namespace should not be used"
    	FAILED for resource: kubernetes_stateful_set.vault
    	File: /terraform/k8s.tf:93-312
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/kubernetes-policies/kubernetes-policy-index/bc-k8s-20.html
    
    		Code lines for this resource are too many. Please use IDE of your choice to review the file.
    Check: CKV2_GCP_18: "Ensure GCP network defines a firewall and does not use the default firewall"
    	FAILED for resource: google_compute_network.vault-network
    	File: /terraform/gcp.tf:165-171
    
    		165 | resource "google_compute_network" "vault-network" {
    		166 |   name                    = "vault-network"
    		167 |   project                 = data.google_project.vault.project_id
    		168 |   auto_create_subnetworks = false
    		169 | 
    		170 |   depends_on = [google_project_service.service]
    		171 | }
    
    Check: CKV2_GCP_5: "Ensure that Cloud Audit Logging is configured properly across all services and all users from a project"
    	FAILED for resource: google_project.vault
    	File: /terraform/gcp.tf:20-26
    	Guide: https://docs.paloaltonetworks.com/content/techdocs/en_US/prisma/prisma-cloud/prisma-cloud-code-security-policy-reference/google-cloud-policies/logging-policies-1/ensure-that-cloud-audit-logging-is-configured-properly-across-all-services-and-all-users-from-a-project.html
    
    		20 | resource "google_project" "vault" {
    		21 |   count           = var.project != "" ? 0 : 1
    		22 |   name            = random_id.project_random.hex
    		23 |   project_id      = random_id.project_random.hex
    		24 |   org_id          = var.org_id
    		25 |   billing_account = var.billing_account
    		26 | }
    
    
    
                    
                  

    Linting

    This repository failed the Experience Builder Terraform Module's Linting validation. This means that a linting tool was not found to be implemented in any of the CICD tool configuration files in the repository.

    There is an opportunity to: