[PYTHON] Der AWS IP-Bereich ist je nach Erfassungsmethode unterschiedlich.

Hintergrund

Ich habe die Sicherheitsgruppe verwendet, weil ich den Zieldienst betrieben habe und die Anzahl der Personen begrenzen wollte, die ihn sehen konnten. Also habe ich versucht, Route 53-Gesundheitschecks für die synthetische Überwachung zu verwenden Wenn Sie jedoch die Anzahl der Personen begrenzen möchten, die während der Überwachung sehen können, benötigen Sie den IP-Bereich der Route 53-Integritätsprüfungen. Wenn Sie dies überprüfen, gibt es zwei Arten von Erfassungsmethoden, und jede hat eine leicht unterschiedliche IP, sodass sie gemeinsam genutzt wird.

Erfassungsmethode

Als ich den IP-Bereich der Amazon Route 53-Integritätsprüfungen überprüft habe, sind unten zwei Muster aufgeführt.

  1. json
  2. SDK

Der erste JSON ist die Methode, die anhand des von AWS verwalteten JSON von hier überprüft werden kann. Mit dem zweiten SDK können Sie die Reichweite des Route 53 SDK überprüfen. Dieses Mal werde ich Python verwenden

Umgebung

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

Bestätigung

Bestätigung von 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

Überprüfen Sie das 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

der Unterschied

Wie oben erwähnt, sind die Längen der Arrays unterschiedlich, sodass keine Übereinstimmung gefunden wurde. Was also anders ist, ist wie folgt

>>> 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'}

Mit anderen Worten, es war anders, ob es in 15.177.0.0/18 zusammengefasst wurde.

Zusammenfassung

Der IP-Bereich der Route 53-Integritätsprüfungen war je nach Erfassungsmethode unterschiedlich Die Methode zur Erfassung mit json hatte einen großen IP-Bereich, und das SDK befand sich in einem Zustand, in dem es in kleine Stücke geschnitten wurde. Um ehrlich zu sein, ist es zweifelhaft, welches richtig ist, aber ich persönlich möchte die Wartung der Sicherheitsgruppe reduzieren, also Ich dachte, es wäre besser, einen großen Json zu nehmen

Recommended Posts

Der AWS IP-Bereich ist je nach Erfassungsmethode unterschiedlich.
Ändern Sie in Python das Verhalten der Methode je nach Aufruf
Das Problem wird je nach Formulierungsmethode leichter zu lösen
Derjenige, der nicht auf DVD ist
Wenn verzweigen, hängt davon ab, ob die Liste ein bestimmtes Element enthält