Microsoft 365 IP-adres en URL-webservice

De Microsoft 365 IP-adres- en URL-webservice helpt u bij het beter identificeren en onderscheiden van Microsoft 365-netwerkverkeer, zodat u gemakkelijker wijzigingen kunt evalueren, configureren en bijwerken. Met deze REST-webservice worden eerdere downloadbare XML-bestanden die op 2 oktober 2018 werden geïmplementeerd vervangen.

Als klant of leverancier van netwerkperimeterapparaten kunt u bouwen op basis van de webservice voor Ip-adres- en FQDN-vermeldingen van Microsoft 365. U kunt de gegevens rechtstreeks in een webbrowser openen met behulp van de volgende URL's:

Als klant kunt u deze webservice gebruiken voor:

  • Werk uw PowerShell-scripts bij om Microsoft 365-eindpuntgegevens te verkrijgen en de opmaak voor uw netwerkapparaten te wijzigen.
  • Gebruik deze informatie voor het bijwerken van PAC-bestanden die voor clientcomputers zijn geïmplementeerd.

Als leverancier van netwerkperimeterapparaten kunt u deze webservice gebruiken voor:

  • Het maken en testen van apparaatsoftware om de lijst voor geautomatiseerde configuratie te downloaden.
  • Het controleren van de huidige versie.
  • Het ophalen van de huidige wijzigingen.

Opmerking

Als u Azure ExpressRoute gebruikt om verbinding te maken met Microsoft 365, raadpleegt u Azure ExpressRoute voor Microsoft 365 om vertrouwd te raken met de Microsoft 365-services die worden ondersteund via Azure ExpressRoute. Lees ook het artikel Microsoft 365-URL's en IP-adresbereiken om te begrijpen welke netwerkaanvragen voor Microsoft 365-toepassingen een internetverbinding vereisen. Hiermee kunt u het beveiligingsapparaat voor een perimeternetwerk beter configureren.

Zie voor meer informatie:

Veelgebruikte parameters

De volgende parameters worden veel gebruikt in alle webservicemethoden:

  • format=<JSON | CSV> : de geretourneerde gegevensindeling is standaard JSON. Gebruik deze optionele parameter als u de gegevens in een indeling met door komma's gescheiden waarden wilt hebben.

  • ClientRequestId=<guid> : een vereiste GUID die u genereert voor clientkoppeling. Genereer een unieke GUID voor elke computer waarmee de webservice wordt aangeroepen (de scripts op deze pagina genereren een GUID voor u). Gebruik niet de GUID's die in de volgende voorbeelden worden weergegeven, omdat deze in de toekomst mogelijk worden geblokkeerd door de webservice. De indeling van de GUID is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, waarin de x voor een hexadecimaal getal staat.

    Als u een GUID wilt genereren, kunt u gebruikmaken van de opdracht New-GUID PowerShell of een online service zoals Online GUID Generator.

Versiewebmethode

Microsoft werkt de IP-adres- en FQDN-vermeldingen van Microsoft aan het begin van elke maand bij. Er worden soms out-of-band updates gepubliceerd vanwege ondersteuningsincidenten, beveiligingsupdates of andere operationele vereisten.

Aan de gegevens voor elk gepubliceerd exemplaar wordt een versienummer toegewezen en met de versiewebmethode kunt u controleren op de nieuwste versie van elk Microsoft 365-service-exemplaar. U wordt aangeraden de versie niet meer dan één keer per uur te controleren.

Parameters voor de versiewebmethode zijn:

  • AllVersions=<true | false> : standaard is de geretourneerde versie de meest recente. Neem deze optionele parameter op om alle gepubliceerde versies aan te vragen sinds de webservice voor het eerst werd uitgebracht.
  • Notatie=<JSON | CSV | RSS> : naast de JSON- en CSV-indelingen ondersteunt de versiewebmethode ook RSS. U kunt deze optionele parameter combineren met de parameter AllVersions=true om een RSS-feed aan te vragen die kan worden gebruikt met Outlook of andere RSS-lezers.
  • Exemplaar=<Wereldwijd | China | USGovDoD | USGovGCCHigh> : deze optionele parameter geeft het exemplaar op waarvoor de versie moet worden geretourneerd. Indien niet gebruikt, worden alle exemplaren geretourneerd. Geldige exemplaren zijn: wereldwijd, China, USGovDoD en USGovGCCHigh.

