Service web d’adresse IP et d’URL Microsoft 365
Le service web d’adresse IP et d’URL Microsoft 365 vous aide à mieux identifier et différencier le trafic réseau Microsoft 365, ce qui vous permet d’évaluer, de configurer et de rester informé des modifications. Ce service Web basé sur REST remplace les anciens fichiers XML téléchargés, qui ont été supprimés le 2 octobre 2018.
En tant que client ou fournisseur d’appareils de périmètre réseau, vous pouvez créer sur le service web des entrées d’adresse IP et de nom de domaine complet Microsoft 365. Vous pouvez accéder aux données directement dans un navigateur Web à l’aide des URL suivantes :
- Pour la dernière version des URL microsoft 365 et des plages d’adresses IP, utilisez https://endpoints.office.com/version.
- Pour les données de la page URL et plages d’adresses IP Microsoft 365 pour les pare-feu et les serveurs proxy, utilisez https://endpoints.office.com/endpoints/worldwide.
- Pour obtenir les dernières modifications depuis juillet 2018, date de première mise à disposition du service web, utilisez https://endpoints.office.com/changes/worldwide/0000000000.
En tant que client, vous pouvez utiliser ce service web pour :
- Mettez à jour vos scripts PowerShell pour obtenir des données de point de terminaison Microsoft 365 et modifier toute mise en forme pour vos appareils réseau.
- utiliser ces informations pour mettre à jour des fichiers PAC déployés sur des ordinateurs clients.
En tant que fournisseur de périphérique de périmètre réseau, vous pouvez utiliser ce service web pour :
- créer et tester le logiciel du périphérique pour télécharger la liste pour une configuration automatisée ;
- rechercher la version actuelle ;
- obtenir les modifications actuelles.
Remarque
Si vous utilisez Azure ExpressRoute pour vous connecter à Microsoft 365, consultez Azure ExpressRoute pour Microsoft 365 pour vous familiariser avec les services Microsoft 365 pris en charge sur Azure ExpressRoute. Consultez également l’article URL Microsoft 365 et plages d’adresses IP pour comprendre quelles demandes réseau pour les applications Microsoft 365 nécessitent une connectivité Internet. Cette opération permet de mieux configurer vos périphériques de sécurité de périmètre.
Pour plus d’informations, voir :
- Annonce du billet de blog dans le Forum de la communauté technique Office 365
- Forum de la communauté technique Office 365 pour les questions sur l’utilisation des services web
Paramètres communs
Ces paramètres sont communs à toutes les méthodes de service web :
format=<JSON | CSV> : par défaut, le format de données retourné est JSON. Utilisez ce paramètre facultatif pour renvoyer les données au format de valeurs séparées par des virgules (CSV).
ClientRequestId=<guid> : GUID requis que vous générez pour l’association de clients. Générer un GUID unique pour chaque ordinateur appelant le service Web (les scripts inclus sur cette page génèrent un GUID pour vous). N’utilisez pas les GUID indiqués dans les exemples suivants, car ils peuvent être bloqués par le service web à l’avenir. Format GUID est xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, où x représente un nombre hexadécimal.
Pour générer un GUID, vous pouvez utiliser la commande PowerShell New-GUID ou utiliser un service en ligne tel que générateur de GUID en ligne.
Méthode web version
Microsoft met à jour les entrées d’adresse IP et de nom de domaine complet Microsoft 365 au début de chaque mois. Les mises à jour hors bande sont parfois publiées en raison de problèmes de support, de mises à jour de sécurité ou d’autres exigences opérationnelles.
Un numéro de version est attribué aux données de chaque instance publiée, et la méthode web version vous permet de rechercher la dernière version de chaque instance de service Microsoft 365. Nous vous recommandons de ne pas vérifier la version plus d’une fois par heure.
Les paramètres pour la méthode web de version sont :
- AllVersions=<true | false> : par défaut, la version retournée est la plus récente. Inclure ce paramètre facultatif pour demander toutes les versions publiées depuis que le service web a été publié.
- Format=<JSON | CSV | RSS> : en plus des formats JSON et CSV, la méthode web de version prend également en charge RSS. Vous pouvez utiliser ce paramètre facultatif conjointement avec le paramètre AllVersions = true pour demander un flux RSS qui peut être utilisé avec Outlook ou d’autres lecteurs de RSS.
- Instance=<Dans le monde entier | Chine | USGovDoD | USGovGCCHigh> : ce paramètre facultatif spécifie l’instance pour laquelle retourner la version. Si cet argument est omis, toutes les instances sont renvoyées. Les instances valides sont : Worldwide, China, USGovDoD, USGovGCCHigh.
La méthode web de version n’est pas limitée au débit et ne retourne jamais les codes de réponse HTTP 429. La réponse à la méthode Web version inclut un en-tête de contrôle du cache qui recommande la mise en cache des données pendant 1 heure. Le résultat de la méthode web de version peut être un enregistrement unique ou un tableau d’enregistrements. Les éléments de chaque enregistrement sont :
- instance : nom court de l’instance de service Microsoft 365.
- dernière – dernière version pour les points de terminaison de l’instance spécifiée.
- versions – liste de toutes les versions précédentes pour l’instance spécifiée. Cet élément est inclus uniquement si le paramètre AllVersions est true.
Exemples de méthode web de version
Exemple 1 d’URI de requête : https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7
Cet URI retourne la dernière version de chaque instance de service Microsoft 365. Exemple de résultat :
[
{
"instance": "Worldwide",
"latest": "2018063000"
},
{
"instance": "USGovDoD",
"latest": "2018063000"
},
{
"instance": "USGovGCCHigh",
"latest": "2018063000"
},
{
"instance": "China",
"latest": "2018063000"
}
]
Importante
Le GUID du paramètre ClientRequestID dans ces URI n’est qu’un exemple. Pour essayer les URI du service web, générez votre propre GUID. Les GUID indiqués dans ces exemples peuvent être bloqués par le service web à l’avenir.
Exemple 2 d’URI de requête : https://endpoints.office.com/version/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7
Cet URI retourne la dernière version de l’instance de service Microsoft 365 spécifiée. Exemple de résultat :
{
"instance": "Worldwide",
"latest": "2018063000"
}
Exemple 3 d’URI de requête : https://endpoints.office.com/version/Worldwide?Format=CSV&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7
Cet URI affiche la sortie au format CSV. Exemple de résultat :
instance,latest
Worldwide,2018063000
Exemple 4 d’URI de requête : https://endpoints.office.com/version/Worldwide?AllVersions=true&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7
Cet URI affiche toutes les versions antérieures qui ont été publiées pour l’instance de service microsoft 365 dans le monde entier. Exemple de résultat :
{
"instance": "Worldwide",
"latest": "2018063000",
"versions": [
"2018063000",
"2018062000"
]
}
Exemple 5 d’URI de flux RSS : https://endpoints.office.com/version/worldwide?clientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7& allVersions=true&format=RSS
Cet URI affiche un flux RSS des versions publiées qui incluent des liens vers la liste des modifications pour chaque version. Exemple de résultat :
<?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>
Points de terminaison méthode web
La méthode web endpoints retourne tous les enregistrements pour les plages d’adresses IP et les URL qui composent le service Microsoft 365. Les données les plus récentes des points de terminaison de la méthode Web doivent toujours être utilisées pour la configuration des périphériques réseau. Microsoft fournit une notification préalable 30 jours avant la publication de nouveaux ajouts afin de vous laisser le temps de mettre à jour les listes de contrôle d’accès et les listes de contournement du serveur proxy. Nous vous recommandons de rappeler uniquement les points de terminaison méthode web uniquement lorsque la méthode web version indique qu’une nouvelle version des données est disponible.
Les paramètres pour les points de terminaison de la méthode web sont :
- ServiceAreas=<Commun | Exchange | SharePoint | >Skype : liste séparée par des virgules des zones de service. Éléments valides sont Common, Exchange, SharePoint, et Skype. Étant donné que les élémentsCommon de zone de service sont une condition préalable pour toutes les autres zones de service, le service web les inclura toujours. Si vous n’incluez pas ce paramètre, toutes les zones de service sont retournées.
- TenantName=<tenant_name> : nom de votre locataire Microsoft 365. Le service web prend votre nom fourni et l’insère en plusieurs parties d’URL qui incluent le nom de client. Si vous ne fournissez pas de nom de locataire, ces parties des URL ont le caractère générique (*).
- NoIPv6=<true | false> : définissez la valeur sur true pour exclure les adresses IPv6 de la sortie si vous n’utilisez pas IPv6 dans votre réseau.
- Instance=<Dans le monde entier | Chine | USGovDoD | USGovGCCHigh> : ce paramètre obligatoire spécifie l’instance à partir de laquelle retourner les points de terminaison. Les instances valides sont : Worldwide, China, USGovDoD et USGovGCCHigh.
Si vous appelez la méthode web points de terminaison un trop grand nombre de fois à partir de la même adresse IP du client, vous pouvez recevoir le code de réponse HTTP 429 (Trop de requêtes). Si vous recevez ce code de réponse, patientez 1 heure avant de renouveler votre demande, ou générez un nouveau GUID pour la demande. Nous recommandons de ne rappeler la méthode web points de terminaison uniquement lorsque la méthode web indique qu’une nouvelle version est disponible.
Le résultat de la méthode web de points de terminaison est un tableau d’enregistrements avec chaque enregistrement représentant un ensemble de points de terminaison spécifique. Les éléments pour chaque enregistrement sont :
- id – l’ID non modifiable de l’ensemble de points de terminaison.
- serviceArea – la zone de service dont il fait partie : Common, Exchange, SharePoint, ou Skype.
- URL – URL pour l’entité de point de terminaison. Tableau JSON d’enregistrements DNS. Omis si vide.
- tcpPorts – ports TCP pour l’entité de point de terminaison. Tous les éléments port sont mis en forme en tant que liste de ports séparés par des virgules ou plages de ports séparés par un tiret (-). Les ports s’appliquent à toutes les adresses IP et toutes les URL du point de terminaison défini pour une catégorie donnée. Omis si vide.
- udpPorts – ports UDP pour les plages d’adresses IP dans cet ensemble de points de terminaison. Omis si vide.
- ips – plages d’adresses IP associées à cet ensemble de points de terminaison tel qu’associées aux ports TCP ou UDP répertoriés. Un tableau JSON des plages d’adresses IP. Omis si vide.
- Catégorie – catégorie de connectivité pour l’entité de point de terminaison. Les valeurs valides sont : Optimiser, Autoriser, and Défaut. Si vous recherchez dans la sortie de la méthode web des points de terminaison la catégorie d’une adresse IP ou d’une URL spécifique, il est possible que votre requête retourne plusieurs catégories. Dans ce cas, suivez la recommandation pour la catégorie de priorité la plus élevée. Par exemple, si le point de terminaison apparaît dans les deux options optimiser et autoriser, vous devez respecter les conditions requises pour optimiser. Obligatoire.
- expressRoute : True si cet ensemble de points de terminaison est routé sur ExpressRoute, False si ce n’est pas le cas.
- required — True si cet ensemble de points de terminaison doit disposer d’une connectivité pour que Microsoft 365 soit pris en charge. False si cet ensemble de points de terminaison est facultatif.
- remarques : pour les points de terminaison facultatifs, ce texte décrit les fonctionnalités Microsoft 365 qui ne seraient pas disponibles si les adresses IP ou LES URL de cet ensemble de points de terminaison ne sont pas accessibles au niveau de la couche réseau. Omis si vide.
Exemples de méthodes web de points de terminaison
Exemple 1 d’URI de requête : https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7
Cet URI obtient tous les points de terminaison de l’instance mondiale Microsoft 365 pour toutes les charges de travail. Exemple de résultat montrant un extrait du résultat :
[
{
"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"
],
La sortie complète de la requête dans cet exemple contient d’autres jeux de points de terminaison.
Exemple 2 d’URI de requête : https://endpoints.office.com/endpoints/Worldwide?ServiceAreas=Exchange&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7
Cet exemple obtient des points de terminaison pour l’instance Microsoft 365 Worldwide pour Exchange Online et les dépendances uniquement.
La sortie, par exemple, 2 est similaire à l’exemple 1, sauf que les résultats n’incluent pas de points de terminaison pour SharePoint ou Skype pour Business Online.
Méthode web de modifications
La méthode Web modifications renvoie les mises à jour les plus récentes qui ont été publiées, généralement les modifications apportées au mois précédent en plages d’adresses IP et URL.
Les modifications les plus critiques apportées aux données de points de terminaison sont les nouvelles URL et les adresses IP. L’échec de l’ajout d’une adresse IP à une liste de contrôle d’accès de pare-feu ou à une URL vers une liste de contournement de serveur proxy peut entraîner une panne pour les utilisateurs Microsoft 365 derrière cet appareil réseau. Nonobstant les impératifs opérationnels, les nouveaux points de terminaison sont publiés sur le service Web 30 jours avant la date à laquelle les points de terminaison sont configurés pour vous laisser le temps de mettre à jour les listes de contrôle d’accès et les listes de contournement du serveur proxy.
Le paramètre requis pour la méthode web changes est le suivant :
- Version=<YYYYYMMDDNN> : paramètre d’itinéraire d’URL requis. Cette valeur est la version que vous avez implémentée actuellement. Le service web renvoie les modifications depuis cette version. Le format est JJNN/MM/AAAA, où NN est un nombre entier incrémenté si plusieurs versions doivent être publiées un même jour, 00 représentant la première mise à jour à la date concernée. Le service web exige que le paramètre version contienne exactement 10 chiffres.
La méthode web changes est limitée par le débit de la même manière que la méthode web endpoints. Si vous recevez ce code de réponse 429, patientez 1 heure avant de renouveler votre demande, ou générez un nouveau GUID pour la demande.
Le résultat de la méthode web modifications est un tableau d’enregistrements avec chaque enregistrement représentant une modification d’une version de points de terminaison spécifique. Les éléments pour chaque enregistrement sont :
- ID – ID non modifiable de l’enregistrement de la modification.
- endpointSetId – ID de l’enregistrement du point de terminaison qui est modifié.
- disposition – décrit les modifications apportées à l’enregistrement de point de terminaison. Les valeurs sont modifier, ajouter, or supprimer.
- impact – toutes les modifications ne sont pas aussi importantes pour tous les environnements. Cet élément décrit l’impact attendu sur l’environnement du périmètre d’un réseau d’entreprise en raison de cette modification. Cet élément est inclus uniquement dans les enregistrements de modification de la version 2018112800 et les versions ultérieures. Les options pour l’impact sont les suivantes :
- AddedIp : une adresse IP a été ajoutée à Microsoft 365 et sera bientôt disponible sur le service. Il s’agit d’un changement que vous devez apporter à un pare-feu ou à un autre périphérique de périmètre réseau couche 3. Si vous ne l’ajoutez pas avant que nous commencions à l’utiliser, vous risquez de rencontrer une panne.
- AddedUrl : une URL a été ajoutée à Microsoft 365 et sera bientôt disponible sur le service. Il s’agit d’un changement que vous devez apporter à un serveur proxy ou à un périphérique réseau d’analyse d’URL. Si vous n’ajoutez pas cette URL avant de commencer à l’utiliser, vous pouvez rencontrer une panne.
- AddedIpAndUrl : une adresse IP et une URL ont été ajoutées. Il s’agit d’un changement que vous devez apporter à un périphérique de périmètre réseau couche 3, un serveur proxy ou à un périphérique réseau d’analyse d’URL. Si vous n’ajoutez pas cette paire IP/URL avant de commencer à l’utiliser, vous pouvez rencontrer une panne.
- AddedSubstituteUrl : un nom de domaine complet précédemment non publié en raison d’un caractère générique est maintenant publié, car l’URL générique a été supprimée. Cette modification prend effet immédiatement.
- RemovedIpOrUrl : au moins une adresse IP ou UNE URL a été supprimée de Microsoft 365. Supprimez les points de terminaison réseau de vos appareils de périmètre, mais vous n’avez pas d’échéance pour le faire.
- ChangedIsExpressRoute : l’attribut de prise en charge d’ExpressRoute a été modifié. Si vous utilisez ExpressRoute, vous devrez peut-être agir en fonction de votre configuration.
- MovedIpOrUrl : nous avons déplacé une adresse IP ou une URL entre ce jeu de points de terminaison et un autre. En général, aucune action n’est requise.
- RemovedDuplicateIpOrUrl : nous avons supprimé une adresse IP ou une URL en double, mais elle est toujours publiée pour Microsoft 365. En général, aucune action n’est requise.
- OtherNonPriorityChanges : nous avons modifié quelque chose de moins critique que toutes les autres options, telles que le contenu d’un champ de note.
- version – version de l’entité de point de terminaison publiée dans laquelle la modification a été introduite. Le format des numéros de version est JJNN/MM/AAAA, où NN est un nombre entier incrémenté si plusieurs versions doivent être publiées un même jour.
- previous – sous-structure détaillant les valeurs précédentes des éléments modifiés sur le point de terminaison défini. Cela n’est pas inclus pour les jeux de points de terminaison nouvellement ajoutés. Inclut ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts et notes.
- current – une sous-structure détaillant les valeurs mises à jour des éléments de modifications dans l’ensemble des points de terminaison. Inclut ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts et notes.
- add – sous-structure détaillant les éléments à ajouter aux collections d’ensembles de points de terminaison. Omis s’il n’y a aucun ajout. – effectiveDate – définit les données lorsque les ajouts seront disponibles dans le service. – ips – éléments à ajouter au tableau d’adresses ips. — urls — éléments à ajouter au tableauurls.
- remove – sous-structure détaillant les éléments à supprimer de l’ensemble de points de terminaison. Omis si aucune suppression. – ips – éléments à supprimer du tableau d’adressesips. — urls — éléments à supprimer du tableauurls.
Exemples de méthode web de modifications
Exemple 1 d’URI de requête : https://endpoints.office.com/changes/worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7
Cela demande toutes les modifications précédentes apportées à l’instance de service microsoft 365 dans le monde entier. Exemple de résultat :
[
{
"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":
[
Exemple 2 d’URI de requête : https://endpoints.office.com/changes/worldwide/2018062700?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7
Cette demande est modifiée depuis la version spécifiée pour l’instance Microsoft 365 Worldwide. Dans ce cas, la version spécifiée est la dernière. Exemple de résultat :
[
{
"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"]
}
}
]
Exemple de Script PowerShell
Vous pouvez exécuter un script PowerShell pour voir s’il y a des actions à suivre pour les données mises à jour. Vous pouvez exécuter ce script sous la forme d’une tâche planifiée pour rechercher une mise à jour de la version. Pour éviter une charge excessive sur le service Web, essayez de ne pas exécuter le script plus d’une fois par heure.
Ce script effectue les opérations suivantes :
Vérifie le numéro de version des points de terminaison d’instance microsoft 365 mondial actuels en appelant l’API REST du service web.
Recherche un fichier de version actuelle sur $Env:TEMP\O365_endpoints_latestversion.txt. Le chemin de la variable globale $Env :TEMP est généralement C :\Users\<username>\AppData\Local\Temp.
S’il s’agit de la première fois que le script est exécuté, le script renvoie la version actuelle et toutes les adresses IP et URL actuelles, écrit la version des points de terminaison dans le fichier $Env:TEMP\O365_endpoints_latestversion.txt et les points de terminaison la sortie des données vers le fichier $Env:TEMP\O365_endpoints_data.txt. Vous pouvez modifier le chemin d’accès et/ou le nom du fichier de sortie en modifiant les lignes suivantes :
$versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt" $datapath = $Env:TEMP + "\O365_endpoints_data.txt"
À chaque exécution suivante du script, si la version de service Web la plus récente est identique à la version figurant dans le fichier O365_endpoints_latestversion.txt, le script se ferme sans apporter de modifications.
Lorsque la dernière version du service Web est plus récente que la version du fichier O365_endpoints_latestversion.txt, le script renvoie les points de terminaison et les filtres pour les points de terminaison catégories autoriser et optimiser, met à jour la version figurant dans le fichier O365_endpoints_latestversion.txt et écrit les données mises à jour dans le fichierO365_endpoints_data.txt.
Le script génère un ClientRequestId unique pour l’ordinateur sur lequel il est exécuté et réutilise cet ID sur plusieurs appels. Cet ID est stocké dans le fichierO365_endpoints_latestversion.txt.
Exécution du script PowerShell
Copiez le script et enregistrez-le sur votre disque dur local ou sur l’emplacement de votre script sousGet-O365WebServiceUpdates.ps1.
Exécutez le script dans votre éditeur de script favori, tel que le code ISE ou VS PowerShell, ou à partir d’une console PowerShell à l’aide de la commande suivante :
powershell.exe -file <path>\Get-O365WebServiceUpdates.ps1
Il n’existe aucun paramètre à transmettre au 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."
}
Exemple de Script Python
Voici un script Python, testé avec Python 3.6.3 sur Windows 10, que vous pouvez exécuter pour voir si vous devez effectuer des actions pour les données mises à jour. Ce script vérifie le numéro de version des points de terminaison d’instance Microsoft 365 Worldwide. En cas de modification, il télécharge les points de terminaison et les filtres pour les points de terminaison de catégorie Autoriser et Optimiser . Il utilise également une unique ClientRequestId au sein de plusieurs appels et enregistre la dernière version trouvée dans un fichier temporaire. Appelez ce script une fois par heure pour rechercher une mise à jour de version.
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')
Contrôle de version interface de Service Web
Des mises à jour des paramètres ou des résultats pour ces méthodes de service Web peuvent être nécessaires à l’avenir. Une fois la version de disponibilité générale de ces services Web publiée, Microsoft fera des efforts raisonnables pour fournir à l’avance les mises à jour de matériel du service Web. Lorsque Microsoft pense qu’une mise à jour nécessite des modifications pour les clients utilisant le service Web, Microsoft conserve la version précédente (une version avant) du service Web disponible au moins 12 mois après la publication de la nouvelle version. Les clients qui ne sont pas mis à niveau pendant cette période peuvent ne pas pouvoir accéder au service web et à ses méthodes. Les clients doivent s’assurer que les clients du service Web continuent de fonctionner sans erreur si les modifications suivantes sont apportées à la signature de l’interface de service Web :
- Ajout d’un nouveau paramètre facultatif à une méthode web existant qui ne doit pas être fournie par des clients plus anciens et n’affecte pas le résultat qu’un client plus ancien reçoit.
- Ajout d’un nouvel attribut nommé dans l’un des éléments REST de réponse ou d’autres colonnes au fichier CSV de réponse.
- Ajout d’une nouvelle méthode web avec un nouveau nom qui n’est pas appelé par les clients plus anciens.
Notifications de mise à jour
Vous pouvez utiliser plusieurs méthodes pour recevoir des notifications par courrier électronique lorsque des modifications apportées aux adresses IP et aux URL sont publiées sur le service Web.
- Pour utiliser une solution Power Automate, consultez Utiliser Power Automate pour recevoir un e-mail pour les modifications apportées aux ADRESSES IP et URL Microsoft 365.
- Pour déployer une application de logique Azure à l’aide d’un modèle ARM, voir notification de mise à jour d’Office 365 (v 1.1).
- Pour écrire votre propre script de notification à l’aide de PowerShell, voir Send-MailMessage.
Exporte un fichier PAC Proxy
Get-PacFile est un script PowerShell qui lit les derniers points de terminaison réseau à partir du service web Adresse IP et URL Microsoft 365 et crée un exemple de fichier PAC. Pour plus d’informations sur l’utilisation de Get-PacFile, consultez Utiliser un fichier PAC pour le routage direct du trafic Microsoft 365 vital.
Rubriques connexes
URL et plages d’adresses IP Microsoft 365
Gestion des points de terminaison Microsoft 365
Principes de connectivité réseau Microsoft 365
Optimisation des performances et du réseau Microsoft 365
Évaluation de la connectivité réseau Microsoft 365
Qualité des médias et performances de connectivité réseau dans Skype Entreprise Online
Optimisation de votre réseau pour Skype Entreprise Online
Plan de résolution des problèmes de performances pour Microsoft 365