diff --git a/examples/karpenter/main.tf b/examples/karpenter/main.tf
index 9961063c95..f2521b0e52 100644
--- a/examples/karpenter/main.tf
+++ b/examples/karpenter/main.tf
@@ -119,7 +119,9 @@ module "karpenter" {
AmazonSSMManagedInstanceCore = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
}
- tags = local.tags
+ # Used to enforce TLS messaging on SQS queue
+ queue_enforce_tls_messages = true
+ tags = local.tags
}
module "karpenter_disabled" {
diff --git a/modules/karpenter/README.md b/modules/karpenter/README.md
index fe1956eb80..d2868aa6d6 100644
--- a/modules/karpenter/README.md
+++ b/modules/karpenter/README.md
@@ -171,6 +171,7 @@ No modules.
| [node\_iam\_role\_permissions\_boundary](#input\_node\_iam\_role\_permissions\_boundary) | ARN of the policy that is used to set the permissions boundary for the IAM role | `string` | `null` | no |
| [node\_iam\_role\_tags](#input\_node\_iam\_role\_tags) | A map of additional tags to add to the IAM role created | `map(string)` | `{}` | no |
| [node\_iam\_role\_use\_name\_prefix](#input\_node\_iam\_role\_use\_name\_prefix) | Determines whether the Node IAM role name (`node_iam_role_name`) is used as a prefix | `bool` | `true` | no |
+| [queue\_enforce\_tls\_messages](#input\_queue\_enforce\_tls\_messages) | Enforces TLS messaging on the SQS queue | `bool` | `false` | no |
| [queue\_kms\_data\_key\_reuse\_period\_seconds](#input\_queue\_kms\_data\_key\_reuse\_period\_seconds) | The length of time, in seconds, for which Amazon SQS can reuse a data key to encrypt or decrypt messages before calling AWS KMS again | `number` | `null` | no |
| [queue\_kms\_master\_key\_id](#input\_queue\_kms\_master\_key\_id) | The ID of an AWS-managed customer master key (CMK) for Amazon SQS or a custom CMK | `string` | `null` | no |
| [queue\_managed\_sse\_enabled](#input\_queue\_managed\_sse\_enabled) | Boolean to enable server-side encryption (SSE) of message content with SQS-owned encryption keys | `bool` | `true` | no |
diff --git a/modules/karpenter/main.tf b/modules/karpenter/main.tf
index d03dfa49f8..39bc7ecdf8 100644
--- a/modules/karpenter/main.tf
+++ b/modules/karpenter/main.tf
@@ -188,6 +188,31 @@ data "aws_iam_policy_document" "queue" {
]
}
}
+ dynamic "statement" {
+ for_each = var.queue_enforce_tls_messages ? [1] : []
+ content {
+ sid = "DenyNonTLS"
+ effect = "Deny"
+ actions = [
+ "sqs:SendMessage",
+ "sqs:ReceiveMessage"
+ ]
+ resources = [aws_sqs_queue.this[0].arn]
+ condition {
+ test = "Bool"
+ variable = "aws:SecureTransport"
+ values = [
+ "false"
+ ]
+ }
+ principals {
+ type = "*"
+ identifiers = [
+ "*"
+ ]
+ }
+ }
+ }
}
resource "aws_sqs_queue_policy" "this" {
diff --git a/modules/karpenter/variables.tf b/modules/karpenter/variables.tf
index 71b2cbdf38..daeeec9893 100644
--- a/modules/karpenter/variables.tf
+++ b/modules/karpenter/variables.tf
@@ -207,6 +207,12 @@ variable "queue_kms_data_key_reuse_period_seconds" {
default = null
}
+variable "queue_enforce_tls_messages" {
+ description = "Enforces TLS messaging on the SQS queue"
+ type = bool
+ default = false
+}
+
################################################################################
# Node IAM Role
################################################################################