Microsoft 365 IP-Adresse und URL-Webdienst

Der Microsoft 365 IP-Adress- und URL-Webdienst hilft Ihnen, Microsoft 365-Netzwerkdatenverkehr besser zu identifizieren und zu unterscheiden, sodass Sie Änderungen einfacher bewerten, konfigurieren und auf dem neuesten Stand bleiben können. Dieser REST-basierte Webdienst ersetzt die vorherigen herunterladbaren XML-Dateien, die am 2. Oktober 2018 ausliefen.

Als Kunde oder Anbieter von Netzwerkperimetergeräten können Sie mithilfe des Webdiensts für Microsoft 365-IP-Adressen und FQDN-Einträge erstellen. Sie können direkt in einem Webbrowser auf die Daten zugreifen, indem Sie diese URLs verwenden:

Als Kunde können Sie diesen Webdienst für Folgendes verwenden:

  • Aktualisieren Sie Ihre PowerShell-Skripts, um Microsoft 365-Endpunktdaten abzurufen und alle Formatierungen für Ihre Netzwerkgeräte zu ändern.
  • Verwenden Sie diese Informationen, um auf Clientcomputern bereitgestellte PAC-Dateien zu aktualisieren.

Als Anbieter von Netzwerkperimetergeräten können Sie diesen Webdienst für Folgendes verwenden:

  • Erstellen und testen Sie Gerätesoftware für den Download der Liste für die automatische Konfiguration.
  • Suchen Sie die aktuelle Version.
  • Rufen Sie die aktuellen Änderungen ab.

Hinweis

Wenn Sie Azure ExpressRoute zum Herstellen einer Verbindung mit Microsoft 365 verwenden, lesen Sie Azure ExpressRoute für Microsoft 365 , um sich mit den microsoft 365-Diensten vertraut zu machen, die über Azure ExpressRoute unterstützt werden. Lesen Sie auch den Artikel Microsoft 365-URLs und IP-Adressbereiche , um zu verstehen, welche Netzwerkanforderungen für Microsoft 365-Anwendungen Eine Internetverbindung erfordern. Das wird Ihnen helfen, Ihre Umkreis-Sicherheitsgeräte besser zu konfigurieren.

Weitere Informationen finden Sie unter:

Allgemeine Parameter

Diese Parameter gelten für sämtliche Webdienstmethoden:

  • format=<JSON | CSV> : Standardmäßig ist das zurückgegebene Datenformat JSON. Verwenden Sie diesen optionalen Parameter, um die Daten in durch Trennzeichen getrennten Werten (CSV-Format) zurückzuerhalten.

  • ClientRequestId=<guid> – Eine erforderliche GUID, die Sie für die Clientzuordnung generieren. Generieren Sie eine eindeutige GUID für jeden Computer, von dem der Webdienst aufgerufen wird (die auf dieser Seite enthaltenen Skripts generieren eine GUID für Sie). Verwenden Sie die in den folgenden Beispielen gezeigten GUIDs nicht, da sie in Zukunft möglicherweise vom Webdienst blockiert werden. Das GUID-Format ist xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, wobei x eine hexadezimale Zahl darstellt.

    Wenn Sie eine GUID generieren möchten, können Sie den PowerShell-Befehl New-Guid verwenden oder einen Onlinedienst wie den Online GUID Generator nutzen.

Versionswebmethode

Microsoft aktualisiert die Ip-Adressen und FQDN-Einträge von Microsoft 365 zu Beginn jedes Monats. Out-of-Band-Updates werden manchmal aufgrund von Supportfällen, Sicherheitsupdates oder sonstigen betrieblichen Anforderungen veröffentlicht.

Den Daten für jeden veröffentlichten instance wird eine Versionsnummer zugewiesen, und die Version-Webmethode ermöglicht es Ihnen, nach der neuesten Version jedes Microsoft 365-Diensts instance zu suchen. Wir empfehlen, die Version nicht mehr als einmal pro Stunde zu überprüfen.

Parameter für die Versionswebmethode sind:

  • AllVersions=<true | false> – Standardmäßig ist die zurückgegebene Version die neueste. Nehmen Sie diesen optionalen Parameter mit auf, um alle veröffentlichten Versionen seit dem ersten Release des Webdiensts anzufordern.
  • Format=<JSON | CSV | RSS> : Zusätzlich zu den FORMATen JSON und CSV unterstützt die Version-Webmethode auch RSS. Diesen optionalen Parameter können Sie zusammen mit dem Parameter AllVersions=true verwenden, um einen RSS-Feed anzufordern, der mit Outlook oder anderen RSS-Readern genutzt werden kann.
  • Instanz=<Weltweit | China | USGovDoD | USGovGCCHigh> – Dieser optionale Parameter gibt die instance an, für die die Version zurückgegeben werden soll. Wenn nicht angegeben, werden alle Instanzen zurückgegeben. Gültige Instanzen sind: Weltweit, China, USGovDoD, USGovGCCHigh.

