ネットワークアクセスコントロールリスト (ACL)

ネットワークACLとは?

ネットワークアクセスコントロールリスト(ACL)は、以下のようにサブネット単位で適用され、特定の通信(インバウンドまたはアウトバウンド)を許可または拒否するルールを設定できます。デフォルトでは全ての通信を許可されてます。

セキュリティグループとネットワークACLの違い

項目セキュリティグループネットワークACL
適用範囲インスタンス単位サブネット単位
通信の状態ステートフル(戻りの通信は自動許可)ステートレス(戻りの通信も明示的に許可が必要)
ルールの適用許可ルールのみ(デフォルトで拒否)許可・拒否ルールを設定可能(デフォルトで全許可または全拒否)
評価の順序全ルールを評価し、適用可能なものを許可ルールは番号順に評価し、最初に一致したものが適用

ネットワークACLの動作を見てみる

今回はステートレスとはどのようなことなのか確認していきます。まずTest-web-1aのネットワークACLを確認します。

Test-web-1aのインスタンスIDをクリックします。


サブネットIDをクリックします。


インスタンスが配置されているサブネットが表示されるので、もう一度サブネットIDをクリックします。


このサブネットに関連付いているネットワークACLが確認できます。「ネットワークACL ID」をクリックします。


ネットワークACLの画面に遷移するので、「ネットワークACL ID」をクリックします。


現在、全てのトラフィックが許可されています。

次に「アウトバウンドルール」タブをクリックします。


「アウトバウンドルールを編集」をクリックしてルールを編集します。


今許可しているすべてのトラフィックを「削除」し、「変更を保存」をクリックします。


アウトバウンドルールではすべてのトラフィックを外に出さない設定になりました。


ブラウザからアクセスするとエラーが表示されました。


何故ACLのアウトバウンドルールを許可するのか?

クライアントPCからサーバーへHTMLを取得する際、クライアントPCの宛先はポート80ですが、送信元はエフェメラルポート(動的ポート(1024〜65535のランダムなポート))を使います。

サーバーはリクエストを受け取るとクライアントPCにHTMLを送信します。この時の宛先ポートはクライアントPCの送信元ポートになります。


ネットワークACLでアウトバウンドルールを許可しないとサーバーからクライアントPCへHTMLを送信できません。そのためネットワークACLはインバウンドルールとアウトバウンドルールの両方を明示的に許可する必要があります。セキュリティグループはステートフルな通信なので、以下のHTMLダウンロード時のような戻りの通信は許可されています。

コメント

タイトルとURLをコピーしました