こんにちは、上野です。
今回は大規模またはエンタープライズな構成でありそうなユースケースを紹介していきます。
複数のAWSアカウント(VPC)とオンプレミス環境(社内NWなど)をVPN接続する場合を考えます。Direct Connectの場合もあります。
最近ではTransit Gatewayで接続するパターンも多いですね。
このときに課題となるのがオンプレミス側のネットワーク情報の管理です。たとえば、「すべてのVPCはオンプレミス環境のネットワークと通信できるようにする」という要件があった場合、すべてのVPCのセキュリティグループやルートテーブルに同じ設定を行う必要があります。
次のように各アカウント、各VPCに設定する必要があり、特にオンプレミス側のネットワーク情報が複数ある場合(今回の例では2つのCIDR)、煩雑になります。また、オンプレミス側のネットワークに変更があった場合、同じく複数アカウントの設定が必要になります。
この管理を一括でやりたい場合に使用できるのが、プレフィックスリストとResource Access Manager(RAM)の合わせ技です。
プレフィックスリストとは
プレフィックスリストは、1つ以上の CIDR ブロックのセットをグループ管理できる機能です。こんな感じで、複数のCIDR情報を、論理的に1つの情報として管理できます。
AWSマネージドのプレフィックスリストもあり、S3、DynamoDBのCIDR情報が登録されていて使用できます。
Resource Access Manager
AWSアカウントにあるリソースを、他のアカウントに共有できる機能です。アカウントID指定で共有もできますし、Organizationsを使用していると、組織全体またはOU指定でリソースを共有できます。
共有可能なリソースは公式ドキュメントに記載があります。
プレフィックスリストも共有可能なリソースに含まれており、以下のような対応が可能になります。
やってみる
実際に共有してみます。今回はOrganizationsのマネジメントアカウントで、プレフィックスリストを作成します。もちろんOrganizations配下の別アカウントでも可能です。
次のように、2つのエントリ(CIDR)を持つプレフィックスリストを作成します。
共有→リソース共有の作成をクリックし、RAMのページへ遷移します。
任意の名前を付けて、作成したプレフィックスリストを選択します。
共有先として、1つのOUを選択します。今回はOUに所属するアカウントは1つですが、複数アカウントあればOU内の全アカウントに共有されます。
なお、組織構造を表示できるのは、Organizationsのマネジメントアカウントのみで、メンバーアカウントの場合は表示されないためOU IDを直接入力する必要があります。
※組織またはOUに対して共有する場合は、事前にRAM→設定でOrganizationsの設定を有効にする必要があります。(画面の日本語がちょっと変ですね)
共有がActive状態になります。
こんな感じで共有ができたので、今度は共有された側「CTSystem01」アカウントでどう使用できるのか見ていきます。
セキュリティグループのルール作成時に、マネジメントアカウントで作成したプレフィックスリストが選べるようになっています。
同じくルートテーブルの設定でも、ルート情報としてマネジメントアカウントで作成したプレフィックスリストが選べるようになっています。
プレフィックスに登録されているCIDR情報は、共有されたアカウント側も、プレフィックスリストの一覧から選択して確認できます。(もちろん共有された側では変更できません)
もう一度マネジメントアカウント側に戻って、試しにCIDR情報を1つ追加してみます。
共有された側「CTSystem01」を見てみると、こちらにもしっかり情報が追加されています。
いいですね!以上で検証終了です。
まとめ
地味ですが大規模なネットワーク管理する場合にめちゃくちゃ便利なのでは?という機能を紹介しました。
共有先が1アカウントだったのでわかりにくかったのですが、1箇所で接続先NWの情報を管理し、各メンバーアカウントは1つのプレフィックスリストを登録しておき、後はNW管理者にお任せ!みたいな良い感じの運用が可能です。
どなたかの役に立てば幸いです。