Organizations環境でパブリックIPv4アドレスを使用している環境を検索してみた

パブリックIPが課金対象になったので、マルチアカウントでパブリックIPを使用している環境の情報を取得したい場合のTIPS
2023.08.10

こんにちは。
繁松です。

はじめに

今まで無料だったパブリックIPv4アドレスが2024年 2月 1日から課金対象になったことで、どのアカウントのどの環境でパブリックIPを利用しているか把握したい場面も出てくるのではないかと思います。

IPAM(VPC IP Address Manager)を使用し、管理/確認することが便利かとは思いますが、パブリックIPが使用されている環境を確認したいだけ、といった場合には今回紹介する方法で簡単かつ追加コスト無し(Configの料金を除く)に確認できます。

Organizations(組織)でパブリックIPを利用している環境の検索には、AWS Config 高度なクエリを使います。
検索対象はENIに関連付けられているパブリックIPと、関連付けられていないEIPです。

前提条件

  • Configでリソースタイプ[EC2 EIP]と[EC2 NetworkInterface]の記録をしていること(検索したいリージョン全てで)
    • Config > 設定 > 記録するリソースタイプ を確認してください。
  • Configアグリゲータで組織のConfigを集約していること
    • 設定方法は以下のブログが参考になります。

高度なクエリで検索

高度なクエリを使って、パブリックIPが使用されている環境を検索します。

手順

AWS Config > 高度なクエリ > [新しいクエリ]からクエリエディタを起動します。

クエリスコープから組織のアグリゲータを指定します。

クエリ
検索条件は以下です。

  1. PublicIpが割り当てられているNetworkInterface
    • ALBや、パブリックIPが割り当てられたEC2、EIPを利用してるリソース等が対象
  2. 関連付けられていないEIP
    • ENIに関連付けられていないEIPが対象
SELECT
  accountId,
  awsRegion,
  resourceId,
  resourceType,
  configuration.publicIp,
  configuration.privateIpAddresses.association.publicIp
WHERE
  (
    resourceType = 'AWS::EC2::NetworkInterface'
    AND configuration.association.publicIp BETWEEN '0.0.0.0'
    AND '255.255.255.255'
  )
  OR (
    resourceType = 'AWS::EC2::EIP'
    AND relationships.resourceId NOT LIKE 'eni%'
  )
ORDER BY
  accountId;

クエリを入力し実行します。

実行結果

今回は、アタッチされていないEIP、パブリックIPが設定されたEC2、ALB、NAT Gatewayが作成されているアカウントを対象に確認してみましたが、すべて表示されました。
[2項目]と表示されている箇所は、複数のパブリックIPがアタッチされているリソース(今回はセカンダリIPを設定したNAT Gateway)で、クリックすることで確認できます。

注意点

  • コンソールからエクスポートできるクエリ結果が最大500件までとなっております。
  • 前提条件のConfigの設定は確認したいリージョンすべてで設定する必要があります。

さいごに

高度なクエリをつかって、組織全体で使われているパブリックIPを検索しました。
この内容だけでは表示されないパブリックIPもあるかもしれませんが、大体のものは確認できると思います。

また、シングルアカウントではパブリックIPv4インサイトを利用することで、利用中のパブリックIPを把握することができますが、リージョン毎の確認になるので全リージョンまとめて確認したい場合にも便利です。

以上、繁松でした。

参考情報