Microsoft 365 IP Address and URL Web service

O serviço Web de Endereço IP e URL do Microsoft 365 ajuda você a identificar e diferenciar melhor o tráfego de rede do Microsoft 365, facilitando a avaliação, configuração e manutenção atualizada com as alterações. Esse serviço Web baseado em REST substitui os arquivos anteriores do XML para download, que foram desativados em 2 de outubro de 2018.

Como um cliente ou um fornecedor de dispositivos de perímetro de rede, você pode criar no serviço Web para o endereço IP do Microsoft 365 e entradas FQDN. É possível acessar os dados diretamente de um navegador de Web usando essas URLs:

Como cliente, você pode usar esse serviço Web para:

  • Atualize seus scripts do PowerShell para obter dados do ponto de extremidade do Microsoft 365 e modificar qualquer formatação para seus dispositivos de rede.
  • Use essas informações para atualizar os arquivos PAC implantados nos computadores clientes.

Como fornecedor de dispositivos de perímetro de rede, é possível usar esse serviço Web para:

  • Criar e testar o software do dispositivo para baixar a lista de configuração automatizada.
  • Verificar a versão atual.
  • Obter as alterações atuais.

Observação

Se você estiver usando o Azure ExpressRoute para se conectar ao Microsoft 365, examine o Azure ExpressRoute para o Microsoft 365 para se familiarizar com os serviços do Microsoft 365 com suporte no Azure ExpressRoute. Examine também o artigo URLs do Microsoft 365 e intervalos de endereços IP para entender quais solicitações de rede para aplicativos Microsoft 365 exigem conectividade com a Internet. Isso ajudará a configurar melhor seus dispositivos de segurança de perímetro.

Para saber mais, veja:

Parâmetros comuns

Estes parâmetros são comuns a todos os métodos de serviço Web:

  • format=<JSON | CSV> — Por padrão, o formato de dados retornado é JSON. Use este parâmetro opcional para retornar os dados no formato de valores separados por vírgula (CSV).

  • ClientRequestId=<guid> — Um GUID necessário que você gera para associação de cliente. Gerar um GUID exclusivo para cada computador que chama um serviço Web (os scripts incluídos na página geram um GUID para você). Não use os GUIDs mostrados nos exemplos a seguir porque eles podem ser bloqueados pelo serviço Web no futuro. O formato GUID é xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, em que x representa um número hexadecimal.

    Para gerar um GUID, você pode usar o comando New-Guid do PowerShell ou usar um serviço online como Gerador de GUIDs Online.

Método da web de versão

A Microsoft atualiza o endereço IP do Microsoft 365 e as entradas FQDN no início de cada mês. Atualizações fora de banda às vezes são publicadas por causa de incidentes de suporte, atualizações de segurança ou outros requisitos operacionais.

Os dados de cada instância publicada recebem um número de versão e o método Web de versão permite que você marcar para a versão mais recente de cada instância de serviço do Microsoft 365. Recomendamos verificar a versão não mais que uma vez.

Os parâmetros para o método da web de versão são:

  • AllVersions=<true | false> — Por padrão, a versão retornada é a mais recente. Inclua este parâmetro opcional para solicitar todas as versões publicadas desde que o serviço Web foi lançado pela primeira vez.
  • Format=<JSON | CSV | RSS> — Além dos formatos JSON e CSV, o método Web de versão também dá suporte ao RSS. Você pode usar esse parâmetro opcional junto com o parâmetro AllVersions=true para solicitar um feed RSS que possa ser usado com o Outlook ou outros leitores de RSS.
  • Instance=<Em todo o mundo | China | USGovDoD | USGovGCCHigh> — Este parâmetro opcional especifica a instância para a qual retornar a versão. Se omitido, todas as instâncias serão retornadas. As instâncias válidas são: Worldwide, China, USGovDoD, USGovGCCHigh.

O método Web de versão não é limitado e nunca retorna 429 códigos de resposta HTTP. A resposta ao método Web de versão inclui um cabeçalho de controle de cache que recomenda o armazenamento em cache dos dados por 1 hora. O resultado do método Web de versão pode ser um único registro ou uma matriz de registros. Os elementos de cada registro são:

  • instance — O nome curto da instância de serviço do Microsoft 365.
  • latest — a versão mais recente para pontos de extremidade da instância especificada.
  • versions — uma lista de todas as versões anteriores para a instância especificada. Este elemento só será incluído se o parâmetro AllVersions for verdadeiro.

