VPC内ELBでアクセス制御
こんばんは。
実は久しぶりに料理をしました、さぼってました。誰とも無くごめんなさい。
さて、今日は「ELBでアクセス制御」をしたいと思い確認してみました。
ggってみると
こんなのがあって"X_Forworded"なんちゃらって私にはハードルが高い。
http://dev.classmethod.jp/cloud/elb-ssl-termination-access-handling/
http://blog.cloudpack.jp/2011/06/aws-news-elb-access-limit.html
VPCならELBにもSecurityGroup設定できるしうまいことできるんじゃないかなーと思って確認してみました。
まずAWS Management Consoleから「Create ELB」をクリックします。
下記画面が表示されるので先に作成しておいたVPCを選択し、必要に応じてアクセスプロトコルを指定します。
次に、「Continue」を押していくと下記のような画面が表示されます。
ELBを作成するSubnetを選択します。ELBは自動的にスケーリングするのでできる限りELB専用のSubnetを用意した方が良い(らしい)です。
「Continue」を押すと次にELBに設定するSecurityGroupの設定画面が表示されます。
新しくSecurityGroupを作成する場合は「Create a new Security Group」を選択し、アクセス制限情報をルールとして追加します。
今回はで今私が利用している環境からだけHTTPアクセスできるか検証したいので下記のようにルールを追加しました。
「Continue」を押すと次にELBの配下に置くinstanceを選択する画面に遷移します。
ELBの配下に置いた状態でinstanceをstopしたりstartしたりすると中の方が激怒するらしいので、きちんと「running」状態のinstanceを選択します。
ELBと配下のinstanceがactiveになるまでにはちょっと時間がかかるみたいなのでビールを飲みながら気長に待ちます。焦りません。
ロードバランサを購入するということを考えれば5分なんてあっという間です。
あれ、とはいえいつまで経ってもhealth checkがOKになりません...。
Σ(*゚д゚*)ハッ!!
EC2 instanceのSecurity GroupにELBからのアクセスを通していませんでした。
EC2 instanceにあてているSecurity GroupにELBからアクセスできるようルールを追加します。
"sg"と入力するとSecurity Groupがプルダウンで表示されるのでそこからELBのSecurity Groupを選択します。
さぁもう大丈夫でしょう...
つながりません。"Out of Service"のままです。
Σ(*゚д゚*)ハッ!!
そもそもHealth Check用のページを用意していませんでした!!
今回はデフォルトのまま「index.html」をHealth Check先にしていたので、ドキュメントルート直下にindex.htmlファイルを作成しました。
やっとStatusも"In Service"となり一安心。
では、ELBが発行するPublic DNSに対してアクセスしてみます。
DNSはここで確認できます。
きちんとアクセスできました(๑´ω`ノノ゙✧
いえ、これだけでは検証は終わりません。本当にアクセス制御ができているか確認します。
まず、接続元IPアドレスを変更したいので違うwifi-spotに変更しました。
googleさんがぐるぐるぐるぐる頑張りますが、下記の通りアクセスできません!
検証成功ヾ(*´∀`*)ノ
ついでなのでEC2 instanceに直接HTTPアクセスしてもアクセスできないかも確認してみました。
現在、上記の通り、EC2のSecurity GroupではSSHはオープンですが、HTTPアクセスはELB経由のみ、に制限しています。
検証のためEC2にEIPを割りあて、アクセスしてみました。
ブラウザにIPアドレスを直接入力してみますが、、つながりません。よくできています。
試しにEC2のSecurity Groupをしぼらずにアクセスしてみました。
ルールを変更
ブラウザでアクセス
もちろんですがきちんとアクセスできます。
ELBでアクセス制御ができるととても便利ですね。VPCが無かったときはすごい困った覚えがあります・・。
では、本日はこのぐらいで終わりです。