この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
こんにちは、こんばんは、おはようございます。
江島です。
今回は、MultiAZ の高可用性サイト構築の際に理解が不十分でした、セキュリティグループ についてハンズオン検証を用いて理解を深めたいと思います。
構成図とやりたいこと
今回検証したいことは、可用性のある multiAZ構成 の中に、検証用の EC2インスタンス を追加で作成し、 ALB 用のセキュリティグループ を検証用 EC2インスタンス にアタッチすることで、http通信ができることを確認。
また、その後 ALB用のセキュリティグループ をデタッチしhttp通信ができることを確認することで、セキュリティグループ がしていることを検証いたします。
セキュリティグループとは
概要
検証環境構築の流れ
※使用するサービス
EC2、ALB、SG
-
リージョン:東京リージョン
-
VPC:検証用に1つ作成
-
AZ:高可用性サイト作成のため2か所使用
-
SG: 3つ作成。EC2用、ALB用、検証用
-
EC2インスタンス:AZa とAZb のパブリックサブネットに作成し、検証用インスタンスを別に一台作成
-
ALB: TG を EC2a の パブリックサブネット と EC2b の パブリックサブネット を指定
※ 以上のうち、EC2 とALB に関しては、長くなってしまうので構築に関しては省略いたします。
1.VPC作成
以下の項目に従って、作成していきましょう。
設定項目 | 設定値 | 理由 |
---|---|---|
名前 | ejima-test-vpc | 入力は任意 |
IPv4 CIDRブロック | 10.0.0.0/16 | |
IPv6 CIDRブロック | なし | 今回は使用しない |
テナンシー | デフォルト | 占有するオプションはありません |
AZの数 | 2 | multiAZ構成のため |
パブリックサブネットの数 | 2 | 各AZに1つ |
プライベートサブネット | 0 | 今回は利用しない |
NATゲートウェイ | なし | 今回は利用しない |
VPCエンドポイント | S3ゲートウェイ | VPCがS3に直接アクセスすることで、料金を削減し、セキュリティを向上させるのに役立ちます。 |
DNS解決 | 有効 | |
DNSホスト名 | 有効 | |
タグ | キー:User ,値:ejima | 入力は任意 |
全てのリソースを作成するときにいえることですが、
タグ付けは、管理(更新、削除、他リソースにアタッチ等)を行うときに必要なので、必ずわかりやすい名前を付けておきましょう。
また、作成前は項目ごとに確認をしましょう。
これで VPC 作成完了です。
今回は、VPC に付随するサービスの一部(インターネットゲートウェイ、ルートテーブル)は、自動的に作成してもらっています。
別々に作ることももちろんできますので、ハンズオンをしっかり勉強したい方は、1から作ってみてください。
2.セキュリティグループ作成
次に今回のテーマのセキュリティグループを作成していきます。
事前準備項目に記述したように、EC2用、ALB用、検証用の3つ作成していきます。
名前 | インバウンドルール | インバウンドソース |
---|---|---|
ejima-blog-ALB-SG | ①HTTPS ②http | ①0.0.0.0/0 ②0.0.0.0/0 |
ejima-blog-EC2 | ①HTTP ②SSH | ①ejima-blog-ALB-SG ②MYIP |
ejima-test-sg | ssh | MYIP |
①インバウンドルールとは
指定した通信プロトコルによる通信を許可するもの
②インバウンドソースとは
どこからの通信を許可するかを指定するもの
注意点として、拒否設定はできません。受け入れる通信のみを設定できます。
検証開始
それでは、検証を開始していきますので、
1. Visual Studio Codeで EC2 に ssh接続
Visual Studio Codeで EC2 に ssh接続します。
コマンドは、
ssh -i ec2-user@[EC2のパブリックアドレス] -v
上の画面が表示されたら、 ssh接続成功 です。
2. Apache のインストール
次に、Apache をインストールしていきます。
インストールコマンド
Complete!と表示されれば完了です。
Apache を起動し、起動の確認をします。
以上と同様の手順で、残り2台のインスタンスも Apache を起動させてください。
3. 検証用EC2インスタンスに、ALB用のセキュリティグループ をアタッチ
4. 各EC2にhttp接続が成功するか確認
EC2a と ECb に、
curl -Ss -I -v http://EC2のプライベートアドレス/
で接続をしてみる。
接続が成功することを確認
無事http接続が成功していることを確認できました。
5. 検証用EC2インスタンス から、ALBのセキュリティグループをデタッチ
6. デタッチされた検証用インスタンスでもう一度
先ほどと同様のコマンド
curl -Ss -I -v http://EC2のプライベートアドレス/
で接続をしてみる。
接続が失敗することを確認
以上でセキュリティグループの検証が完了しました。
まとめ
今回、ALBのセキュリティグループ からの http に よるインバウンド通信 を許可していたことで、検証用インスタンスからの http通信 が成功しました。
それにより、通信はサービス同士ではなく、セキュリティグループを通して通信をしていることを改めて確認できました。
最後まで読んでくださりありがとうございました。