Die Version-Webmethode ist nicht ratengegrenzt und gibt niemals 429-HTTP-Antwortcodes zurück. Die Antwort auf die Versionswebmethode enthält einen Cache-Control-Header, der empfiehlt, die Daten für eine Stunde zwischenzuspeichern. Das Ergebnis der Versionswebmethode kann ein einzelner Datensatz oder ein Array aus Datensätzen sein. Die Elemente jedes Datensatzes sind:

  • instance– Der Kurzname des Microsoft 365-Diensts instance.
  • latest – die neueste Version für Endpunkte der angegebenen Instanz.
  • versions – eine Liste aller vorherigen Versionen für die angegebene Instanz. Dieses Element wird nur einbezogen, wenn der Parameter AllVersions wahr ist.

Beispiele für die Versionswebmethode

Beispiel 1 – Anforderungs-URI: https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dieser URI gibt die neueste Version jedes Microsoft 365-Diensts instance zurück. Beispielergebnis:

[
 {
  "instance": "Worldwide",
  "latest": "2018063000"
 },
 {
  "instance": "USGovDoD",
  "latest": "2018063000"
 },
 {
  "instance": "USGovGCCHigh",
  "latest": "2018063000"
 },
 {
  "instance": "China",
  "latest": "2018063000"
 }
]

Wichtig

Die GUID für den ClientRequestID-Parameter in diesen URIs sind nur ein Beispiel. Um die Webdienst-URIs auszuprobieren, generieren Sie Ihre eigene GUID. Die in diesen Beispielen gezeigten GUIDs können in Zukunft vom Webdienst blockiert werden.

Beispiel 2 – Anforderungs-URI: https://endpoints.office.com/version/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dieser URI gibt die neueste Version des angegebenen Microsoft 365-Diensts instance zurück. Beispielergebnis:

{
 "instance": "Worldwide",
 "latest": "2018063000"
}

Anfrage-URI – Beispiel 3: https://endpoints.office.com/version/Worldwide?Format=CSV&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dieser URI zeigt die Ausgabe im CSV-Format an. Beispielergebnis:

instance,latest
Worldwide,2018063000

Anfrage-URI – Beispiel 4: https://endpoints.office.com/version/Worldwide?AllVersions=true&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dieser URI zeigt alle früheren Versionen an, die für den weltweiten Microsoft 365-Dienst instance veröffentlicht wurden. Beispielergebnis:

{
  "instance": "Worldwide",
  "latest": "2018063000",
  "versions": [
    "2018063000",
    "2018062000"
  ]
}

Beispiel 5 RSS-Feed-URI: https://endpoints.office.com/version/worldwide?clientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7& allVersions=true&format=RSS

Dieser URI zeigt einen RSS-Feed der veröffentlichten Versionen an, der Links zur Liste der Änderungen für jede Version enthält. Beispielergebnis:

<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0" xmlns:a10="https://www.w3.org/2005/Atom">
<channel>
<link>https://aka.ms/o365ip</link>
<description/>
<language>en-us</language>
<lastBuildDate>Thu, 02 Aug 2018 00:00:00 Z</lastBuildDate>
<item>
<guid isPermaLink="false">2018080200</guid>
<link>https://endpoints.office.com/changes/Worldwide/2018080200?singleVersion&clientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7</link> <description>Version 2018080200 includes 2 changes. IPs: 2 added and 0 removed.</description>
<pubDate>Thu, 02 Aug 2018 00:00:00 Z</pubDate>
</item>

Endpunktwebmethode

Die Endpunkt-Webmethode gibt alle Datensätze für IP-Adressbereiche und URLs zurück, aus denen der Microsoft 365-Dienst besteht. Die neuesten Daten aus der Endpunkt-Webmethode sollten immer für die Konfiguration von Netzwerkgeräten verwendet werden. Microsoft kündigt neue Ergänzungen 30 Tage vor der Veröffentlichung an, um Ihnen Zeit zum Aktualisieren von Zugriffssteuerungs- und Proxyserver-Umgehungslisten zu lassen. Wir empfehlen Ihnen, die Endpunktwebmethode erst wieder einzusetzen, wenn die Versionswebmethode besagt, dass eine neue Version der Daten verfügbar ist.

Parameter für die Endpunktwebmethode sind:

  • ServiceAreas=<Allgemein | Austausch | SharePoint | Skype> – Eine durch Trennzeichen getrennte Liste von Dienstbereichen. Gültige Elemente sindCommon, Exchange, SharePoint und Skype. Da Common-Dienstbereich-Elemente Voraussetzung für alle anderen Dienstbereiche sind, bezieht der Webdienst sie stets mit ein. Wenn Sie diesen Parameter nicht einschließen, werden alle Dienstbereiche zurückgegeben.
  • TenantName=<tenant_name> – Ihr Microsoft 365-Mandantenname. Der Webdienst übernimmt Ihren angegebenen Namen und fügt ihn in URL-Teile ein, die den Mandantennamen enthalten. Wenn Sie keinen Mandantennamen angeben, weisen diese Teile der URLs das Platzhalterzeichen (*) auf.
  • NoIPv6=<true | false> – Legen Sie den Wert auf true fest, um IPv6-Adressen aus der Ausgabe auszuschließen, wenn Sie IPv6 nicht in Ihrem Netzwerk verwenden.
  • Instanz=<Weltweit | China | USGovDoD | USGovGCCHigh> – Dieser erforderliche Parameter gibt die instance an, von der die Endpunkte zurückgegeben werden sollen. Gültige Instanzen sind: Weltweit, China, USGovDoD, und USGovGCCHigh.

