Endereço IP e serviço Web de URL do Microsoft 365

O serviço Web endereço IP e URL do Microsoft 365 ajuda-o a identificar e diferenciar melhor o tráfego de rede do Microsoft 365, facilitando a avaliação, configuração e atualização das 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.

Enquanto cliente ou fornecedor de dispositivos de perímetro de rede, pode criar com base 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 os scripts do PowerShell para obter dados de ponto final do Microsoft 365 e modificar qualquer formatação para os 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 estiver a utilizar o Azure ExpressRoute para se ligar ao Microsoft 365, veja Azure ExpressRoute para Microsoft 365 para se familiarizar com os serviços do Microsoft 365 suportados através do Azure ExpressRoute. Veja também o artigo Intervalos de URLs e endereços IP do Microsoft 365 para compreender quais os pedidos de rede para aplicações do Microsoft 365 que necessitam de conectividade à 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 predefinição, o formato de dados devolvido é 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 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 utilize os GUIDs apresentados nos seguintes exemplos porque poderão 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.

É atribuído um número de versão aos dados de cada instância publicada e o método Web da versão permite-lhe verificar 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 predefinição, a versão devolvida é 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 da versão também suporta 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=<Mundial | China | USGovDoD | USGovGCCHigh> — este parâmetro opcional especifica a instância para a que pretende devolver 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 da versão não é limitado por taxa e nunca devolve Códigos de Resposta HTTP 429. 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 abreviado 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

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

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

Importante

O GUID do parâmetro ClientRequestID nestes URIs é apenas um exemplo. Para experimentar os URIs do serviço Web, gere o seu próprio GUID. Os GUIDs apresentados nestes 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 devolve a versão mais recente da instância de serviço do Microsoft 365 especificada. Resultado de 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 de 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 do Microsoft 365 em todo o mundo. Resultado de exemplo:

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

Exemplo 5 URI do Feed RSS: 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 ligações para a lista de alterações para cada versão. Resultado de 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 finais devolve todos os registos para intervalos de endereços IP e URLs que compõem o serviço do 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 não incluir este parâmetro, todas as áreas de serviço são devolvidas.
  • TenantName=<tenant_name> — O nome do seu inquilino 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 não fornecer um nome de inquilino, essas partes dos URLs têm o caráter universal (*).
  • NoIPv6=<true | false> — Defina o valor como verdadeiro para excluir endereços IPv6 da saída se não utilizar IPv6 na sua rede.
  • Instance=<Mundial | China | USGovDoD | USGovGCCHigh> — este parâmetro necessário especifica a instância a partir da qual pretende devolver os pontos finais. 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 procurar na saída do método Web dos pontos finais a categoria de um endereço IP ou URL específico, é possível que a consulta devolva 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.
  • required — Verdadeiro se este conjunto de pontos finais for necessário para ter conectividade para o Microsoft 365 ser suportado. Falso se o conjunto de pontos de extremidade for opcional.
  • notas — Para pontos finais opcionais, este texto descreve a funcionalidade do Microsoft 365 que estaria indisponível se os endereços IP ou URLs neste conjunto de pontos finais não puderem ser acedidos 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

Este URI obtém todos os pontos finais 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 finais para a instância do Microsoft 365 Worldwide apenas para o Exchange Online e dependências.

O resultado, por exemplo, 2 é semelhante ao exemplo 1, exceto que os resultados não incluem pontos finais para o SharePoint ou o Skype para Empresas 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 ao adicionar um endereço IP a uma lista de controlo de acesso da firewall ou a um URL a uma lista de desativação do servidor proxy pode causar uma falha para os utilizadores do Microsoft 365 atrá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 é:

  • Versão=<YYYYMMDDNN> — parâmetro de rota de URL necessá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á disponível 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 não adicionar isto antes de começarmos a utilizá-lo, poderá deparar-se com uma falha.
    • AddedUrl – um URL foi adicionado ao Microsoft 365 e estará disponível 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 não adicionar este URL antes de começarmos a utilizá-lo, poderá deparar-se com uma falha.
    • AddedIpAndUrl — Foi adicionado um endereço IP e um URL. 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 não adicionar este par de IP/URL antes de começarmos a utilizá-lo, poderá deparar-se com uma falha.
    • AddedSubstituteUrl – um FQDN anteriormente não publicado devido a um caráter universal é agora publicado porque o URL de caráter universal foi removido. Esta alteração tem efeito imediato.
    • RemovedIpOrUrl – Pelo menos um endereço IP ou URL foi removido do Microsoft 365. Remova os pontos finais de rede dos seus dispositivos de perímetro, mas não existe um prazo para o fazer.
    • ChangedIsExpressRoute – o atributo de suporte do ExpressRoute foi alterado. Se você usar o ExpressRoute será necessário tomar medidas dependendo da configuração.
    • MovedIpOrUrl – Movemos um endereço IP ou url entre este conjunto de pontos finais e outro. Geralmente, nenhuma ação é necessária.
    • RemovedDuplicateIpOrUrl – removemos um url ou endereço IP duplicado, mas ainda está publicado para o Microsoft 365. Geralmente, nenhuma ação é necessária.
    • OtherNonPriorityChanges – alterámos algo menos crítico do que todas as outras opções, como o conteúdo de um campo de nota.
  • 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. Isto não será incluído nos conjuntos de pontos finais adicionados recentemente. 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

Esta ação pede todas as alterações anteriores à instância de serviço do Microsoft 365 em todo o mundo. Resultado de 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

Este pedido pede alterações desde a versão especificada para a instância do Microsoft 365 Worldwide. Neste caso, a versão especificada é a mais recente. Resultado de 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 da versão dos pontos finais atuais da instância do Microsoft 365 Worldwide ao chamar 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 é normalmente 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 este 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

Eis um script python, testado com o Python 3.6.3 no Windows 10, que pode executar para ver se existem ações que precisa de realizar para obter dados atualizados. Este script verifica o número da versão dos pontos finais de instância do Microsoft 365 Worldwide. Quando existe uma alteração, transfere os pontos finais e filtros para os pontos finais da categoria Permitir e Otimizar . 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 atualizam durante esse período poderão não conseguir aceder ao serviço Web e aos respetivos 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.
  • Adicionar 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 finais de rede mais recentes do serviço Web de Endereço IP e URL do Microsoft 365 e cria um ficheiro PAC de exemplo. Para obter informações sobre como utilizar Get-PacFile, consulte Utilizar um ficheiro PAC para encaminhamento direto de tráfego vital do Microsoft 365.

URLs e intervalos de endereços IP do Microsoft 365

Gerenciando os pontos de extremidade do Microsoft 365

Princípios de Conectividade de Rede do Microsoft 365

Otimização da rede e do desempenho 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

Otimização do desempenho do Microsoft 365 com linhas de base e histórico de desempenho

Plano de resolução de problemas de desempenho do Microsoft 365