Exemplos de método Web de versão

Exemplo 1 de URI de solicitação: https://endpoints.office.com/version?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Esse URI retorna a versão mais recente de cada instância de serviço do Microsoft 365. Resultado do exemplo:

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

Importante

O GUID para o parâmetro ClientRequestID nessas URIs é apenas um exemplo. Para experimentar as URIs do serviço Web, gere seu próprio GUID. Os GUIDs mostrados nesses exemplos podem ser bloqueados pelo serviço Web no futuro.

Exemplo 2 de URI de solicitação: https://endpoints.office.com/version/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Este URI retorna a versão mais recente da instância de serviço do Microsoft 365 especificada. Resultado do exemplo:

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

Exemplo 3 de URI de solicitação: https://endpoints.office.com/version/Worldwide?Format=CSV&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Este URI mostra a saída no formato CSV. Resultado do exemplo:

instance,latest
Worldwide,2018063000

Exemplo 4 de URI de solicitação: https://endpoints.office.com/version/Worldwide?AllVersions=true&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Este URI mostra todas as versões anteriores que foram publicadas para a instância de serviço mundial do Microsoft 365. Resultado do exemplo:

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

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

Este URI mostra um feed RSS das versões publicadas que incluem links para a lista de alterações para cada versão. Resultado do exemplo:

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

Método da Web de pontos de extremidade

O método Web de pontos de extremidade retorna todos os registros para intervalos de endereços IP e URLs que compõem o serviço Microsoft 365. Os dados mais recentes do método da Web de pontos de extremidade devem ser usados para a configuração de dispositivos de rede. A Microsoft fornece notificações antecipadas 30 dias antes de publicar novas incursões para dar tempo para atualizar listas de controle de acesso e listas de bypass de servidores proxy. Recomendamos que você chame o método da Web de pontos de extremidade o método Web da versão indicar que uma nova versão dos dados que está disponível.

Os parâmetros para o método da Web de pontos de extremidade são:

  • ServiceAreas=<Comum | Exchange | SharePoint | Skype> — uma lista separada por vírgulas de áreas de serviço. Os itens válidos são Common, Exchange, SharePoint e Skype. Como os itens da área de serviço Common são um pré-requisito para todas as outras áreas de serviço, o serviço da Web sempre os incluirá. Se você não incluir esse parâmetro, todas as áreas de serviço serão retornadas.
  • TenantName=<tenant_name> — Seu nome de locatário do Microsoft 365. O serviço da web insere o seu nome fornecido em partes de URLs que incluem o nome do locatário. Se você não fornecer um nome de locatário, essas partes de URLs terão o caractere curinga (*).
  • NoIPv6=<true | false> — Defina o valor como true para excluir endereços IPv6 da saída se você não usar o IPv6 em sua rede.
  • Instance=<Em todo o mundo | China | USGovDoD | USGovGCCHigh> — Esse parâmetro necessário especifica a instância da qual retornar os pontos de extremidade. As instâncias válidas são: Worldwide, China, USGovDoD e USGovGCCHigh.

Se você chamar o método Web de pontos de extremidade um grande número de vezes a partir do mesmo endereço IP do cliente, poderá receber o código de resposta HTTP 429 (Excesso de solicitações). Se você receber o código de resposta, você deve esperar 1 hora antes de repetir sua solicitação ou gerar um GUID para a solicitação. Como prática recomendada geral, apenas chame o método Web de pontos de extremidade quando o método Web de versão indicar que há uma nova versão disponível.