De versiewebmethode is niet beperkt tot de snelheid en retourneert nooit 429 HTTP-antwoordcodes. Het antwoord op de versiewebmethode omvat een cache-besturingselementindeling die het in de cache opslaan van de gegevens voor 1 uur aanbeveelt. Het resultaat van de versiewebmethode kan één record zijn of een matrix van records. De elementen van elke record zijn:

  • exemplaar: de korte naam van het Microsoft 365-service-exemplaar.
  • latest: de nieuwste versie voor eindpunten van het opgegeven exemplaar.
  • versions: een lijst met alle vorige versies voor het opgegeven exemplaar. Dit element is alleen opgenomen als de parameter AllVersions waar is.

Voorbeelden versiewebmethode

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

Deze URI retourneert de nieuwste versie van elk Microsoft 365-service-exemplaar. Resultaat van voorbeeld:

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

Belangrijk

De GUID voor de parameter ClientRequestID in deze URI's is slechts een voorbeeld. Genereer uw eigen GUID als u de URI's voor de webservice wilt uitproberen. De in deze voorbeelden getoonde GUID's kunnen in de toekomst door de webservice worden geblokkeerd.

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

Deze URI retourneert de nieuwste versie van het opgegeven Microsoft 365-service-exemplaar. Resultaat van voorbeeld:

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

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

Met deze URI wordt de uitvoer in een CSV-indeling getoond. Resultaat van voorbeeld:

instance,latest
Worldwide,2018063000

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

Deze URI toont alle eerdere versies die zijn gepubliceerd voor het wereldwijde service-exemplaar van Microsoft 365. Resultaat van voorbeeld:

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

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

Met deze URI wordt een RSS-feed weergegeven van de gepubliceerde versies die koppelingen bevatten naar de lijst met wijzigingen voor elke versie. Resultaat van voorbeeld:

<?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>

Eindpuntenwebmethode

De eindpuntenwebmethode retourneert alle records voor IP-adresbereiken en URL's waaruit de Microsoft 365-service bestaat. De meest recente gegevens uit de eindpuntenwebmethode moeten altijd worden gebruikt voor de configuratie van netwerkapparaten. Microsoft biedt 30 dagen voorafgaande kennisgeving voor het publiceren van nieuwe toevoegingen om u tijd te geven om toegangsbeheerlijsten en bypasslijsten van de proxyserver bij te werken. U wordt aangeraden de eindpuntenwebmethode pas opnieuw aan te roepen wanneer de versiewebmethode aangeeft dat er een nieuwe versie van de gegevens beschikbaar is.

Parameters voor de eindpuntenwebmethode zijn:

  • ServiceAreas=<Algemeen | Exchange | SharePoint | Skype> : een door komma's gescheiden lijst met servicegebieden. Geldige items zijn Common, Exchange, SharePoint en Skype. Omdat Common-servicegebieditems een vereiste zijn voor alle overige servicegebieden, is dit item altijd in de webservice opgenomen. Als u deze parameter niet opneemt, worden alle servicegebieden geretourneerd.
  • TenantName=<tenant_name> : de naam van uw Microsoft 365-tenant. De webservice gebruikt de opgegeven naam en voegt deze in delen van URL's in waarin de naam van de tenant is opgenomen. Als u geen tenantnaam opgeeft, hebben die delen van URL's het jokerteken (*).
  • NoIPv6=<true | false> : stel de waarde in op true om IPv6-adressen uit te sluiten van de uitvoer als u IPv6 niet gebruikt in uw netwerk.
  • Exemplaar=<Wereldwijd | China | USGovDoD | USGovGCCHigh> : deze vereiste parameter geeft het exemplaar op van waaruit de eindpunten moeten worden geretourneerd. Geldige exemplaren zijn: wereldwijd, China, USGovDoD en USGovGCCHigh.

