【新機能】AWS Firewall Managerを使ってみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、臼田です。

今回は新しく提供が開始されたAWS Firewall Managerを触ってみたので、概要と用途・実際の操作方法をまとめてみたいと思います。

Firewall Managerとは

AWS Firewall Manager は多数のアカウントとアプリケーションにわたって中央で AWS WAF ルールを設定、管理することを容易にするセキュリティ管理サービスです。Firewall Manager をお使いいただくことで、AWS Organizations の多数のアカウントに横断的に、Application Load Balancers と Amazon CloudFront のディストリビューションに対する AWS WAF ルールを簡単にロールアウトできます。

AWS Firewall Manager | 一元的な WAF 管理 | アマゾン ウェブ サービス (AWS)

上記の通りAWS WAFを一括で設定するための機能で、多数のAWSアカウントや多数の環境でWAFを管理していて、それらの設定を集約したい場合に有効な機能です。

逆に、管理対象のAWS WAFを1つの環境でしか利用していない場合には特にメリットはありません。

Firewall Managerの料金

AWS WAFの利用と同じようにAWS Shield Advancedを契約している場合は無料で利用することが可能です。※別途Config Rulesの利用料は発生

通常の場合は1つのポリシー/リージョンあたり100 USDとなります。

料金 | AWS Firewall Manager | アマゾン ウェブ サービス (AWS)

そのため、結構な規模感で利用されることを想定している機能であると考えられます。

前提条件

Firewall Managerの利用には下記の条件があります。

  • AWS Organizations に参加する
  • AWS Firewall Manager 管理者アカウントの設定
  • AWS Config を有効にする

AWS Firewall Manager の前提条件 - AWS WAF、AWS Firewall Manager、および AWS Shield アドバンスド

今回はAWS Organizationsで組織を作成して、組織に別のAWSアカウントが所属している状態を用意します。また、AWS Configについても設定済みの状態とします。

AWS Organizationsについては下記を参照して下さい。

コマンド一発でAWSアカウントを作成する~AWS Organizationsを利用するための事前準備を添えて~

AWS Configについては下記を参照して下さい。

AWS Configはとりあえず有効にしよう

管理アカウントの設定以降は実際の画面で確認していきたいと思います。

使ってみた

最初の設定にはOrganizationsのマスターアカウントである必要があるのでマスターアカウントからアクセスします。

Firewall ManagerはマネジメントコンソールではAWS WAF/Shieldのページに含まれています。

 

アラートが出ていますが、Firewall Managerの管理者が設定されていないデフォルトの状態のためです。管理者を設定するために「Get started」を押します。

ちなみに、Organizationsのマスターアカウント以外でアクセスすると権限がなく、Get startedが表示されません。

Firewall Managerの管理者とするAWSアカウントを登録します。1つのアカウントしか選択できないようなので、通常はOrganizationsのマスターアカウントのAWSアカウントIDを入力するかと思います。「Set administrator」を押します。

念押しに確認が出てきます。もしマスターアカウント以外を管理者にした場合には、あとからマスターアカウントから変更を加えることができないのでその注意が書かれています。問題ないのでそのまま「Ste administrator」を押します。

以上でFirewall Managerの管理者の設定が完了しました。管理者アカウントからFirewall Managerの各種設定画面にアクセスできるようになります。

設定の流れは通常のAWS WAFに近いです。AWS WAFではConditionをRuleに割り当て最後にWeb AWCに割り当てましたが、Firewall ManagerではRule group内でRuleとConditionを作成してSecurity Policyに割り当てます。

設定画面で順に見ていきましょう。「Rule groups」からRuleを作成していきます。

Rule groupの説明があります。Ruleはデフォルトでは何もないので「Create rules and conditions for this rule group.」を選択して「Next」を押します。

各Conditionを作成する画面が出てきます。それぞれ通常のAWS WAFと同じものですね。Conditionの設定方法は本趣旨ではないので設定が簡単なIP matchを選択しました。

画面右からサブウインドウが現れて、これまたAWS WAFと同じconditonの設定画面が現れます。1点違うところとして、通常はリージョンを指定してcondtionを作成する所がリージョンについては選択できないようになっていました。これは、conditionではなくSecurity Policyでリージョンを指定するためだと思います。適当にconditionを設定して「Create」を押します。元のページに戻るので下部の「Next」を押します。

次にRuleを作成します。「Create rule」を押します。

Rule作成も例のごとくで、conditionと同じようにリージョンと、加えてRule typeも選択できません。AWS WAFではRule typeでrate-based Ruleが利用できたのですが、これはまだ対応していないようです。通常と同じようにRuleにconditionを追加して「Create」を押します。前の画面に戻ったら「Next」を押します。

ここで全体のまとめとしてRule groupの設定になります。名前に加えてリージョンもここで指定します。Web ACLの設定に近いですね。Rule groupを追加して「Create」を押します。

なお、2018/05/26現在Firewall Managerが対応しているのは米国東部(ノースバージニア)、米国西部(オレゴン)、Amazon CloudFrontとなっているため東京リージョンで作成することはできませんでした。

続いて作成したルールグループを適用するためにPolicyを作成します。「Security policies」から「Create policy」を押します。

Rule groupと同じように説明があるので下部にスクロールして「Create an AWS Firewall Manager policy and add existing rule groups.」とリージョンを選択して「Next」を押します。

Policyの名前を入れ作成したRule groupを追加します。Actionは先程設定したものをそのまま適用するか、Countするかを選べます。「Next」を押します。

Policyの適用範囲としてCloudFrontかALBを選択します。リージョンに合ったものしか選択できません。

「Use tags to include/exclude resources (optional)」にチェックを入れると全てに適用しないで特定のタグの有無で適用するかを選べます。チェックがない場合には全体的に適用します。タグはIncludeで特定のタグがある場合に適用する、もしくはExcludeで特定のタグがある場合に適用しないように設定でき、タグは複数登録できますがIncludeとExcludeを併用することはできないようです。

作成したPolicyをすぐに適用するかどうかを選択して「Next」を押します。

確認画面が出るので「Create」で作成します。

作成すると、Organizationsで管理しているアカウントに順次展開していきます。

AWS WAFの画面から適用されていることを確認してみます。

Web ACLを確認すると「FMManagedWebACL[firewall policyのID]」というACLが作成されていて、作成したRuleが適用され、リソースとしてALBが含まれていることが確認できました。

しばらくした後、子アカウントの方でも適用されていることを確認できました。

まとめ

AWS Firewall Managerから一括してAWS WAFの設定を入れることができました。アカウントがたくさん増えてくると一つ一つ管理することは難しいので、大規模にAWSアカウントを管理している場合には便利だと思います。

タグベースで複数のポリシーを使い分けることも出来るので、便利に利用できると思います。