O resultado do método Web de pontos de extremidade é uma matriz de registros com cada registro representado um conjunto de pontos de extremidade. Os elementos de cada registro são:

  • id – O número de ID imutável do conjunto de pontos de extremidade.
  • serviceArea— a área de serviço da que isso faz parte: Common, Exchange, SharePoint ou Skype.
  • urls — URLs para o conjunto de pontos de extremidade. Uma matriz JSON de registros DNS. Omitidas caso estejam em branco.
  • tcpPorts — portas TCP para o conjunto de pontos de extremidade. Os elementos de todas as portas são formatados como uma lista separada por vírgulas ou intervalos de portas separados por um hífen (-). As portas se aplicam a todos os endereços IP e todas as URLs do conjunto de pontos de extremidade para essa categoria. Omitidas caso estejam em branco.
  • udpPorts — portas UDP para os intervalos de endereço IP neste conjunto de pontos de extremidade. Omitidas caso estejam em branco.
  • ips — Os intervalos de endereços IP associados a esse conjunto de pontos de extremidade como associados às portas TCP ou UDP listadas. Uma matriz JSON de intervalos de endereço IP. Omitidas caso estejam em branco.
  • category — a categoria de conectividade para o conjunto de pontos de extremidade. Os valores válidos são Otimizar, Permitir e Padrão. Se você pesquisar a saída do método Web de pontos de extremidade para a categoria de um endereço IP ou URL específico, é possível que sua consulta retorne várias categorias. Nesse caso, siga a recomendação para a categoria de maior prioridade. Por exemplo, se o ponto de extremidade aparecer tanto em Otimizar quanto em Permitir, você deve seguir os requisitos de Otimizar. Obrigatório.
  • expressRoute — Verdadeiro se esse conjunto de pontos de extremidade é roteado sobre ExpressRoute, caso contrário, falso.
  • obrigatório – True se esse conjunto de pontos de extremidade for necessário para ter conectividade para que o Microsoft 365 tenha suporte. Falso se o conjunto de pontos de extremidade for opcional.
  • notas: Para pontos de extremidade opcionais, este texto descreve a funcionalidade do Microsoft 365 que não estaria disponível se endereços IP ou URLs neste conjunto de pontos de extremidade não puderem ser acessados na camada de rede. Omitidas caso estejam em branco.

Exemplos de método Web de pontos de extremidade

Exemplo 1 de URI de solicitação: https://endpoints.office.com/endpoints/Worldwide?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Esse URI obtém todos os pontos de extremidade para a instância mundial do Microsoft 365 para todas as cargas de trabalho. Exemplo de resultado mostrando um trecho da saída:

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

A saída completa da solicitação neste exemplo conteria outros conjuntos de pontos de extremidade.

Exemplo 2 de URI de solicitação: https://endpoints.office.com/endpoints/Worldwide?ServiceAreas=Exchange&ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Este exemplo obtém pontos de extremidade para a instância do Microsoft 365 Worldwide apenas para Exchange Online e dependências.

A saída, por exemplo, 2 é semelhante ao exemplo 1, exceto que os resultados não incluem pontos de extremidade para SharePoint ou Skype for Business Online.

Método Web de alterações

O método Web de alterações retorna as atualizações mais recentes publicadas, normalmente as alterações do mês anterior de URLs e dos intervalos de endereços IP.

As alterações mais importantes em dados de pontos de extremidade são novos endereços de URL e de IP. A falha em adicionar um endereço IP a uma lista de controle de acesso de firewall ou uma URL a uma lista de bypass do servidor proxy pode causar uma interrupção para os usuários do Microsoft 365 por trás desse dispositivo de rede. Apesar dos requisitos operacionais, novos pontos de extremidade são publicados no serviço Web 30 dias antes da data que os pontos de extremidades são provisionados para uso para lhe dar tempo de atualizar listas de controle de acesso e listas de bypass de servidores proxy.

O parâmetro necessário para o método da web de alterações é:

  • Version=<YYYYMMDDNN> — Parâmetro de rota de URL obrigatório. Este valor é a versão que você tem implementada atualmente. O serviço da Web retornará as alterações desde essa versão. O formato é YYYYMMDDNN, em que NN é um número natural incrementado, se houver várias versões que precisem ser publicadas em um único dia, com 00 representando a primeira atualização de um determinado dia. O serviço da web requer que o parâmetro de versão contenha exatamente 10 dígitos.

O método da Web de alterações é limitado por taxa da mesma forma que o método da web de pontos de extremidade. Se você receber um código de resposta HTTP 429, espere 1 hora antes de repetir sua solicitação ou para gerar um novo GUID para a solicitação.

