For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/security/code_security/iac_security/iac_rules/cloudformation-aws-elb-without-secure-protocol.md.
A documentation index is available at /llms.txt.
Listeners on Classic Elastic Load Balancers must use encrypted protocols to protect data in transit. Listeners configured with plaintext protocols (for example, HTTP or TCP) can expose sensitive information and allow interception or tampering.
For AWS::ElasticLoadBalancing::LoadBalancer resources, this rule checks each entry in Properties.Listeners and requires the Protocol and InstanceProtocol fields (when present) to be set to SSL or HTTPS. Resources missing these properties or with Protocol/InstanceProtocol set to values like HTTP or TCP will be flagged as insecure.
#this code is a correct code for which the query should not find any resultResources:MyLoadBalancer1:Type:AWS::ElasticLoadBalancing::LoadBalancerProperties:AvailabilityZones:- "us-east-2a"CrossZone:trueListeners:- InstancePort:'80'InstanceProtocol:HTTPSLoadBalancerPort:'443'Protocol:HTTPSPolicyNames:- My-SSLNegotiation-PolicySSLCertificateId:arn:aws:iam::123456789012:server-certificate/my-server-certificateHealthCheck:Target:HTTP:80/HealthyThreshold:'2'UnhealthyThreshold:'3'Interval:'10'Timeout:'5'Policies:- PolicyName:My-SSLNegotiation-PolicyPolicyType:SSLNegotiationPolicyTypeAttributes:- Name:Reference-Security-PolicyValue:ELBSecurityPolicy-TLS-1-2-2017-01
#this code is a correct code for which the query should not find any resultResources:MyLoadBalancer2:Type:AWS::ElasticLoadBalancing::LoadBalancerProperties:AvailabilityZones:- "us-east-2a"CrossZone:trueListeners:- InstancePort:'9443'InstanceProtocol:SSLLoadBalancerPort:'443'Protocol:SSLPolicyNames:- My-SSLNegotiation-PolicySSLCertificateId:arn:aws:iam::123456789012:server-certificate/my-server-certificatePolicies:- PolicyName:My-SSLNegotiation-PolicyPolicyType:SSLNegotiationPolicyTypeAttributes:- Name:Reference-Security-PolicyValue:ELBSecurityPolicy-TLS-1-2-2017-01
Non-Compliant Code Examples
#this is a problematic code where the query should report a result(s)Resources:MyLoadBalancer:Type:AWS::ElasticLoadBalancing::LoadBalancerProperties:AvailabilityZones:- "us-east-2a"CrossZone:trueListeners:- LoadBalancerPort:'443'InstancePort:'80'InstanceProtocol:HTTPProtocol:HTTPPolicyNames:- My-SSLNegotiation-PolicySSLCertificateId:arn:aws:iam::123456789012:server-certificate/my-server-certificateHealthCheck:Target:HTTP:80/HealthyThreshold:'2'UnhealthyThreshold:'3'Interval:'10'Timeout:'5'Policies:- PolicyName:My-SSLNegotiation-PolicyPolicyType:SSLNegotiationPolicyTypeAttributes:- Name:Reference-Security-PolicyValue:ELBSecurityPolicy-TLS-1-2-2017-01