[レポート]AWSとIaCを使用して大規模なネットワークセキュリティインフラストラクチャを管理 #AWSreInvent #SEC311

Terraformを利用して大規模環境におけるAWS Network Firewallの構築管理をIaCするコードトークのセッションレポートです。非常によき
2023.11.29

こんにちは、臼田です。

みなさん、re:Invent 2023楽しんでますか?(挨拶

今回は下記のセッションのレポートです。カテゴリはコードトークなので、本編はほとんどコーディングとその解説です!良い感じ

SEC311 | Manage network security infrastructure at scale with AWS and IaC

For organizations managing workloads on AWS, traffic inspection is key to enforcing the network security of your infrastructure. When you have hundreds of VPCs across multiple AWS Regions, this task gets challenging. Centralizing traffic inspection with AWS Network Firewall and AWS Transit Gateway can help define a scalable hub-and-spoke architecture for each Region. In this code talk, learn about best practices for infrastructure management on AWS and build this hub-and-spoke architecture. Include central inspection using infrastructure as code (with Terraform) and discover how you can make network security management easier when deploying new workloads in your environment.

SEC311 | AWS と IaC を使用して大規模なネットワーク セキュリティ インフラストラクチャを管理

AWS でワークロードを管理している組織にとって、トラフィック検査はインフラストラクチャのネットワーク セキュリティを強化するための鍵となります。 複数の AWS リージョンにまたがって何百もの VPC がある場合、このタスクは困難になります。 AWS Network Firewall と AWS Transit Gateway を使用してトラフィック検査を一元化すると、各リージョンのスケーラブルなハブアンドスポーク アーキテクチャを定義できます。 このコード トークでは、AWS でのインフラストラクチャ管理のベスト プラクティスについて学び、このハブアンドスポーク アーキテクチャを構築します。 コードとしてのインフラストラクチャ (Terraform を使用) を使用した集中検査を組み込み、環境に新しいワークロードをデプロイするときにネットワーク セキュリティ管理を容易にする方法を発見します。

要約

大規模なAWS環境ではセキュリティを全体に適用していくのも大変で、例えばVPCのネットワークをAWS Network Firewallを利用して保護していく場合でも、アーキテクチャレベルでは中央集権の仕組みを検討できても、それを実装するのはもう一段階検討が必要でしょう。

このセッションでは、すでにGitHubで公開されているソースを使いながら、実際にTerraformでコーディングして環境をデプロイしていき、アーキテクチャとコードを一緒に学ぶことができます。

実際に現地ではコーディングに関する様々な質問にもライブで回答していました。以下のレポートで興味を持った方は、詳細を動画で確認いただくといいでしょう。(公開されたら)

レポート

このセッションはSEC311 Manage network security infrastructure at scale with AWS and IaC(AWSとIaCを使用して大規模なネットワークセキュリティインフラストラクチャを管理)です。なぜコードトークなのにスライドを利用するのかって?前提条件やゴールを明確にしてコーディングを理解しやすくするためです。

アジェンダは以下の通り。

  • 前提の課題
  • 構築するアーキテクチャ
  • Terraformでコーティング
  • まとめ

今回対象とする課題は多数のVPC、多数のAWSアカウントが存在する組織でのものです。

AWSのベストプラクティスでは、VPCやAWSアカウントを分離することで被爆半径(Blast Radius)が抑えられるため、プロジェクトが増えるたびにたくさん環境が増えていきます。この中で、ネットワークの保護をAWS Network Firewallを利用して行うとすると、非中央集権的な構成では管理が煩雑になります。環境毎に適切に構築できているか管理したり、新規の環境が増えるたびに構築していく必要があります。

今回はこの課題を解決するために、中央集権的にネットワークトラフィックをAWS Transit Gatewayで集め、一括してAWS Network Firewallを適用します。加えて、これをIaCで管理します。いわゆるハブアンドスポークの構成ですね。

1からIaCするのは大変ですよね?しかし今回はすでにコードがGitHubに公開されています。これを使ってTerraformで構築していきます。

大きく以下の4つのステップで進めます。

  • ステップ 1: セキュリティアカウントのリソースをデプロイする
  • ステップ 2: ネットワーキングアカウントのリソースをデプロイする
  • ステップ 3: スポークアカウントのリソースをデプロイする
  • ステップ 4: ネットワークアカウントでのスポークVPCアタッチメントルーティングの作成

やっていくことの詳細はこちらにもありますが、動画を見ていただくのが一番手っ取り早いでしょう。

上記はtfファイルを記述した後applyしている様子です。この間に様々なQAを受け付けていました。

コードに関するものから、なぜTerraformなのかとか、VS Codeのプラグインで入っているCodeWhispererはなぜ停止させているのか、といったちょっとした質問までいろいろ話しながら進行していました。(もちろんライブデモのためですね)

上記はAWS Secrets Managerを使って接続情報を管理しているという文脈から、そのIAMがどの様になっているか説明している場面です。通常サンプルコードだけある状況だと、そのコンテキストを理解するまでに時間がかかりますが、実際にライブコーディングしながらこういうコンテキストを解説してくれると一気に理解が深まりますね。

最後のまとめは以下のとおりです。

  • サービス (トラフィックの出力や検査など) を一元化することで、コストが最適化された環境を維持しながら、マルチアカウント環境での管理と制御が簡素化されます。
  • AWS Secrets Manager は、AWS アカウントの「接続」(アカウント間での情報の共有) に役立ちます。
  • コード (Terraform モジュール、AWS CloudFormation StackSets、AWS CDK コンストラクト) を再利用して、大規模なインフラストラクチャ管理を簡素化します。
  • AWS Firewall Manager は、中央のセキュリティ アカウントから AWS ネットワーク ファイアウォールのリソースとセキュリティ グループを管理するのにも役立ちます。

まとめ

コードトーク、めっちゃいいですね!

ただサンプルコードだけあると、いいなーと思ってもすぐに着手するのは難しいです。しかし、実際に「こう使うんだよ」って示してもらえると一気に理解が深まって進めることができますね。

とにかく、詳しくは動画をみてくれ!