1

我在 Cloudformation ELB Policies 属性下指定的策略在部署后未启用。我必须手动启用它,然后旧的默认策略才生效。如何自动启用 Cloudformation 中指定的 ELB Cipher 策略?

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb-policy.html

Policies:
    - PolicyName: My-SSLNegotiation-Policy
      PolicyType: SSLNegotiationPolicyType
      Attributes:
      - Name: Reference-Security-Policy
        Value: ELBSecurityPolicy-TLS-1-2-2017-01

在 AWS 控制台上,它仍然显示预定义的策略作为ELBSecurityPolicy-2016-08默认策略

然后我不得不使用下面的 cli 手动启用它,然后它显示预定义的策略为ELBSecurityPolicy-TLS-1-2-2017-01

aws elb set-load-balancer-policies-of-listener --load-balancer-name auhuman-ELB-qwertyuiop --load-balancer-port 443 --policy-names Auhuman-ELBSecurityPolicy-TLS-1-2-2017-01 --region us-east-1
4

1 回答 1

1

这种策略定义风格与经典 EC2 负载均衡器相关联。如果可能,您应该改用V2 应用程序负载均衡器。经典 ELB 的唯一用例是,如果您的经典 EC2 实例不在 VPC 中……您应该考虑这些实例的迁移策略。

假设您可以使用 V2 ALB,您可以使用SslPolicy侦听器上的属性来声明您的策略,例如:

LoadBalancerSecureListener:
  Type: AWS::ElasticLoadBalancingV2::Listener
  Properties:
    LoadBalancerArn: !Ref LoadBalancer
    Protocol: HTTPS
    Port: 443
    Certificates:
      - CertificateArn: !Ref ACSCertificate
    SslPolicy: ELBSecurityPolicy-TLS-1-2-2017-01
    DefaultActions:
      - Type: forward
        TargetGroupArn: !Ref DefaultTargetGroup

当然,您需要根据您的情况替换适当的参考资料。

如果您绝对必须使用经典 ELB,则需要通过将PolicyNames属性添加到侦听器配置来将策略名称与侦听器相关联,如下所示:

 Loadbal:
    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
    Properties:
      Subnets:
        - !Ref subnet1
        - !Ref subnet2
      Listeners:
        - InstancePort: 80
          LoadBalancerPort: 443
          Protocol: HTTPS
          SSLCertificateId: >-
            !Ref ACSCertificate
          PolicyNames:
            - My-SSLNegotiation-Policy
      Policies:
        - PolicyName: My-SSLNegotiation-Policy
          PolicyType: SSLNegotiationPolicyType
          Attributes:
            - Name: Reference-Security-Policy
              Value: ELBSecurityPolicy-TLS-1-2-2017-01
于 2021-09-08T23:25:59.217 回答