Wenn Sie die Endpunktwebmethode zu häufig von derselben Client-IP-Adresse abrufen, erhalten Sie möglicherweise den HTTP-Antwortcode 429 (zu viele Anforderungen). Wenn Sie diesen Antwortcode erhalten, warten Sie eine Stunde, bevor Sie Ihre Anforderung wiederholen, oder generieren Sie eine neue GUID für sie. Als allgemein bewährte Methode rufen Sie die Endpunktwebmethode nur auf, wenn die Versionswebmethode besagt, dass eine neue Version verfügbar ist.

Das Ergebnis der Endpunktwebmethode ist ein Array aus Datensätzen, in dem jeder Datensatz einen bestimmten Endpunktsatz darstellt. Die Elemente für jeden Datensatz sind:

  • id – die unveränderliche ID-Nummer des Endpunktsatzes.
  • serviceArea – der Servicebereich, zu dem Folgendes gehört: Allgemein, Exchange, SharePoint oder Skype.
  • urls – URLs für den Endpunktsatz. ein JSON-Array von DNS-Einträgen. Weggelassen, falls leer.
  • tcpPorts – TCP-Ports für den Endpunktsatz. Alle Ports-Elemente sind als eine durch Trennzeichen getrennte Liste von Ports oder Portbereichen formatiert, die durch einen Bindestrich (-) getrennt sind. Ports werden auf alle IP-Adressen und alle URLs im Endpunktsatz für eine bestimmte Kategorie angewendet. Weggelassen, falls leer.
  • udpPorts – UDP-Ports für die IP-Adressbereiche in diesem Endpunktsatz. Weggelassen, falls leer.
  • ips – die mit diesem Endpunktsatz verbundenen IP-Adressbereiche, die mit den aufgeführten TCP- oder UDP-Ports verknüpft sind. ein JSON-Array von IP-Adressbereichen. Weggelassen, falls leer.
  • category – die Verbindungskategorie des Endpunktsatzes. Gültige Werte sind Optimize, Allow und Default. Wenn Sie die Ausgabe der Endpunkt-Webmethode nach der Kategorie einer bestimmten IP-Adresse oder URL durchsuchen, gibt Ihre Abfrage möglicherweise mehrere Kategorien zurück. Folgen Sie in diesem Fall der Empfehlung für die Kategorie mit der höchsten Priorität. Wenn der Endpunkt beispielsweise sowohl in Optimize als auch Allow angezeigt wird, sollten Sie den Anforderungen für Optimize entsprechen. Erforderlich.
  • expressRoute – True, wenn dieser Endpunktsatz über ExpressRoute weitergeleitet wird; False, wenn nicht.
  • required – True , wenn dieser Endpunktsatz für die Unterstützung von Microsoft 365 über Konnektivität erforderlich ist. False, wenn dieser Endpunktsatz optional ist.
  • Hinweise– Für optionale Endpunkte wird in diesem Text die Microsoft 365-Funktionalität beschrieben, die nicht verfügbar wäre, wenn auf der Netzwerkebene auf IP-Adressen oder URLs in diesem Endpunktsatz nicht zugegriffen werden kann. Weggelassen, falls leer.

Beispiele für die Endpunktwebmethode

Beispiel 1 – Anforderungs-URI: https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dieser URI ruft alle Endpunkte für microsoft 365 weltweit instance für alle Workloads ab. Das Beispielergebnis zeigt einen Auszug der Ausgabe:

