[PYTHON] La plage d'adresses IP AWS est différente selon la méthode d'acquisition.

Contexte

J'utilisais le groupe de sécurité parce que j'exploitais le service cible et que je voulais limiter le nombre de personnes pouvant le voir. J'essayais donc d'utiliser les vérifications de l'état de Route 53 pour la surveillance synthétique Cependant, si vous souhaitez limiter le nombre de personnes pouvant voir pendant la surveillance, vous avez besoin de la plage d'adresses IP des vérifications de l'état de Route 53. Si vous cochez, il existe deux types de méthodes d'acquisition, et chacune a une adresse IP légèrement différente, elle sera donc partagée.

Méthode d'acquisition

Lorsque j'ai vérifié la plage IP des vérifications de l'état d'Amazon Route 53, il y a deux modèles ci-dessous.

  1. json
  2. SDK

Le premier json est la méthode à vérifier à partir du json de here géré par AWS. Le deuxième SDK est un moyen de vérifier la portée du SDK Route 53. Cette fois, j'utiliserai Python

environnement

$ python --version
Python 3.6.8
$ pip list | grep boto3
boto3                               1.13.9

Vérification

Confirmation de json

>>> import requests
>>> ip_ranges = requests.get('https://ip-ranges.amazonaws.com/ip-ranges.json').json()['prefixes']
>>> route53_ips_json = [item['ip_prefix'] for item in ip_ranges if item["service"] == "ROUTE53_HEALTHCHECKS"]
>>> route53_ips_json
['54.252.254.192/26', '177.71.207.128/26', '54.255.254.192/26', '54.244.52.192/26', '54.251.31.128/26', '54.241.32.64/26', '54.245.168.0/26', '54.232.40.64/26', '54.248.220.0/26', '176.34.159.192/26', '54.252.79.128/26', '54.183.255.128/26', '54.250.253.192/26', '15.177.0.0/18', '54.228.16.0/26', '107.23.255.0/26', '54.243.31.192/26']
>>> len(route53_ips_json)
17

Vérifier le SDK

>>> import boto3
>>> client = boto3.client('route53')
>>> route53_ips_sdk = client.get_checker_ip_ranges()
>>> route53_ips_sdk['CheckerIpRanges']
['15.177.2.0/23', '15.177.6.0/23', '15.177.10.0/23', '15.177.14.0/23', '15.177.18.0/23', '15.177.22.0/23', '15.177.26.0/23', '15.177.30.0/23', '15.177.34.0/23', '15.177.38.0/23', '15.177.42.0/23', '15.177.46.0/23', '15.177.50.0/23', '15.177.54.0/23', '15.177.58.0/23', '15.177.62.0/23', '54.183.255.128/26', '54.228.16.0/26', '54.232.40.64/26', '54.241.32.64/26', '54.243.31.192/26', '54.244.52.192/26', '54.245.168.0/26', '54.248.220.0/26', '54.250.253.192/26', '54.251.31.128/26', '54.252.79.128/26', '54.252.254.192/26', '54.255.254.192/26', '107.23.255.0/26', '176.34.159.192/26', '177.71.207.128/26']
>>> len(route53_ips_sdk['CheckerIpRanges'])
32

la différence

Ainsi, comme mentionné ci-dessus, les longueurs des tableaux sont différentes, il n'y avait donc pas de correspondance. Donc, ce qui est différent est comme suit

>>> set(route53_ips_json) - set(route53_ips_sdk['CheckerIpRanges'])                                                                         
{'15.177.0.0/18'}
>>> set(route53_ips_sdk['CheckerIpRanges']) - set(route53_ips_json)
{'15.177.18.0/23', '15.177.2.0/23', '15.177.42.0/23', '15.177.50.0/23', '15.177.34.0/23', '15.177.54.0/23', '15.177.10.0/23', '15.177.6.0/23', '15.177.26.0/23', '15.177.14.0/23', '15.177.46.0/23', '15.177.58.0/23', '15.177.38.0/23', '15.177.62.0/23', '15.177.22.0/23', '15.177.30.0/23'}

En d'autres termes, il était différent de savoir si cela était résumé dans 15.177.0.0/18.

Résumé

La plage d'adresses IP des vérifications de l'état de Route 53 différait selon la méthode d'acquisition La méthode d'acquisition avec json avait une large plage d'adresses IP et le SDK était en train d'être coupé en petits morceaux. Pour être honnête, il est douteux de savoir lequel est correct, mais je souhaite personnellement réduire la maintenance du groupe de sécurité, donc J'ai pensé qu'il valait mieux prendre un gros json

Recommended Posts

La plage d'adresses IP AWS est différente selon la méthode d'acquisition.
En Python, changez le comportement de la méthode en fonction de la façon dont elle est appelée
Le problème devient plus facile à résoudre en fonction de la méthode de formulation
Celui qui n'est pas sur DVD
Si branche en fonction de l'existence ou non d'un élément spécifique dans la liste