AWSにはEC2インスタンス単位で設定出来るファイアーウォール機能としてセキュリティグループを利用することが出来ます。
本記事では、AWSのセキュリティグループについての基本的な情報から実際の設定方法までご紹介していきます。
目次
AWSのセキュリティグループとは
AWSのセキュリティグループは、EC2インスタンスの仮想ファイアーウォールとして提供されるAWSの標準機能です。
機能概要
セキュリティグループは仮想ファイアーウォールとして、インバウンドルールとアウトバウンドルールにより受信トラフィックと送信トラフィックを制御する役割があります。
EC2インスタンス起動時に1つ以上のセキュリティグループを設定することが可能で、もし設定しなかった場合デフォルトのセキュリティグループが自動的に割り当てられます。
このセキュリティグループはサブネットレベルではなく、インスタンスレベルで動作する機能です。
特徴
セキュリティグループでは、インバウンドとアウトバウンド双方の制御が出来ることから、高いセキュリティレベルを保つことが可能です。
IPアドレスやセキュリティグループ単位での通信制御が行えるため、AWS上でのやりとりはもちろん、AWS外とのやり取りに関しても制御することが出来ます。
またステートフル機能として提供されているため、インバウンドを制限している通信相手であっても、こちらからのアウトバウンドに対する返信に関しては自動で許可されるような仕組みとなっており、煩わしい設定をしなくても快適な通信制御が行えるようになっています。
AWSセキュリティグループとNetwork ACLの違い
AWSセキュリティグループを学習する上で知識として知っておいてもらいたいのが「Network ACL」と呼ばれる機能です。
これらの機能は似たようなサービスとして捉えられがちですが、全く別の機能を持っているため違いを確認しておきましょう。
ステートフルとステートレス
AWSセキュリティグループはEC2インスタンス毎にファイアーウォールを設定するステートフルな機能として提供されています。
反対にNetwork ACLはサブネットレベルでファイアーウォールを設定するステートレスな機能として提供されています。
ステートレスであるNetwork ACLでは、1つの通信で送信・受信を制御するためにはそれぞれの設定が必要です。
ホワイトリスト形式とブラックリスト形式
セキュリティグループでは、指定した通信のみを許可するホワイトリスト形式が採用されています。
一方Network ACLでは指定した通信のみを拒否するブラックリスト形式が採用されています。
そのためセキュリティグループはデフォルトの通信設定として、インバウンドは全て拒否する設定になっているのに対し、Network ACLではインバウンドの設定がデフォルトで全て許可と正反対の設定です。
AWSセキュリティグループの設定方法
ここからは実際にAWSセキュリティグループの設定方法を画面キャプチャを掲載しながらご紹介していきます。
デフォルト設定の確認
上述してきたようにセキュリティグループはEC2インスタンス毎に設定されるため、EC2のサービスコンソールから設定を行います。
AWSにログインした状態で、ヘッダーの検索窓に「EC2」と入力しサービスを選択します。
EC2インスタンスを作成していない状態でも、セキュリティグループが1つデフォルトで存在することが分かります。
左側の「ネットワーク&セキュリティ」カテゴリーから「セキュリティグループ」を選択しましょう。
セキュリティグループのページでは、既存のグループ情報の確認や編集、新規のセキュリティグループ作成が行えます。
セキュリティグループを作成
では画面右上の「セキュリティグループを作成」ボタンから新規でセキュリティグループを作成してみましょう。
セキュリティグループの作成画面では、セキュリティグループ名などの「基本情報」に加えて「インバウンドルール」と「アウトバウンドルール」「タグ(オプション)」の設定を行います。
初期状態では画像のようになっていますので、インバウンドルールの「ルールの追加」ボタンをクリックしてみましょう。
「タイプ」「プロトコル」「ポート範囲」「ソース」「説明-オプション」の設定項目が表示されます。
各種項目の意味合いについては「情報」リンクをクリックすることでヘルプが表示されます。
インバウンドルールを追加する場合、ソースの部分は必須入力項目です。
今回はサンプルですので、特にインバウンドルールを追加しただけで、デフォルトの状態から変更せず画面下部の「セキュリティグループを作成」ボタンをクリックします。
画面が切り替わり、設定した内容でセキュリティグループが作成されていることを確認出来ます。
インスタンスにセキュリティグループを適用
セキュリティグループが作成出来たら新しいEC2インスタンスを作成して実際に適用してみましょう。
EC2ダッシュボードから「インスタンス」カテゴリを選択し、「インスタンスを起動」ボタンをクリックします。
マシンイメージの選択でお好きなOSのタイプを選択します。
インスタンスタイプの選択画面が表示されますが、ここからのステップはサンプルではデフォルトで良いので画面上部の「6.セキュリティグループの設定」リンクをクリックします。
「既存のセキュリティグループを選択する」のラジオボタンを選択すると、先程作成したセキュリティグループとデフォルトの2種類が適用出来ることをご確認頂けます。
また「新しいセキュリティグループを作成する」を選択すると、この画面からも新規でセキュリティグループの作成を行うことも可能です。
設定後「確認と作成」ボタンをクリックすることで、セキュリティグループが設定された状態でEC2インスタンスを作成することが出来ます。
確認画面で設定内容をチェックし、問題なければ「起動」ボタンをクリックします。
インスタンスに安全に接続するため、キーペアの選択を促すポップアップが表示されます。
キーペアがない場合には、ここで「新しいキーペアの作成」をリストから選択しておきましょう。
「キーペアの種類」と「キーペア名」を入力し、「キーペアのダウンロード」を実行することで、「インスタンスの作成」ボタンがクリック出来るようになります。
インスタンスを作成中の画面が表示されるので、しばらく時間をおいてインスタンスが起動していることを確認できれば完了です。
インスタンスが作成出来ると、EC2ダッシュボードの一覧に表示されるようになり、これで任意のセキュリティグループを設定したインスタンスが起動出来たことになります。
さいごに: AWSのセキュリティグループ機能を利用して安全にシステムを運用しよう
本記事では、AWSの提供する機能「セキュリティグループ」について解説しながら、実際のEC2インスタンスへの設定方法までご紹介してきました。
EC2インスタンスをご利用の方で、デフォルトのセキュリティグループしか利用したことがないという方も多いかと思いますが、ご自身のシステム運用環境に合わせてセキュリティグループの設定は実施しておくべきです。
安全なアプリケーション運用のためにも、セキュリティグループ機能を活用した上でAWSでのサービス運用を行いましょう。
セキュリティグループとNetwork ACLの両方を設定している場合、どちらの設定でも許可されていないと通信が拒否されてしまうので意識しておきましょう。