はじめに
もうClassicLoadBalancerを利用しているところは多くはないと思います。あっても数台だけとか。
さらにSecurityPolicyの変更なんて管理コンソールでちょこっといじれば終了でしょう。
でも、aws-cliで変更してみました。
設定
今回は、ポリシーの「確認 → 作成 → 設定」という流れで行います。
ポリシーの確認
現在利用できるポリシーは aws elb describe-load-balancer-policies
で確認ができます。
$ aws elb describe-load-balancer-policies --load-balancer-name <CLBの名前> | grep "PolicyName"
"PolicyName": "AWSConsole-SSLNegotiationPolicy-<CLBの名前>-1234567890123",
"PolicyName": "ELBSecurityPolicy-2016-08",
"PolicyName": "AWSConsole-SSLNegotiationPolicy-<CLBの名前>-1234567890123",
"PolicyName": "AWSConsole-SSLNegotiationPolicy-<CLBの名前>-1234567890123",
"PolicyName": "AWSConsole-SSLNegotiationPolicy-<CLBの名前>-1234567890123",
"PolicyName": "AWSConsole-SSLNegotiationPolicy-<CLBの名前>-1234567890123",
ポリシーの作成
それでは ELBSecurityPolicy-TLS-1-2-2017-01 の SecurityPolicy を作成します。
作成は aws elb create-load-balancer-policy
で行います。
$ aws elb create-load-balancer-policy --load-balancer-name <CLBの名前> --policy-name TLS-1-2-2017-01 --policy-type-name SSLNegotiationPolicyType --policy-attributes AttributeName=Reference-Security-Policy,AttributeValue="${TLS}"
今回は --policy-name の値を、TLS-1-2-2017-01 にしています。 先ほどの、describe-load-balancer-policies
では "ELBSecurityPolicy-" がついていましたが、コマンドで作成する際は "ELBSample-" と "ELBSecurityPolicy-" は予約語となっていて付けられないためです。
$ aws elb create-load-balancer-policy --load-balancer-name <CLBの名前> --policy-name ELBSecurityPolicy-TLS-1-2-2017-01 --policy-type-name SSLNegotiationPolicyType --policy-attributes AttributeName=Reference-Security-Policy,AttributeValue="ELBSecurityPolicy-TLS-1-2-2017-01"
An error occurred (ValidationError) when calling the CreateLoadBalancerPolicy operation: Prefixes '[ELBSample-, ELBSecurityPolicy-]' are reserved.
ポリシーの設定
作成が完了したら作成した "<セキュリティポリシーの名前>" を指定して設定変更です。
設定は aws elb set-load-balancer-policies-of-listener
で行います。
$ aws elb set-load-balancer-policies-of-listener --load-balancer-name <CLBの名前> --load-balancer-port 443 --policy-names <セキュリティポリシーの名前>
おわりに
管理コンソールからだとポリシーを指定するだけで切り替えられるのですが、cliだとまずはポリシーを作成してから切り替えないと行けないというのが注意点です。台数がなければCLBは管理コンソールから切り替えてしまった方が早そうですねw