Als u de eindpuntenwebmethode te vaak oproept van hetzelfde IP-adres van de client, ontvangt u mogelijk de HTTP-antwoordcode 429 (te veel aanvragen). Als u deze antwoordcode krijgt, wacht u 1 uur voordat u de aanvraag herhaalt of genereert u een nieuwe GUID voor de aanvraag. Over het algemeen kunt u het beste de eindpuntenwebmethode pas opnieuw aanroepen wanneer de versiewebmethode aangeeft dat er een nieuwe versie van de gegevens beschikbaar is.

Het resultaat van de eindpuntenwebmethode bestaat uit een matrix met records, waarbij elke record een specifieke eindpuntenset voorstelt. De elementen van elke record zijn:

  • id: het onveranderbare id-nummer van de eindpuntset.
  • serviceArea: het servicegebied dat deel uitmaakt van: Common, Exchange, SharePoint of Skype.
  • urls: URL's voor de eindpuntenset. Een JSON-matrix van DNS-records. Dit argument wordt weggelaten indien leeg.
  • tcpPorts: TCP-poorten voor de eindpuntenset. Alle poortelementen worden ingedeeld als een door komma's gescheiden lijst met poorten of poortbereiken die door een streepje (-) worden gescheiden. Poorten zijn van toepassing op alle IP-adressen en alle URL's in die eindpuntenset voor een bepaalde categorie. Dit argument wordt weggelaten indien leeg.
  • udpPorts: UDP-poorten voor de IP-adresbereiken in deze eindpuntenset. Dit argument wordt weggelaten indien leeg.
  • ips: de IP-adresbereiken die zijn gekoppeld aan deze eindpuntenset die zijn gekoppeld aan de vermelde TCP- of UDP-poorten. Een JSON-matrix met IP-adresbereiken. Dit argument wordt weggelaten indien leeg.
  • categorie: de connectiviteitscategorie voor de eindpuntenset. Geldige waarden zijn Optimaliseren, Toestaan en Standaard. Als u in de uitvoer van de webmethode eindpunten zoekt naar de categorie van een specifiek IP-adres of een specifieke URL, is het mogelijk dat uw query meerdere categorieën retourneert. Volg in dat geval de aanbeveling voor de categorie met de hoogste prioriteit. Als het eindpunt bijvoorbeeld wordt weergegeven in zowel Optimaliseren als Toestaan, volgt u de vereisten voor Optimaliseren. Vereist.
  • expressRoute — True als deze eindpuntenset via ExpressRoute wordt gerouteerd, False als dit niet het geval is.
  • vereist: waar als deze eindpuntenset connectiviteit vereist voor Microsoft 365 om te worden ondersteund. False als deze eindpunt serie optioneel is.
  • notities: voor optionele eindpunten wordt in deze tekst de functionaliteit van Microsoft 365 beschreven die niet beschikbaar zou zijn als IP-adressen of URL's in deze eindpuntenset niet toegankelijk zijn op de netwerklaag. Dit argument wordt weggelaten indien leeg.

Voorbeelden eindpuntenwebmethode

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

Deze URI verkrijgt alle eindpunten voor het wereldwijde exemplaar van Microsoft 365 voor alle workloads. Voorbeeldresultaat dat een fragment van de uitvoer toont:

