AWSのIPアドレス範囲をJSONで取得する

Amazon Web Services (AWS) からのアクセスを特定したい場合にIPアドレスで判定する方法がある。
AWSはその時点のIPアドレス範囲をJSON形式で公開しているので割りと簡単にできる。

https://ip-ranges.amazonaws.com/ip-ranges.json

このURLからJSONを取得するとこういう形式のデータが入っている。


{
  "syncToken": "1493252534",
  "createDate": "2017-04-27-00-22-14",
  "prefixes": [
    {
      "ip_prefix": "13.32.0.0/15",
      "region": "GLOBAL",
      "service": "AMAZON"
    },
    {
      "ip_prefix": "13.54.0.0/15",
      "region": "ap-southeast-2",
      "service": "AMAZON"
    },
    /*  省略  */
}

IPアドレスだけでなく、リージョンの情報もついているので、IPアドレスだけ欲しい場合はjqとかでフィルタして使う。


curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes | .[].ip_prefix'

またIPアドレスの範囲が変わった場合にSNSで通知を受け取ることも出来る。
AWS IP アドレスの範囲 – アマゾン ウェブ サービス

AWS の IP アドレス範囲の通知を受信登録するには

  1. https://console.aws.amazon.com/sns/v2/home にある Amazon SNS コンソールを開きます。

  2. ナビゲーションバーで、必要に応じてリージョンを [米国東部(バージニア北部)] に変更します。購読する SNS 通知がこのリージョンで作成されているため、このリージョンを選択する必要があります。

  3. ナビゲーションペインで [Subscriptions] を選択します。

  4. [Create subscription] を選択します。

  5. [Create subscription] ダイアログボックスで、次の操作を行います。

    1. トピックの ARN には、以下の Amazon リソースネーム (ARN) をコピーします。

      Copy
      arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged
    2. プロトコルには、使用するプロトコルを選択します (たとえば、Email)。

    3. エンドポイントには、通知を受け取るエンドポイントを入力します (たとえば、E メールアドレス)。

    4. [Create subscription] を選択します。

  6. 指定したエンドポイントに接続されて、登録を確認するように求められます。たとえば、E メールアドレスを指定した場合は、件名に AWS Notification - Subscription Confirmation と表示された E メールメッセージが届きます。指示に沿って操作し、登録を確認します。

通知はエンドポイントの可用性によって異なります。そのため、JSON ファイルを定期的に確認して、常に最新の範囲を入手した方がよいでしょう。Amazon SNS の信頼性について詳しくは、https://aws.amazon.com/sns/faqs/#Reliability を参照してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です