AWS Elastic Beanstalk環境にセキュリティパッチを当てる

2015.07.17

OpenSSLのパッチを当てること

つい先日、OpenSSLに緊急セキュリティパッチが当たりました。 こちらのブログ記事でも話に挙がっています。 それ自体はたいして珍しいことではありません。 そのパッチをEB環境に当てる際にどうするかを考えたので共有したいと思います。

当て方自体は簡単です。 「yum update openssl」で、基本的に最新のパッケージにアップデートされるので、緊急性の高いバグレポートがあがったら割と早くパッケージもアップデートされます。 が、この時に、弊社ではバッドノウハウを受けた設定の変更を行っております。 ・Amazon EC2(Linux)システム管理で知らないとハマる5つの環境設定

わかりやすく言うと、「security updateを自動で行わないように設定している」のです。 従来の設定であれば、EBでのインスタンス立ち上げの度にセキュリティアップデートを行うのですが、行いません。 そのため、当てたいセキュリティだけアップデートしなければなりません。

イマイチなカスタムAMIの作成

1つ目に考えられるのが、今適用しているEBのAMIに、セキュリティパッチだけを当てたカスタムAMIとして作り、それを次回立ち上げ時に反映させるという方法です。

EB設定のConfiguration > Instances > Server > Custom AMI ID のAMI IDでEC2インスタンスを立ち上げます。 この際のインスタンスタイプは不要なのでt2.microあたりで大丈夫です。 起動し終わったら、普通に以下のコマンドを打ちます。

sudo yum update openssl

ここでバージョンが新しくなることを確認して下さい。 で、このバージョンアップが終わったインスタンスを停止させて、アクション>イメージの作成を行います。 ami-xxxxxという新しいAMIが作成されたら、このIDを先ほどのCustom AMI IDに記入します。 記入して設定を保存すると、自動的にEBインスタンスの立ち上げ直しが始まります。

この処理を行うことでも、セキュリティパッチを当てることが出来ますが、毎回AMI差し替えるのも大変ですし、 本来であれば最新の状態に維持したままシステムがおかしくならないほうが本当はいいのです・・・。

ということで、別の方法で実現します。

.ebextensionsに実行コマンドを記述する

というわけで、.ebextensionsの設定で、下記ファイルの作成しました。

01_yum_update.config

commands:
01_openssl_security_update_cmd:
command: yum --releasever=latest update -y openssl

毎回インスタンスを立ち上げ直した時に更新コマンドを走らせるという方法です。 この方法を使えば、常に最新のOpenSSLのパッチを当てることが出来ます。

おわりに

実はこの方法を描いておきながら、別にもっといいプラクティスはあるんじゃないかなーと考えています。 とりあえず、今回は.ebextensionsのファイルを新たに作成することで対応しました。