マネージドプレフィックスリストにIPアドレスをあらかじめ設定、セキュリティグループで利用してみた

2020.11.12

こんにちは、コンサル部@大阪オフィスのTodaです。

外部サービスに接続するためセキュリティグループに複数のIPアドレスを許可をするようにしていますが、 もっと簡単にメンテナンスしやすくできないか考えているときに「マネージドプレフィックスリスト」を使ってみては??と助言頂きましたので実際に利用してみました。

マネージドプレフィックスリストとは?

2020年06月に利用可能になった機能で IPv4 または IPv6 アドレス範囲をあらかじめ設定しておき、セキュリティグループのルールやサブネットルートテーブルのエントリなどで参照することができます。
詳細の機能については下記記事をご覧ください。

やりたいこと

  • 監視サービスMackerelのホストIPをプレフィックスリストに登録する。
  • 上記プレフィックスリストを利用して443ポートのアウトバウンド通信を許可する。
  • 複数のVPCにあるセキュリティグループで利用してメンテナンスしやすいようにする。

前提条件

  • MackerelのホストIPは2020年11月12日時点掲載の情報を利用する。
  • 通信を許可したいEC2はセキュリティグループにて443ポートが許可されていない。

実際やってみる

プレフィックスリストの作成

MackerelのホストIPをあらかじめ登録するためプレフィックスリストを作成します。
AWSマネージメントコンソール上からサービス > VPCを選択します。
左メニューからマネージドプレフィックスリストを選択します。
一覧表示上部の[プレフィックスリスト作成]をクリックします。

プレフィックスリストの作成

設定の入力

リスト名と、最大エントリ数、登録するIPアドレスをCIDR表記にて入力します。
最大エントリ数は登録後、変更できませんのでホスト数が増えることを考え多めに設定しています。
設定入力後、画面下の[プレフィックスリストを作成]をクリックします。

MackerelのホストIPは下記ページを参考に設定しています。
MackerelがホストされているIPアドレスとポート番号を教えて下さい

プレフィックスリストの設定入力

設定の保存

プレフィックスリストが登録されて設定されているIPアドレス等が表示されます。
プレフィックスリストは他のAWSアカウントと共有する事も可能です。

プレフィックスリストの設定保存

上記、作成ができたらEC2に設定されているセキュリティグループに追加設定するか新しくセキュリティグループを作成して対象インスタンスにアタッチおこないます。
今回は既存のセキュリティグループに追加設定します。

セキュリティグループ変更

左メニューからセキュリティグループを選択します。 対象のEC2が設定しているものを選択して[アウトバウンドルールの編集]をクリックします。

セキュリティグループ変更

変更内容を設定

HTTPSの通信を許可するためルールの追加をおこない、 上記で作成したプレフィックスリストを指定します。

セキュリティグループの変更内容を設定

変更を保存

ルールの保存を行います。 プレフィックスリストが指定されたルールが追加されました。

セキュリティグループの変更を保存

メンテナンスについて

プレフィックスリストを複数のセキュリティグループに設定しました。
もし設定しているIPアドレスで変更が必要になった場合は、対象のプレフィックスリスト詳細を開き[プレフィックスリストの変更]から内容を修正することで参照しているセキュリティグループ全てに内容が反映されるようになります。

メンテナンスについて

Cloud Formation(YAML)

今回作成したプレフィックスリストを簡単に作成できるようにCFnを用意しました。
登録されているIPアドレスは2020年11月12日時点のMackerelホストのIPとなっております。

MackerelのホストIPは下記ページを参考に設定しています。
MackerelがホストされているIPアドレスとポート番号を教えて下さい

AWSTemplateFormatVersion: '2010-09-09'
Description: "Set Mackerel IP in the PrefixList"

Parameters:
  PrefixListName:
    Default: pl-mackerel
    Type: String

Resources:
  # ------------------------------------------ #
  # PrefixList
  # ------------------------------------------ #
  # Create PrefixList
  PrefixList:
    Type: AWS::EC2::PrefixList
    Properties:
      PrefixListName: !Ref PrefixListName
      AddressFamily: "IPv4"
      MaxEntries: 20
      Entries:
        - Cidr: "13.113.31.156/32"
          Description: "mackerel host ip"
        - Cidr: "54.92.89.142/32"
          Description: "mackerel host ip"
        - Cidr: "52.196.35.56/32"
          Description: "mackerel host ip"
        - Cidr: "52.69.239.167/32"
          Description: "mackerel host ip"
        - Cidr: "52.198.226.45/32"
          Description: "mackerel host ip"
        - Cidr: "52.198.218.152/32"
          Description: "mackerel host ip"
        - Cidr: "13.113.245.173/32"
          Description: "mackerel host ip"
        - Cidr: "52.199.207.168/32"
          Description: "mackerel host ip"
        - Cidr: "52.193.231.228/32"
          Description: "mackerel host ip"
      Tags:
        - Key: "Name"
          Value: !Ref PrefixListName

さいごに

マネージドプレフィックスリストを使ってIPアドレスの設定をおこないセキュリティグループで利用してみました。
設定箇所をまとめることで工数や注意して対応する回数が減るため大変うれしい機能だと感じました。
他にも利用用途がございますので別記事でご案内したいと思います。