O resultado do método Web de alterações é uma matriz de registros em que cada registro representa uma alteração em uma versão específica dos pontos de extremidade. Os elementos de cada registro são:

  • id – A ID imutável do registro de alteração.
  • endpointSetId — A ID do registro de conjunto de pontos de extremidade que é alterado.
  • disposição — descreve o que a alteração fez com o registro de conjunto de pontos de extremidade. Os valores são alterar, adicionar ou remover.
  • impact — Nem todas as alterações serão igualmente importantes para todos os ambientes. Isso descreve o impacto esperado para um ambiente de perímetro de rede corporativa como resultado dessa alteração. Este elemento está incluído apenas nos registros de alterações da versão 2018112800 e posterior. As opções para o impacto são: — AddedIp – Um endereço IP foi adicionado ao Microsoft 365 e estará em tempo real no serviço em breve. Isso representa uma alteração que você precisa realizar em um firewall ou em outro dispositivo de perímetro de rede de camada 3. Se você não adicionar isso antes de começarmos a usá-lo, poderá sofrer uma interrupção. — AddedUrl – Uma URL foi adicionada ao Microsoft 365 e estará ativa no serviço em breve. Isso representa uma mudança que você precisa fazer em um servidor de proxy ou dispositivo de perímetro de rede de análise de URL. Se você não adicionar essa URL antes de começarmos a usá-la, poderá sofrer uma interrupção. — AddedIpAndUrl — um endereço IP e uma URL foram adicionados. Isso representa uma alteração que você precisa realizar em um dispositivo de camada 3 de firewall ou em um servidor proxy ou dispositivo de análise da URL. Se você não adicionar esse par DE IP/URL antes de começarmos a usá-lo, poderá sofrer uma interrupção. — RemovedIpOrUrl – Pelo menos um endereço IP ou URL foi removido do Microsoft 365. Remova os pontos de extremidade de rede de seus dispositivos de perímetro, mas não há um prazo para você fazer isso. — ChangedIsExpressRoute – O atributo de suporte do ExpressRoute foi modificado. Se você usar o ExpressRoute será necessário tomar medidas dependendo da configuração. — MovedIpOrUrl – Movemos um endereço IP ou uma Url entre esse conjunto de ponto de extremidade e outro. Geralmente, nenhuma ação é necessária. — RemovedDuplicateIpOrUrl – removemos um endereço IP duplicado ou url, mas ele ainda é publicado para o Microsoft 365. Geralmente, nenhuma ação é necessária. — OtherNonPriorityChanges – Alteramos algo menos crítico que todas as opções como um campo de anotações.
  • version — a versão do conjunto de pontos de extremidade publicado no qual a alteração foi introduzida. Os números de versões estão no formato YYYYMMDDNN, em que NN é um número natural incrementado caso existam várias versões a serem publicadas em um único dia.
  • previous — uma subestrutura detalhando valores anteriores de elementos alterados no conjunto de pontos de extremidade. Isso não será incluído para conjuntos de pontos de extremidade recém-adicionados. Inclui ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts e notes.
  • current — uma subestrutura detalhando valores atualizados de elementos de alterações no conjunto de pontos de extremidade. Inclui ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts e notes.
  • add — uma subestrutura detalhando itens a serem adicionados às coleções de conjunto de pontos de extremidade. Omitida caso não haja nenhuma adição. — effectiveDate — define os dados quando as adições serão ao vivo no serviço. — ips — Itens a serem adicionados à matriz ips. — urls- Itens a serem adicionados à matriz urls.
  • remove — uma subestrutura detalhando itens a serem removidos do conjunto de pontos de extremidade. Omitido se não houver remoções. — ips — Itens a serem removidos da matriz ips. — urls- Itens a serem removidos da matriz urls.

Exemplos de método Web de alterações

Exemplo 1 de URI de solicitação: https://endpoints.office.com/changes/worldwide/0000000000?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Isso solicita todas as alterações anteriores à instância de serviço mundial do Microsoft 365. Resultado do exemplo:

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

Exemplo 2 de URI de solicitação: https://endpoints.office.com/changes/worldwide/2018062700?ClientRequestId=b10c5ed1-bad1-445f-b386-b919946339a7

Essas solicitações são alteradas desde a versão especificada para a instância do Microsoft 365 Worldwide. Nesse caso, a versão especificada é a mais recente. Resultado do exemplo:

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

Exemplo de script do PowerShell

Você pode executar esse script do PowerShell para ver se há ações que você precisa tomar para os dados atualizados. Você pode executar esse script como uma tarefa agendada para verificar se há uma atualização da versão. Para evitar a carga excessiva no serviço Web, tente não executar o script mais do que uma vez por hora.