[
 {
  "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"
   ],

De volledige uitvoer van de aanvraag in dit voorbeeld bevat andere eindpuntensets.

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

In dit voorbeeld worden alleen eindpunten opgehaald voor het Microsoft 365 Worldwide-exemplaar voor Exchange Online en afhankelijkheden.

De uitvoer, bijvoorbeeld 2, is vergelijkbaar met voorbeeld 1, behalve dat de resultaten geen eindpunten voor SharePoint of Skype voor Bedrijven Online bevatten.

Wijzigingenwebmethode

Met de wijzigingenwebmethode worden de meest recente updates die zijn gepubliceerd, geretourneerd. Dit zijn gewoonlijk de wijzigingen aan IP-adresbereiken en URL's van de vorige maand.

De belangrijkste wijzigingen in de gegevens van eindpunten zijn nieuwe URL's en IP-adressen. Het niet toevoegen van een IP-adres aan een lijst met toegangsbeheer voor firewalls of een URL naar een proxyserver omzeilingslijst kan leiden tot een storing voor Microsoft 365-gebruikers achter dat netwerkapparaat. Niettegenstaande operationele vereisten worden nieuwe eindpunten op de webservice gepubliceerd 30 dagen voor de datum waarop de eindpunten zijn ingericht voor gebruik, zodat u tijd hebt om toegangsbeheerlijsten en bypasslijsten voor proxyservers over te slaan.

De vereiste parameter voor de wijzigingenwebmethode is:

  • Versie=<JJJJMMDDNN:> vereiste URL-routeparameter. Deze waarde is de versie die u momenteel hebt geïmplementeerd. De webservice retourneert de wijzigingen sinds die versie. De indeling is JJJJMMDDNN, waarbij NN een natuurlijk getal is, dat is verhoogd als er meerdere versies op één dag moeten worden gepubliceerd en 00 de eerste update voor een bepaalde dag voorstelt. Voor de webservice moet de versieparameter precies 10 cijfers bevatten.

De wijzigingenwebmethode is op dezelfde manier beperkt als de eindpuntenwebmethode. Als u een 429 HTTP-antwoordcode krijgt, wacht u 1 uur voordat u de aanvraag herhaalt of genereert u een nieuwe GUID voor de aanvraag.

Het resultaat van de wijzigingenwebmethode is een matrix met records, waarbij elke record een wijziging voorstelt in een bepaalde versie van de eindpunten. De elementen van elke record zijn:

  • id: de onveranderlijke id van de wijzigingsrecord.
  • eindpuntSetId: de id van de record van de eindpuntenset die is gewijzigd.
  • disposition: beschrijft wat de wijziging heeft gedaan in de record van de eindpuntenset. Waarden zijn wijzigen, toevoegen of verwijderen.
  • impact: niet alle wijzigingen zijn even belangrijk voor elke omgeving. Dit element beschrijft de verwachte uitwerking op een perimeteromgeving van een bedrijfsnetwerk als gevolg van deze wijziging. Dit element wordt alleen opgenomen in de wijzigingsrecords van versie 2018112800 en hoger. Opties voor de impact zijn: - AddedIp: een IP-adres is toegevoegd aan Microsoft 365 en is binnenkort live in de service. Dit is een wijziging die u moet uitvoeren op een firewall of een ander laag 3-netwerkperimeterapparaat. Als u dit niet toevoegt voordat we het gaan gebruiken, kan er een storing optreden. — AddedUrl: er is een URL toegevoegd aan Microsoft 365 en deze is binnenkort live op de service. Dit is een wijziging die u moet uitvoeren op een proxyserver of een netwerkperimeterapparaat dat de URL parseert. Als u deze URL niet toevoegt voordat we deze gaan gebruiken, kan er een storing optreden. AddedIpAndUrl: zowel een IP-adres als een URL zijn toegevoegd. Dit is een wijziging die u moet uitvoeren op een apparaat met een laag 3-firewall of een proxyserver of apparaat dat URL parseert. Als u dit IP-/URL-paar niet toevoegt voordat we het gaan gebruiken, kan er een storing optreden. — RemovedIpOrUrl : ten minste één IP-adres of URL is verwijderd uit Microsoft 365. Verwijder de netwerkeindpunten van uw perimeterapparaten, maar er is geen deadline om dit te doen. — ChangedIsExpressRoute - Het ExpressRoute-ondersteuningskenmerk is gewijzigd. Als u ExpressRoute gebruikt, moet u mogelijk actie ondernemen afhankelijk van uw configuratie. — MovedIpOrUrl – We hebben een IP-adres of URL van deze eindpuntenset naar een andere verplaatst. Over het algemeen hoeft u geen actie te ondernemen. — RemovedDuplicateIpOrUrl: we hebben een dubbel IP-adres of een dubbele URL verwijderd, maar het is nog steeds gepubliceerd voor Microsoft 365. Over het algemeen hoeft u geen actie te ondernemen. — OtherNonPriorityChanges – We hebben iets gewijzigd dat minder belangrijk is dan alle andere opties, zoals de inhoud van een notitieveld.
  • version: de versie van de gepubliceerde eindpuntenset waarin de wijziging is geïntroduceerd. Versienummers hebben de indeling JJJJMMDDNN, waarbij NN een natuurlijk getal is, dat is verhoogd als er meerdere versies op één dag moeten worden gepubliceerd.
  • previous: een substructuur met eerdere waarden van gewijzigde elementen in de eindpuntenset. Dit wordt niet opgenomen voor nieuw toegevoegde eindpuntsets. Bevat ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts en notes.
  • current: een substructuur met bijgewerkte waarden van wijzigingenelementen in de eindpuntenset. Bevat ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts en notes.
  • add: een substructuur waarin items worden beschreven die moeten worden toegevoegd aan verzamelingen met eindpuntensets. Wordt weggelaten als er geen toevoegingen zijn. effectiveDate: definieert de gegevens wanneer de toevoegingen live in de service worden gebruikt. ips: items die moeten worden toegevoegd aan de ips-matrix. — urls- Toe te voegen items aan de URL‘s-matrix.
  • remove: een substructuur waarin items worden beschreven die moeten worden verwijderd uit de eindpuntenset. Wordt weggelaten als er geen verwijderingen zijn. ips: items die moeten worden verwijderd uit de ips-matrix. — urls- Items die uit de URL‘s-matrix moeten worden verwijderd.

Wijzigingen voorbeelden webmethode

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

Hiermee worden alle eerdere wijzigingen in het wereldwijde service-exemplaar van Microsoft 365 aangevraagd. Resultaat van voorbeeld:

[
 {
  "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":
     [

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

Hiermee worden wijzigingen aangevraagd sinds de opgegeven versie van het Microsoft 365 Worldwide-exemplaar. In dit geval is de versie die is opgegeven de nieuwste versie. Resultaat van voorbeeld:

[
  {
    "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"]
    }
  }
]

Voorbeeld van PowerShell-script

U kunt dit PowerShell-script uitvoeren om te zien of er acties zijn die u moet ondernemen voor bijgewerkte gegevens. U kunt dit script uitvoeren als een geplande taak om te controleren of er een versie-update is. Om te voorkomen dat de webservice te zwaar belast wordt, dient u het script niet meer dan één keer per uur uit te voeren.

Het script doet het volgende:

  • Controleert het versienummer van de huidige Eindpunten van microsoft 365 Worldwide-exemplaren door de REST API van de webservice aan te roepen.

  • Hiermee wordt gecontroleerd op een huidig versiebestand via $Env:TEMP\O365_endpoints_latestversion.txt. Het pad van de globale variabele $Env:TEMP is meestal C:\Users\<username>\AppData\Local\Temp.

  • Als dit de eerste keer is dat het script wordt uitgevoerd, geeft het script de huidige versie en alle huidige IP-adressen en URL's als resultaat, schrijft het de eindpuntenversie naar het bestand $Env: TEMP \ O365_endpoints_latestversion. txt en de gegevensuitvoer van de eindpunten naar het bestand $Env: TEMP \ O365_endpoints_data. txt. U kunt het pad en/of de naam van het uitvoerbestand wijzigen door deze regels te bewerken:

    $versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
    $datapath = $Env:TEMP + "\O365_endpoints_data.txt"
    
  • Wanneer de nieuwste webserviceversie identiek is aan de versie in het bestand O365_endpoints_latestversion. txt, wordt het script bij elke daaropvolgende uitvoering van het script afgesloten zonder enige wijzigingen door te voeren.

  • Wanneer de nieuwste versie van de webservice nieuwer is dan de versie in het bestand O365_endpoints_latestversion.txt, retourneert het script de eindpunten en filters voor de eindpunten in de categorie Toestaan en Optimaliseren, wordt de versie bijgewerkt in het bestand O365_endpoints_latestversion.txt en worden de bijgewerkte gegevens naar het bestand O365_endpoints_data.txt geschreven.

Het script genereert een unieke ClientRequestId voor de computer waarop het wordt uitgevoerd en gebruikt deze id voor meerdere aanroepen. Deze ID wordt opgeslagen in het bestand O365_endpoints_latestversion. txt.

Het PowerShell-script uitvoeren

  1. Kopieer het script en sla het op uw lokale harde schijf of in een scriptlocatie op als Get-O365WebServiceUpdates.ps1.

  2. Voer het script uit in de gewenste scripteditor, zoals de PowerShell ISE of VS Code of met een PowerShell-console, met de volgende opdracht:

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

    Er zijn geen parameters die moeten worden doorgegeven aan het script.

<# 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."
}

Voorbeeld van Python-script

Hier volgt een Python-script, getest met Python 3.6.3 op Windows 10, dat u kunt uitvoeren om te zien of er acties zijn die u moet uitvoeren voor bijgewerkte gegevens. Met dit script wordt het versienummer gecontroleerd voor de eindpunten van het Microsoft 365 Worldwide-exemplaar. Wanneer er een wijziging is, worden de eindpunten en filters voor de categorie-eindpunten toestaan en optimaliseren gedownload. Er wordt ook een unieke ClientRequestId gebruikt voor meerdere aanroepen en wordt de nieuwste versie in een tijdelijk bestand opgeslagen. Roep dit script één keer per uur aan om te controleren op een versie-update.

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

Versiebeheer van webservice-interface

In de toekomst zijn mogelijk updates van de parameters of resultaten van deze webservicemethoden vereist. Nadat de versie voor algemene beschikbaarheid van deze webservices is gepubliceerd, zal Microsoft redelijke inspanningen betrachten om u vooraf op de hoogte te stellen van materiële updates van de webservice. Indien Microsoft van mening is dat een update wijzigingen aan clients noodzakelijk maakt met behulp van de webservice, blijft de vorige versie van de webservice beschikbaar gedurende ten minste 12 maanden na de uitgifte van de nieuwe versie. Klanten die gedurende die tijd geen upgrade uitvoeren, hebben mogelijk geen toegang tot de webservice en de bijbehorende methoden. Klanten dienen zich ervoor te zorgen dat clients van de webservice foutloos blijven functioneren indien de volgende wijzigingen aan de handtekening van de webservice-interface worden aangebracht:

  • Het toevoegen van een nieuwe, optionele parameter aan een bestaande webmethode die niet hoeft te worden opgegeven door oudere clients en die geen invloed heeft op het resultaat dat een oudere client ontvangt.
  • Een nieuw benoemd kenmerk toevoegen in een van de antwoord-REST-items of andere kolommen aan het CSV-antwoord.
  • Een nieuwe webmethode toevoegen met een nieuwe naam die niet wordt aangeroepen door de oudere clients.

Updatemeldingen

U kunt een paar verschillende methoden gebruiken om e-mailmeldingen te ontvangen wanneer er wijzigingen in de IP-adressen en URL's worden gepubliceerd op de webservice.

Een PAC-bestand voor een proxy exporteren

Get-PacFile is een PowerShell-script waarmee de meest recente netwerkeindpunten van de Microsoft 365 IP-adres- en URL-webservice worden gelezen en een pac-voorbeeldbestand wordt gemaakt. Zie Een PAC-bestand gebruiken voor directe routering van belangrijk Microsoft 365-verkeer voor meer informatie over het gebruik van Get-PacFile.

Microsoft 365-URL's en IP-adresbereiken

Microsoft 365-eindpunten beheren

Microsoft 365-netwerkconnectiviteitsprincipes

Microsoft 365-netwerk en prestaties afstemmen

Microsoft 365-netwerkverbindingen evalueren

Mediakwaliteit en prestaties van de netwerkverbinding in Skype voor Bedrijven Online

Uw netwerk instellen voor Skype voor Bedrijven Online

Microsoft 365-prestaties afstemmen met basislijnen en prestatiegeschiedenis

Plan voor het oplossen van problemen met prestaties voor Microsoft 365