[
 {
  "id": 1,
  "serviceArea": "Exchange",
  "serviceAreaDisplayName": "Exchange Online",
  "urls":
   [
    "*.protection.outlook.com"
   ],
  "ips":
   [
    "2a01:111:f403::/48", "23.103.132.0/22", "23.103.136.0/21", "23.103.198.0/23", "23.103.212.0/22", "40.92.0.0/14", "40.107.0.0/17", "40.107.128.0/18", "52.100.0.0/14", "213.199.154.0/24", "213.199.180.128/26", "94.245.120.64/26", "207.46.163.0/24", "65.55.88.0/24", "216.32.180.0/23", "23.103.144.0/20", "65.55.169.0/24", "207.46.100.0/24", "2a01:111:f400:7c00::/54", "157.56.110.0/23", "23.103.200.0/22", "104.47.0.0/17", "2a01:111:f400:fc00::/54", "157.55.234.0/24", "157.56.112.0/24", "52.238.78.88/32"
   ],
  "tcpPorts": "443",
  "expressRoute": true,
  "category": "Allow"
 },
 {
  "id": 2,
  "serviceArea": "Exchange",
  "serviceAreaDisplayName": "Exchange Online",
  "urls":
   [
    "*.mail.protection.outlook.com"
   ],

Die vollständige Ausgabe der Anforderung in diesem Beispiel würde weitere Endpunktsätze enthalten.

Anfrage-URI – Beispiel 2: https://endpoints.office.com/endpoints/Worldwide?ServiceAreas=Exchange&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

In diesem Beispiel werden Endpunkte für die Microsoft 365 Worldwide instance nur für Exchange Online und Abhängigkeiten abgerufen.

Die Ausgabe, z. B. 2, ähnelt Beispiel 1, mit der Ausnahme, dass die Ergebnisse keine Endpunkte für SharePoint oder Skype for Business Online enthalten würden.

Änderungswebmethode

Die Änderungswebmethode gibt die neuesten Updates zurück, die veröffentlicht wurden, typischerweise die Änderungen des vorherigen Monats an IP-Adressbereichen und URLs.

Die wichtigsten Änderungen an Endpunktdaten sind neue URLs und IP-Adressen. Wenn sie einer Firewall-Zugriffssteuerungsliste oder einer URL zu einer Umgehungsliste des Proxyservers keine IP-Adresse hinzufügen, kann dies zu einem Ausfall für Microsoft 365-Benutzer hinter diesem Netzwerkgerät führen. Ungeachtet betrieblicher Anforderungen werden neue Endpunkte 30 Tage vor dem Datum, an dem die Endpunkte bereitgestellt werden, im Webdienst veröffentlicht, um Ihnen Zeit zum Aktualisieren von Zugriffssteuerungs- und Proxyserver-Umgehungslisten zu lassen.

Die nötigen Parameter für die Änderungswebmethode sind:

  • Version=<JJJJMMDDN –> Erforderlicher URL-Routenparameter. Dieser Wert steht für die Version, die derzeit implementiert ist. Der Webdienst wird die Änderungen seit dieser Version zurückgeben. Das Format ist JJJJMMTTNN, wobei NN eine natürliche Zahl ist, die erhöht wird, falls mehrere Versionen am gleichen Tag herausgegeben werden müssen. Dabei steht 00 für das erste Update an einen bestimmten Tag. Der Webdienst erfordert, dass der Versions-Parameter genau 10 Ziffern enthält.

Für die Änderungswebmethode sind die Gebühren auf dieselbe Art und Weise beschränkt wie bei der Endpunktwebmethode. Wenn Sie einen 429-HTTP-Antwortcode erhalten, warten Sie eine Stunde, bevor Sie Ihre Anforderung wiederholen, oder generieren Sie eine neue GUID für sie.

Das Ergebnis der Änderungswebmethode ist ein Array aus Datensätzen, in dem jeder Datensatz eine Änderung in einer bestimmten Version der Endpunkte darstellt. Die Elemente für jeden Datensatz sind:

  • id – die unveränderliche ID des Änderungsdatensatzes.
  • endpointSetId – die ID des Endpunktsatz-Datensatzes, der geändert wird.
  • disposition – beschreibt, was die Änderung am Endpunktsatz-Datensatz bewirkt hat. Die Werte sind change, add oder remove.
  • impact – nicht alle Änderungen sind für jede Umgebung gleichermaßen wichtig. Dieses Element beschreibt die erwartete Wirkung auf die Umgebung eines Unternehmensnetzwerkumkreises infolge dieser Änderung. Dieses Element wird nur in Änderungsdatensätze der Version 2018112800 und höher einbezogen. Optionen für die Auswirkungen sind: — AddedIp – Eine IP-Adresse wurde zu Microsoft 365 hinzugefügt und wird in Kürze auf dem Dienst live sein. Dies stellt eine Änderung dar, die Sie an einer Firewall oder einem anderem Netzwerkumkreisgerät der Schicht 3 vornehmen müssen. Wenn Sie dies nicht hinzufügen, bevor wir mit der Verwendung beginnen, kann es zu einem Ausfall kommen. – AddedUrl: Eine URL wurde zu Microsoft 365 hinzugefügt und wird in Kürze auf dem Dienst live sein. Dies stellt eine Änderung dar, die Sie auf einem Netzwerkumkreisgerät für die Proxyserver- oder URL-Analyse vornehmen müssen. Wenn Sie diese URL nicht hinzufügen, bevor wir mit der Verwendung beginnen, kann es zu einem Ausfall kommen. – AddedIpAndUrl – Sowohl eine IP-Adresse als auch ein URL wurden hinzugefügt. Dies stellt eine Änderung dar, die Sie entweder auf einem Firewall-Gerät der Schicht 3 oder einem Gerät zur Proxyserver- oder URL-Analyse vornehmen müssen. Wenn Sie dieses IP/URL-Paar nicht hinzufügen, bevor wir es verwenden, kann es zu einem Ausfall kommen. – RemovedIpOrUrl: Mindestens eine IP-Adresse oder URL wurde aus Microsoft 365 entfernt. Entfernen Sie die Netzwerkendpunkte von Ihren Umkreisgeräten, aber dafür gibt es keine Frist. – ChangedIsExpressRoute: Das Supportattribut „Express Route“ wurde geändert. Wenn Sie ExpressRoute verwenden, müssen Sie möglicherweise je nach Konfiguration Maßnahmen ergreifen. – MovedIpOrUrl: Eine IP-Adresse oder URL wurde zwischen diesem Endpunktsatz und einem anderen verschoben. Im Allgemeinen ist keine Aktion erforderlich. – RemovedDuplicateIpOrUrl – Wir haben eine doppelte IP-Adresse oder URL entfernt, aber sie ist weiterhin für Microsoft 365 veröffentlicht. Im Allgemeinen ist keine Aktion erforderlich. – OtherNonPriorityChanges: Es wurde etwas weniger wichtiges als alle anderen Optionen geändert, z. B. die Inhalte eines Notizfelds.
  • version – die Version des veröffentlichten Endpunktsatzes, in dem die Änderung eingeführt wurde. Versionsnummern besitzen das Format JJJJMMTTNN, wobei NN eine natürliche Zahl ist, die erhöht wird, falls mehrere Versionen am gleichen Tag herausgegeben werden sollen.
  • previous – eine Unterstruktur, die vorherige Werte von Änderungselementen im Endpunktsatz angibt. Dies ist für neu hinzugefügte Endpunktsätze nicht enthalten. Umfasst ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts und notes.
  • current – eine Unterstruktur, die aktualisierte Werte von Änderungselementen im Endpunktsatz angibt. Umfasst ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts und notes.
  • add – eine Unterstruktur, die Elemente angibt, die zu Endpunktsatzsammlungen hinzugefügt werden sollen. Wird weggelassen, wenn es keine Ergänzungen gibt. – effectiveDate – definiert das Datum, wann die Ergänzungen live im Dienst sind. – ips – Elemente, die dem Array ips hinzugefügt werden sollen. – urls: Elemente, die zum Array urls hinzugefügt werden sollen.
  • remove – eine Unterstruktur, die aus dem Endpunktsatz zu entfernende Elemente angibt. Wird weggelassen, wenn es keine Entfernungen gibt. – ips – Elemente, die aus dem Array ips entfernt werden sollen. – urls: Elemente, die aus dem Array urls entfernt werden sollen.

Beispiele für die Änderungswebmethode

Beispiel 1 – Anforderungs-URI: https://endpoints.office.com/changes/worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dadurch werden alle vorherigen Änderungen an der microsoft 365 weltweiten Service-instance angefordert. Beispielergebnis:

[
 {
  "id": 424,
  "endpointSetId": 32,
  "disposition": "Change",
  "version": "2018062700",
  "remove":
   {
    "urls":
     [
      "*.api.skype.com", "skypegraph.skype.com"
     ]
   }
 },
 {
  "id": 426,
  "endpointSetId": 31,
  "disposition": "Change",
  "version": "2018062700",
  "add":
   {
    "effectiveDate": "20180609",
    "ips":
     [
      "51.140.203.190/32"
     ]
   },
  "remove":
   {
    "ips":
     [

Beispiel 2 – Anforderungs-URI: https://endpoints.office.com/changes/worldwide/2018062700?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Dadurch werden Änderungen seit der angegebenen Version der Microsoft 365 Worldwide instance angefordert. In diesem Fall ist die angegebene Version die neueste. Beispielergebnis:

[
  {
    "id":3,
    "endpointSetId":33,
    "changeDescription":"Removing old IP prefixes",
    "disposition":"Change",
    "version":"2018031301",
    "remove":{
      "ips":["65.55.127.0/24","66.119.157.192/26","66.119.158.0/25",
      "111.221.76.128/25","111.221.77.0/26","207.46.5.0/24"]
    }
  },
  {
    "id":4,
    "endpointSetId":45,
    "changeDescription":"Removing old IP prefixes",
    "disposition":"Change",
    "version":"2018031301",
    "remove":{
      "ips":["13.78.93.8/32","40.113.87.220/32","40.114.149.220/32",
      "40.117.100.83/32","40.118.214.164/32","104.208.31.113/32"]
    }
  }
]

Beispiel für PowerShell-Skript

Sie können dieses PowerShell-Skript ausführen, um festzustellen, ob es Aktionen gibt, die Sie für aktualisierte Daten setzen müssen. Sie können dieses Skript als geplante Aufgabe ausführen, um nach einer Versionsaktualisierung zu suchen. Um zu vermeiden, dass der Webdienst überlastet ist, versuchen Sie, das Skript nicht mehr als einmal pro Stunde auszuführen.

Dieses Skript führt folgende Aktionen aus:

  • Überprüft die Versionsnummer der aktuellen Microsoft 365 Worldwide instance-Endpunkte durch Aufrufen der Webdienst-REST-API.

  • Suchen nach einer aktuellen Versionsdatei unter $Env:TEMP\O365_endpoints_latestversion.txt. Der Pfad der globalen Variablen $Env:TEMP lautet normalerweise C:\Users\<username>\AppData\Local\Temp.

  • Wenn dies das erste Mal ist, dass das Skript ausgeführt wurde, gibt es die aktuelle Version sowie alle aktuellen IP-Adressen und URLs zurück, schreibt die Endpunkt-Version in die Datei $Env:TEMP\O365_endpoints_latestversion.txt und die Endpunkt-Datenausgabe in die Datei $Env:TEMP\O365_endpoints_data.txt. Sie können den Pfad und/oder den Namen der Ausgabedatei ändern, indem Sie die folgenden Zeilen bearbeiten:

    $versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
    $datapath = $Env:TEMP + "\O365_endpoints_data.txt"
    
  • Wenn die neueste Webdienst-Version bei jeder nachfolgenden Ausführung des Skripts mit der Version in der Datei O365_endpoints_latestversion.txt identisch ist, wird das Skript beendet, ohne Änderungen vorzunehmen.

  • Wenn die neueste Webdienst-Version neuer als die Version in der Datei O365_endpoints_latestversion.txt ist, gibt das Skript die Endpunkte und Filter für die Endpunkte der Kategorien Allow und Optimize zurück, aktualisiert die Version in der Datei O365_endpoints_latestversion.txt und schreibt die aktualisierten Daten in die Datei O365_endpoints_data.txt.

Das Skript generiert eine eindeutige ClientRequestId für den Computer, auf dem es ausgeführt wird, und verwendet diese ID für mehrere Aufrufe wieder. Diese ID wird in der Datei O365_endpoints_latestversion.txt gespeichert.

Ausführen des PowerShell-Skripts

  1. Kopieren Sie das Skript, und speichern Sie es auf der Festplatte oder am Speicherort des Skripts als Get-O365WebServiceUpdates.ps1.

  2. Führen Sie das Skript in Ihrem bevorzugten Skript-Editor, z. B. PowerShell ISE oder VS Code, oder auf einer PowerShell-Konsole mithilfe des folgenden Befehls aus:

    powershell.exe -file <path>\Get-O365WebServiceUpdates.ps1
    

    Es gibt keine Parameter, die an das Skript weiterzugeben sind.

<# Get-O365WebServiceUpdates.ps1
From https://aka.ms/ipurlws
v1.1 8/6/2019

DESCRIPTION
This script calls the REST API of the Microsoft 365 IP and URL Web Service (Worldwide instance)
and checks to see if there has been a new update since the version stored in an existing
$Env:TEMP\O365_endpoints_latestversion.txt file in your user directory's temp folder
(usually C:\Users\<username>\AppData\Local\Temp).
If the file doesn't exist, or the latest version is newer than the current version in the
file, the script returns IPs and/or URLs that have been changed, added or removed in the latest
update and writes the new version and data to the output file $Env:TEMP\O365_endpoints_data.txt.

USAGE
Run as a scheduled task every 60 minutes.

PARAMETERS
n/a

PREREQUISITES
PS script execution policy: Bypass
PowerShell 3.0 or later
Does not require elevation
#>

#Requires -Version 3.0

# web service root URL
$ws = "https://endpoints.office.com"
# path where output files will be stored
$versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
$datapath = $Env:TEMP + "\O365_endpoints_data.txt"

# fetch client ID and version if version file exists; otherwise create new file and client ID
if (Test-Path $versionpath) {
    $content = Get-Content $versionpath
    $clientRequestId = $content[0]
    $lastVersion = $content[1]
    Write-Output ("Version file exists! Current version: " + $lastVersion)
}
else {
    Write-Output ("First run! Creating version file at " + $versionpath + ".")
    $clientRequestId = [GUID]::NewGuid().Guid
    $lastVersion = "0000000000"
    @($clientRequestId, $lastVersion) | Out-File $versionpath
}

# call version method to check the latest version, and pull new data if version number is different
$version = Invoke-RestMethod -Uri ($ws + "/version/Worldwide?clientRequestId=" + $clientRequestId)
if ($version.latest -gt $lastVersion) {
    Write-Host "New version of Microsoft 365 worldwide commercial service instance endpoints detected"
    # write the new version number to the version file
    @($clientRequestId, $version.latest) | Out-File $versionpath
    # invoke endpoints method to get the new data
    $endpointSets = Invoke-RestMethod -Uri ($ws + "/endpoints/Worldwide?clientRequestId=" + $clientRequestId)
    # filter results for Allow and Optimize endpoints, and transform these into custom objects with port and category
    # URL results
    $flatUrls = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $urls = $(if ($endpointSet.urls.Count -gt 0) { $endpointSet.urls } else { @() })
        $urlCustomObjects = @()
        if ($endpointSet.category -in ("Allow", "Optimize")) {
            $urlCustomObjects = $urls | ForEach-Object {
                [PSCustomObject]@{
                    category = $endpointSet.category;
                    url      = $_;
                    tcpPorts = $endpointSet.tcpPorts;
                    udpPorts = $endpointSet.udpPorts;
                }
            }
        }
        $urlCustomObjects
    }
    # IPv4 results
    $flatIp4s = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $ips = $(if ($endpointSet.ips.Count -gt 0) { $endpointSet.ips } else { @() })
        # IPv4 strings contain dots
        $ip4s = $ips | Where-Object { $_ -like '*.*' }
        $ip4CustomObjects = @()
        if ($endpointSet.category -in ("Allow", "Optimize")) {
            $ip4CustomObjects = $ip4s | ForEach-Object {
                [PSCustomObject]@{
                    category = $endpointSet.category;
                    ip = $_;
                    tcpPorts = $endpointSet.tcpPorts;
                    udpPorts = $endpointSet.udpPorts;
                }
            }
        }
        $ip4CustomObjects
    }
    # IPv6 results
    $flatIp6s = $endpointSets | ForEach-Object {
        $endpointSet = $_
        $ips = $(if ($endpointSet.ips.Count -gt 0) { $endpointSet.ips } else { @() })
        # IPv6 strings contain colons
        $ip6s = $ips | Where-Object { $_ -like '*:*' }
        $ip6CustomObjects = @()
        if ($endpointSet.category -in ("Optimize")) {
            $ip6CustomObjects = $ip6s | ForEach-Object {
                [PSCustomObject]@{
                    category = $endpointSet.category;
                    ip = $_;
                    tcpPorts = $endpointSet.tcpPorts;
                    udpPorts = $endpointSet.udpPorts;
                }
            }
        }
        $ip6CustomObjects
    }

    # write output to screen
    Write-Output ("Client Request ID: " + $clientRequestId)
    Write-Output ("Last Version: " + $lastVersion)
    Write-Output ("New Version: " + $version.latest)
    Write-Output ""
    Write-Output "IPv4 Firewall IP Address Ranges"
    ($flatIp4s.ip | Sort-Object -Unique) -join "," | Out-String
    Write-Output "IPv6 Firewall IP Address Ranges"
    ($flatIp6s.ip | Sort-Object -Unique) -join "," | Out-String
    Write-Output "URLs for Proxy Server"
    ($flatUrls.url | Sort-Object -Unique) -join "," | Out-String
    Write-Output ("IP and URL data written to " + $datapath)

    # write output to data file
    Write-Output "Microsoft 365 IP and UL Web Service data" | Out-File $datapath
    Write-Output "Worldwide instance" | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output ("Version: " + $version.latest) | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output "IPv4 Firewall IP Address Ranges" | Out-File $datapath -Append
    ($flatIp4s.ip | Sort-Object -Unique) -join "," | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output "IPv6 Firewall IP Address Ranges" | Out-File $datapath -Append
    ($flatIp6s.ip | Sort-Object -Unique) -join "," | Out-File $datapath -Append
    Write-Output "" | Out-File $datapath -Append
    Write-Output "URLs for Proxy Server" | Out-File $datapath -Append
    ($flatUrls.url | Sort-Object -Unique) -join "," | Out-File $datapath -Append
}
else {
    Write-Host "Microsoft 365 worldwide commercial service instance endpoints are up-to-date."
}

Python-Beispielskript

Hier sehen Sie ein Python-Skript, das mit Python 3.6.3 auf Windows 10 getestet wurde und das Sie ausführen können, um zu sehen, ob Aktionen vorhanden sind, die Sie für aktualisierte Daten ausführen müssen. Dieses Skript überprüft die Versionsnummer für die Microsoft 365 Worldwide instance-Endpunkte. Wenn eine Änderung vorgenommen wird, werden die Endpunkte und Filter für die Endpunkte der Kategorie Zulassen und Optimieren heruntergeladen. Es verwendet auch eine eindeutige ClientRequestId für mehrere Aufrufe und speichert die neueste Version in einer temporären Datei. Rufen Sie dieses Skript einmal pro Stunde auf, um auf eine Versionsaktualisierung zu prüfen.

import json
import tempfile
from pathlib import Path
import urllib.request
import uuid
# helper to call the webservice and parse the response
def webApiGet(methodName, instanceName, clientRequestId):
    ws = "https://endpoints.office.com"
    requestPath = ws + '/' + methodName + '/' + instanceName + '?clientRequestId=' + clientRequestId
    request = urllib.request.Request(requestPath)
    with urllib.request.urlopen(request) as response:
        return json.loads(response.read().decode())
# path where client ID and latest version number will be stored
datapath = Path(tempfile.gettempdir() + '/endpoints_clientid_latestversion.txt')
# fetch client ID and version if data exists; otherwise create new file
if datapath.exists():
    with open(datapath, 'r') as fin:
        clientRequestId = fin.readline().strip()
        latestVersion = fin.readline().strip()
else:
    clientRequestId = str(uuid.uuid4())
    latestVersion = '0000000000'
    with open(datapath, 'w') as fout:
        fout.write(clientRequestId + '\n' + latestVersion)
# call version method to check the latest version, and pull new data if version number is different
version = webApiGet('version', 'Worldwide', clientRequestId)
if version['latest'] > latestVersion:
    print('New version of Microsoft 365 worldwide commercial service instance endpoints detected')
    # write the new version number to the data file
    with open(datapath, 'w') as fout:
        fout.write(clientRequestId + '\n' + version['latest'])
    # invoke endpoints method to get the new data
    endpointSets = webApiGet('endpoints', 'Worldwide', clientRequestId)
    # filter results for Allow and Optimize endpoints, and transform these into tuples with port and category
    flatUrls = []
    for endpointSet in endpointSets:
        if endpointSet['category'] in ('Optimize', 'Allow'):
            category = endpointSet['category']
            urls = endpointSet['urls'] if 'urls' in endpointSet else []
            tcpPorts = endpointSet['tcpPorts'] if 'tcpPorts' in endpointSet else ''
            udpPorts = endpointSet['udpPorts'] if 'udpPorts' in endpointSet else ''
            flatUrls.extend([(category, url, tcpPorts, udpPorts) for url in urls])
    flatIps = []
    for endpointSet in endpointSets:
        if endpointSet['category'] in ('Optimize', 'Allow'):
            ips = endpointSet['ips'] if 'ips' in endpointSet else []
            category = endpointSet['category']
            # IPv4 strings have dots while IPv6 strings have colons
            ip4s = [ip for ip in ips if '.' in ip]
            tcpPorts = endpointSet['tcpPorts'] if 'tcpPorts' in endpointSet else ''
            udpPorts = endpointSet['udpPorts'] if 'udpPorts' in endpointSet else ''
            flatIps.extend([(category, ip, tcpPorts, udpPorts) for ip in ip4s])
    print('IPv4 Firewall IP Address Ranges')
    print(','.join(sorted(set([ip for (category, ip, tcpPorts, udpPorts) in flatIps]))))
    print('URLs for Proxy Server')
    print(','.join(sorted(set([url for (category, url, tcpPorts, udpPorts) in flatUrls]))))

    # TODO send mail (e.g. with smtplib/email modules) with new endpoints data
else:
    print('Microsoft 365 worldwide commercial service instance endpoints are up-to-date')

Versionsverwaltung der Webdienstschnittstelle

Möglicherweise sind Updates für die Parameter oder Ergebnisse für diese Webdienstmethoden zukünftig erforderlich. Nach der Veröffentlichung der allgemein verfügbaren Version dieser Webdienste wird Microsoft angemessene Anstrengungen unternehmen, um die Aktualisierung des Webdiensts im Voraus anzukündigen. Wenn Microsoft der Auffassung ist, dass für ein Update Änderungen an Clients nötig sind, die den Webdienst verwenden, wird Microsoft die vorherige Version (um eine Version älter) des Webdienstes für mindestens 12 Monate nach der Veröffentlichung der neuen Version verfügbar halten. Kunden, die in diesem Zeitraum kein Upgrade durchführen, können möglicherweise nicht auf den Webdienst und seine Methoden zugreifen. Kunden müssen sicherstellen, dass die Clients des Webdiensts fehlerfrei weiterarbeiten, wenn die folgenden Änderungen an der Signatur der Webdienstschnittstelle vorgenommen werden:

  • Hinzufügen eines neuen optionalen Parameters zu einer vorhandenen Webmethode, die nicht notwendigerweise von älteren Clients bereitgestellt werden muss und das Ergebnis nicht beeinträchtigt, das ein älterer Client erhält.
  • Hinzufügen eines neuen benannten Attributs zu einem der REST-Antwortelemente oder zu anderen Spalten zur Antwort-CSV.
  • Hinzufügen einer neuen Webmethode mit einem neuen Namen, der nicht von den älteren Clients aufgerufen wird.

Updatebenachrichtigungen

Sie können einige unterschiedliche Methoden nutzen, um E-Mail-Benachrichtigungen zu erhalten, wenn Änderungen an den IP-Adressen und URLs im Webdienst veröffentlicht werden.

Exportieren einer Proxy-PAC-Datei

Get-PacFile ist ein PowerShell-Skript , das die neuesten Netzwerkendpunkte aus dem Microsoft 365-IP-Adress- und URL-Webdienst liest und eine PAC-Beispieldatei erstellt. Informationen zur Verwendung von Get-PacFile finden Sie unter Verwenden einer PAC-Datei für das direkte Routing wichtiger Microsoft 365-Datenverkehr.

Microsoft 365-URLs und-IP-Adressbereiche

Verwalten von Microsoft 365-Endpunkten

Prinzipien von Microsoft 365-Netzwerkverbindungen

Microsoft 365-Netzwerk- und Leistungsoptimierung

Bewerten der Microsoft 365-Netzwerkkonnektivität

Medienqualität und Netzwerkverbindungsleistung in Skype for Business Online

Optimieren Ihres Netzwerks für Skype for Business Online

Microsoft 365-Leistungsoptimierung mithilfe von Baselines und Leistungsverlauf

Leistungsproblembehandlungsplan für Microsoft 365