O script faz o seguinte:

  • Verifica o número de versão dos pontos de extremidade atuais da instância do Microsoft 365 Worldwide chamando a API REST do serviço Web.

  • Verifica uma versão do arquivo atual em $Env:TEMP\O365_endpoints_latestversion.txt. O caminho da variável global $Env:TEMP geralmente é C:\Users\<username>\AppData\Local\Temp.

  • Se esta é a primeira vez que o script é executado, o script retorna a versão atual e todos os endereços IP e URLs atuais, grava a versão de pontos de extremidade no arquivo $Env:TEMP\O365_endpoints_latestversion.txt e a saída de dados dos pontos de extremidade para o arquivo $Env:TEMP\O365_endpoints_data.txt. Você pode modificar o caminho e/ou o nome do arquivo de saída editando estas linhas:

    $versionpath = $Env:TEMP + "\O365_endpoints_latestversion.txt"
    $datapath = $Env:TEMP + "\O365_endpoints_data.txt"
    
  • Em cada execução subsequente do script, se a versão mais recente do serviço Web for idêntica à versão do arquivo O365_endpoints_latestversion.txt, o script sairá sem fazer alterações.

  • Quando a versão mais recente do serviço Web é mais recente do que a versão do arquivo O365_endpoints_latestversion.txt, o script retorna os pontos de extremidade e os filtros para a categoria de pontos de extremidade Permitir e Otimizar, atualiza a versão no arquivo O365_endpoints_latestversion.txt e grava os dados atualizados no arquivo O365_endpoints_data.txt.

O script gera um ClientRequestId exclusivo para o computador em que é executado e reutiliza essa ID em várias chamadas. Essa ID é armazenada no arquivo O365_endpoints_latestversion.txt.

Para executar o script do PowerShell

  1. Copie o script e salve-o no seu disco rígido local ou no local do script como Get-O365WebServiceUpdates.ps1.

  2. Execute o script em seu editor de script preferido, como o ISE do PowerShell ou o VS Code, ou de um consolo do PowerShell usando o seguinte comando:

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

    Não há parâmetros para passar para o 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."
}

Exemplo de script do Python

Aqui está um script python, testado com Python 3.6.3 no Windows 10, que você pode executar para ver se há ações que você precisa executar para obter dados atualizados. Este script verifica o número da versão para os pontos de extremidade da instância do Microsoft 365 Worldwide. Quando há uma alteração, ele baixa os pontos de extremidade e os filtros para os pontos de extremidade permitir e otimizar a categoria. Ele também usa um ClientRequestId exclusivo em várias chamadas e salva a versão mais recente encontrada em um arquivo temporário. Chame esse script uma vez por hora para verificar se há uma atualização de versão.

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

Controle de versão de interface do serviço da Web

As atualizações dos parâmetros ou resultados para esses métodos de serviço Web podem ser necessárias no futuro. Após a publicação da disponibilidade geral desses serviços Web, a Microsoft tomará medidas razoáveis para oferecer um aviso prévio de atualizações de material para o serviço Web. Quando a Microsoft acredita que uma atualização exigirá mudanças aos clientes usando o serviço Web, a Microsoft manterá a versão anterior (uma versão mais antiga) do serviço Web disponível por pelo menos 12 meses após o lançamento da nova versão. Os clientes que não atualizarem durante esse tempo podem não poder acessar o serviço Web e seus métodos. Os clientes devem garantir que os clientes do serviço Web continuem funcionando sem erro se as seguintes alterações forem feitas na assinatura da interface do serviço Web:

  • Adição de um novo parâmetro opcional a um método Web existente que não precise ser fornecido por clientes mais antigos e que não afete os resultados recebidos por um cliente mais antigo.
  • Adicionando um novo atributo nomeado em um dos itens REST de resposta ou outras colunas ao CSV da resposta.
  • Adicionando um novo método Web com um novo nome que não é chamado pelos clientes mais antigos.

Notificações de atualização

Você pode usar alguns métodos diferentes para obter notificações por email quando as alterações nos endereços IP e URLs forem publicadas no serviço Web.

Exportando um arquivo Proxy PAC

Get-PacFile é um script do PowerShell que lê os pontos de extremidade de rede mais recentes do serviço Web de ENDEREÇO IP e URL do Microsoft 365 e cria um arquivo PAC de exemplo. Para obter informações sobre como usar Get-PacFile, consulte Usar um arquivo PAC para roteamento direto do tráfego vital do Microsoft 365.

URLs e intervalos de endereços IP do Microsoft 365

Gerenciando pontos de extremidade do Microsoft 365

Princípios de Conectividade de Rede do Microsoft 365

Ajuste de desempenho e rede do Microsoft 365

Avaliando a conectividade de rede do Microsoft 365

Qualidade da mídia e desempenho de conectividade de rede no Skype for Business Online

Como otimizar a sua rede para o Skype for Business Online

Ajuste de desempenho do Microsoft 365 usando linhas de base e histórico de desempenho

Plano de solução de problemas de desempenho para o Microsoft 365