DEVELOPER’s BLOG
技術ブログ
シンプルな非機能要件に対して、過剰なAWSサービスを採用していませんか? 〜AWS Network Firewall編〜
はじめに
AWSでは、あらゆるユースケースを支える豊富なサービス群が提供されています。 しかし、その選択肢の多さゆえに「本当に必要な要件以上のサービスを導入してしまう」ケースも少なくありません。
特に、非機能要件に対して、必要以上に複雑な構成を採用してしまうと、以下のようなデメリットにつながることがあります。
- AWSコストの増大
- 運用負荷の上昇
- トラブルシューティングの難化
本記事では、過剰設計の一例を通して、コスト最適化やシンプルな設計の重要性を考えます。
シナリオ:ネットワーク制御要件を満たすための設計
想定要件
あるシステムで、次のような非機能要件が挙がったとします。
- 「WebサーバからのみDBサーバに接続を許可したい」
- 「SSH接続を特定のグローバルIPアドレスからのみ許可したい」
この要件は非常に一般的です。しかし、このようなシンプルなネットワーク制御要件に対して、意図せず次のような構成を取っていないでしょうか?
過剰な構成の例
- とりあえずAWS Network Firewallを導入
図1
一見「セキュリティを強化した構成」に見えますが、実際には Security Groupだけで十分なケースも多く存在します。
適材適所の判断をする
Security Group で十分なケース
- 同一VPC内のAWSサービス間通信制御
- L3/L4(ネットワーク/トランスポート層)レベルのアクセス制御
図2
これらはステートフルな通信制御が可能な Security Group で実現可能です。 設定も容易で、コストも追加料金なしです。
AWS Network Firewall が必要なケース
一方、AWS Network Firewall が適しているのは次のようなケースです。
- L3/L4(ネットワーク/トランスポート層)レベルからL7(アプリケーション層)レベルまでのアクセス制御が必要
- ステートフルだけではなくステートレス制御も必要
- 高度なネットワークトラフィックの検査・分析が必要
※以下はAWS Network Firewallを導入する大まかなイメージです。
これらは単純なSecurity Groupでは対応が難しい要件です。 AWS Network Firewallの導入は、こうした明確な理由がある場合に初めてコストに見合った効果を発揮します。
コスト最適化の視点
AWS Network Firewallは強力なサービスですが、利用するたびにオンデマンド料金が発生します。1つのVPCにデプロイしただけでも、Firewall Endpoints利用料金が継続的に発生します。
単に「セキュリティを強化したいから」といった曖昧な理由で導入してしまうと、月額数万円〜数十万円規模のコストが恒常的に発生するケースもあります。
さらに、アクセス数が多いかつ大きなデータを扱うシステムの場合には、データ処理料金も月額数万円規模で発生する可能性があります。
シンプル設計を意識する
非機能要件に対しては、まず最小限の構成で実現可能かを検討することが重要です。Security Groupで要件を満たせるのであれば、まずはそこから始めてみましょう。
まとめ
- 非機能要件に対して、本当にそのAWSサービスが必要かを見直す
- Security Groupなどの無料で提供される基本機能を活用する
- AWS Network Firewallなどの高機能サービスは明確な根拠がある場合に導入する
- コスト最適化は設計段階から意識する
AWSの設計に「正解」はありませんが、「なぜその構成にしたのか」を説明できることが、アーキテクトとして最も重要なスキルです。
