您可以创建新资源以获得ELB SSL策略,以便您可以自定义所需的任何协议和密码。但是,我希望使用亚马逊设置的预定义安全策略
TLS-1-1-2017-01
或TLS-1-2-2017-01
。
https://www.terraform.io/docs/providers/aws/r/lb_ssl_negotiation_policy.html
有没有办法使用预定义的策略而不是设置新的自定义策略?
答案 0 :(得分:1)
为了获得柯克兰(Kirkland)的答案,为了后代,如果不需要任何其他策略类型,可以使用aws_lb_ssl_negotation_policy
做同样的事情:
resource "aws_lb_ssl_negotiation_policy" "my-elb-ssl-policy" {
name = "my-elb-ssl-policy"
load_balancer = "${aws_elb.my-elb.id}"
lb_port = 443
attribute {
name = "Reference-Security-Policy"
value = "ELBSecurityPolicy-TLS-1-2-2017-01"
}
}
答案 1 :(得分:0)
是的,你可以定义它。默认安全策略ELBSecurityPolicy-2016-08
已涵盖您要求的所有ssl协议。
其次,Protocol-TLSv1.2
涵盖了您要求的两项政策(TLS-1-1-2017-01或TLS-1-2-2017-01)。
(http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-security-policy-table.html)
因此,请确保使用以下代码启用它:
resource "aws_lb_ssl_negotiation_policy" "foo" {
...
attribute {
name = "Protocol-TLSv1.2"
value = "true"
}
}
答案 2 :(得分:0)
为解决同一问题,我在这里遇到了以下代码段:https://github.com/terraform-providers/terraform-provider-aws/issues/822#issuecomment-311448488
基本上,您需要创建两个资源,aws_load_balancer_policy
和aws_load_balancer_listener_policy
。在aws_load_balancer_policy
中,将policy_attribute
设置为引用预定义的安全策略,然后将侦听器策略设置为引用该aws_load_balancer_policy。
我在terraform AWS文档中添加了一个Pull Request,以便在此处使其更加明确,但这是示例片段:
resource "aws_load_balancer_policy" "listener_policy-tls-1-1" {
load_balancer_name = "${aws_elb.elb.name}"
policy_name = "elb-tls-1-1"
policy_type_name = "SSLNegotiationPolicyType"
policy_attribute {
name = "Reference-Security-Policy"
value = "ELBSecurityPolicy-TLS-1-1-2017-01"
}
}
resource "aws_load_balancer_listener_policy" "ssl_policy" {
load_balancer_name = "${aws_elb.elb.name}"
load_balancer_port = 443
policy_names = [
"${aws_load_balancer_policy.listener_policy-tls-1-1.policy_name}",
]
}
乍一看,这似乎是基于预定义的安全策略创建自定义策略,但是当您查看AWS控制台中创建的内容时,您会发现它实际上只是选择了适当的预定义安全策略