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. Este serviço Web baseado em REST substitui os ficheiros transferíveis XML anteriores, que foram eliminados gradualmente a 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. Pode aceder aos dados diretamente num browser com estes URLs:

Como cliente, pode utilizar este 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.
  • Utilize estas informações para atualizar ficheiros PAC implementados em computadores cliente.

Enquanto fornecedor de dispositivos de perímetro de rede, pode utilizar este serviço Web para:

  • Crie e teste software de dispositivo para transferir a lista para configuração automatizada.
  • Verifique a versão atual.
  • Obtenha as alterações atuais.

Nota

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. Isto ajudará a configurar melhor os dispositivos de segurança de perímetro.

Para mais informações, consulte:

Parâmetros comuns

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

  • format=<JSON | CSV> – por predefinição, o formato de dados devolvido é JSON. Utilize este parâmetro opcional para devolver os dados no formato CSV (valores separados por vírgulas).

  • ClientRequestId=<guid> — um GUID necessário que gera para associação de cliente. Gere um GUID exclusivo para cada computador que chama o serviço Web (os scripts incluídos nesta página geram um GUID automaticamente). 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, pode utilizar o comando New-Guid do PowerShell ou utilizar um serviço online, como o Gerador de GUID Online.

Método 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. Por vezes, as atualizações fora de banda são publicadas devido a 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 que verifique a versão não mais do que uma vez por hora.

Os parâmetros do método Web da versão são:

  • AllVersions=<true | false> — Por predefinição, a versão devolvida é a mais recente. Inclua este parâmetro opcional para pedir 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. Pode utilizar este parâmetro opcional juntamente com o parâmetro AllVersions=true para pedir um feed RSS que possa ser utilizado 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 for omitido, todas as instâncias são devolvidas. 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 da versão inclui um cabeçalho de controlo de cache que recomenda a colocação em cache dos dados durante 1 hora. O resultado do método Web da versão pode ser um único registo ou uma matriz de registos. Os elementos de cada registo são:

  • instance — O nome abreviado da instância de serviço do Microsoft 365.
  • latest — A versão mais recente para pontos finais da instância especificada.
  • versões — uma lista de todas as versões anteriores da instância especificada. Este elemento só é incluído se o parâmetro AllVersions for true.

Exemplos de método Web de versão

URI do pedido de exemplo 1: 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.

URI do pedido de exemplo 2: 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"
}

URI do pedido de exemplo 3: 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

URI do pedido de exemplo 4: 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 Web de pontos finais

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 Web de pontos finais devem ser sempre utilizados para a configuração do dispositivo de rede. A Microsoft fornece um aviso prévio 30 dias antes de publicar novas adições para lhe dar tempo para atualizar listas de controlo de acesso e listas de desativação do servidor proxy. Recomendamos que chame novamente o método Web de pontos finais quando o método Web da versão indicar que está disponível uma nova versão dos dados.

Os parâmetros para o método Web dos pontos finais são:

  • ServiceAreas=<Comum | Exchange | SharePoint | Skype> — uma lista separada por vírgulas de áreas de serviço. Os itens válidos são Comuns, Exchange, SharePoint e Skype. Uma vez que os itens da área de serviço Comum são um pré-requisito para todas as outras áreas de serviço, o serviço Web inclui-os sempre. 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 Web utiliza o nome fornecido e insere-o em partes de URLs que incluem o nome do inquilino. 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 chamar o método Web de pontos finais demasiadas vezes a partir do mesmo endereço IP do cliente, poderá receber o código de resposta HTTP 429 (Demasiados Pedidos). Se receber este código de resposta, aguarde 1 hora antes de repetir o pedido ou gere um novo GUID para o pedido. Como melhor prática geral, chame apenas o método Web de pontos finais quando o método Web da versão indicar que está disponível uma nova versão.

O resultado do método Web de pontos finais é uma matriz de registos em que cada registo representa um conjunto de pontos finais específico. Os elementos de cada registo são:

  • id — o número de ID imutável do conjunto de pontos finais.
  • serviceArea — a área de serviço da qual faz parte: Comum, Exchange, SharePoint ou Skype.
  • URLs — URLs do conjunto de pontos finais. Uma matriz JSON de registos DNS. Omitido se estiver em branco.
  • tcpPorts — portas TCP para o conjunto de pontos finais. Todos os elementos de portas são formatados como uma lista separada por vírgulas de portas ou intervalos de portas separados por um caráter de travessão (-). As portas aplicam-se a todos os endereços IP e a todos os URLs no conjunto de pontos finais para uma determinada categoria. Omitido se estiver em branco.
  • udpPorts — portas UDP para os intervalos de endereços IP neste conjunto de pontos finais. Omitido se estiver em branco.
  • ips — os intervalos de endereços IP associados a este conjunto de pontos finais, conforme associado às portas TCP ou UDP listadas. Uma matriz JSON de intervalos de endereços IP. Omitido se estiver em branco.
  • category — a categoria de conectividade do conjunto de pontos finais. Os valores válidos são Otimizar, Permitir e Predefiniçã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 prioridade mais alta. Por exemplo, se o ponto final aparecer em Otimizar e Permitir, deve seguir os requisitos para Otimizar. Obrigatório.
  • expressRoute – verdadeiro se este conjunto de pontos finais for encaminhado através do ExpressRoute, Falso se não for.
  • required — Verdadeiro se este conjunto de pontos finais for necessário para ter conectividade para o Microsoft 365 ser suportado. Falso se este conjunto de pontos finais 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. Omitido se estiver em branco.

Exemplos de método Web de pontos finais

URI do pedido de exemplo 1: 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. Resultado de exemplo que mostra um excerto 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"
   ],

O resultado completo do pedido neste exemplo conteria outros conjuntos de pontos finais.

URI do pedido de exemplo 2: 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 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 Skype para Empresas Online.

Altera o método Web

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

As alterações mais críticas aos dados dos pontos finais são os novos URLs e endereços 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. Não obstante os requisitos operacionais, os novos pontos finais são publicados no serviço Web 30 dias antes da data em que os pontos finais são aprovisionados para utilização para lhe dar tempo para atualizar listas de controlo de acesso e listas de desativação do servidor proxy.

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

  • Versão=<YYYYMMDDNN> — parâmetro de rota de URL necessário. Este valor é a versão que implementou atualmente. O serviço Web irá devolver as alterações desde essa versão. O formato é YYYYYMMDDNN, em que NN é um número natural incrementado se existirem várias versões necessárias para serem publicadas num único dia, com 00 a representar a primeira atualização para um determinado dia. O serviço Web requer que o parâmetro de versão contenha exatamente 10 dígitos.

O método Web de alterações é limitado pela taxa da mesma forma que o método Web de pontos finais. Se receber um código de resposta HTTP 429, aguarde 1 hora antes de repetir o pedido ou gere um novo GUID para o pedido.

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

  • id — o ID imutável do registo de alteração.
  • endpointSetId — o ID do registo do conjunto de pontos finais que é alterado.
  • disposition — Descreve o que a alteração fez ao registo do conjunto de pontos finais. Os valores são alterados, adicionados ou removidos.
  • impacto — nem todas as alterações serão igualmente importantes para todos os ambientes. Este elemento descreve o impacto esperado para um ambiente de perímetro de rede empresarial como resultado desta alteração. Este elemento está incluído apenas nos registos de alteração da versão 2018112800 e posterior. As opções para o impacto são: — AddedIp – foi adicionado um endereço IP ao Microsoft 365 e estará disponível no serviço em breve. Isto representa uma alteração que precisa de efetuar numa firewall ou noutro 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. Isto representa uma alteração que tem de efetuar num servidor proxy ou num 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 — Foram adicionados um endereço IP e um URL. Isto representa uma alteração que tem de efetuar num dispositivo de camada 3 da firewall ou num servidor proxy ou num dispositivo de análise de URL. Se não adicionar este par de IP/URL antes de começarmos a utilizá-lo, poderá deparar-se com uma falha. — 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 utilizar o ExpressRoute, poderá ter de tomar medidas consoante a configuração. — MovedIpOrUrl – Movemos um endereço IP ou url entre este conjunto de pontos finais e outro. Geralmente, não é necessária qualquer ação. — RemovedDuplicateIpOrUrl – Removemos um url ou endereço IP duplicado, mas ainda está publicado para o Microsoft 365. Geralmente, não é necessária qualquer ação. — 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 finais publicado no qual a alteração foi introduzida. Os números de versão são do formato YYYYMMDDNN, em que NN é um número natural incrementado se existirem várias versões necessárias para serem publicadas num único dia.
  • anterior — uma subestrutura que detalha os valores anteriores dos elementos alterados no conjunto de pontos finais. Isto não será incluído nos conjuntos de pontos finais adicionados recentemente. Inclui ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts e notas.
  • current — Uma subestrutura que detalha os valores atualizados dos elementos de alterações no conjunto de pontos finais. Inclui ExpressRoute, serviceArea, category, required, tcpPorts, udpPorts e notas.
  • add — Uma subestrutura que detalha os itens a adicionar às coleções de conjuntos de pontos finais. Omitido se não existirem adições. — effectiveDate — Define os dados quando as adições estarão ativas no serviço. — ips — Itens a adicionar à matriz ips . — URLs – Itens a adicionar à matriz de URLs .
  • remove — Uma subestrutura que detalha os itens a serem removidos do conjunto de pontos finais. Omitido se não houver remoção. — ips — Itens a serem removidos da matriz ips . — URLs – Itens a serem removidos da matriz de URLs .

Altera exemplos de métodos Web

URI do pedido de exemplo 1: 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":
     [

URI do pedido de exemplo 2: 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"]
    }
  }
]

Script do PowerShell de exemplo

Pode executar este script do PowerShell para ver se existem ações que precisa de efetuar para dados atualizados. Pode executar este script como uma tarefa agendada para verificar a existência de uma atualização de versão. Para evitar uma 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 a existência de um ficheiro de versão 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 for a primeira vez que o script é executado, o script devolve a versão atual e todos os endereços IP e URLs atuais, escreve a versão dos pontos finais no ficheiro $Env:TEMP\O365_endpoints_latestversion.txt e os pontos finais devolvem a saída de dados para o ficheiro $Env:TEMP\O365_endpoints_data.txt. Pode modificar o caminho e/ou o nome do ficheiro de saída ao editar 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 no ficheiro deO365_endpoints_latestversion.txt , o script sai sem fazer alterações.

  • Quando a versão mais recente do serviço Web é mais recente do que a versão no ficheiro O365_endpoints_latestversion.txt , o script devolve os pontos finais e filtros para os pontos finais da categoria Permitir e Otimizar , atualiza a versão no ficheiro O365_endpoints_latestversion.txt e escreve os dados atualizados no ficheiro O365_endpoints_data.txt .

O script gera um ClientRequestId exclusivo para o computador em que é executado e reutiliza este ID em várias chamadas. Este ID é armazenado no ficheiro O365_endpoints_latestversion.txt .

Para executar o script do PowerShell

  1. Copie o script e guarde-o no disco rígido local ou na localização do script como Get-O365WebServiceUpdates.ps1.

  2. Execute o script no seu editor de scripts preferido, como o ISE do PowerShell ou o VS Code, ou a partir de uma consola do PowerShell com o seguinte comando:

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

    Não existem parâmetros para transmitir 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."
}

Script python de exemplo

Eis um script do Python, testado com o Python 3.6.3 no Windows 10, que pode executar para ver se existem ações que precisa de executar 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 . Também utiliza um ClientRequestId exclusivo em várias chamadas e guarda a versão mais recente encontrada num ficheiro temporário. Chame este script uma vez por hora para verificar a existência de 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')

Controlo de versões da interface do Serviço Web

Atualizações aos parâmetros ou resultados destes métodos de serviço Web poderão ser necessários no futuro. Após a publicação da versão de disponibilidade geral destes serviços Web, a Microsoft envidará esforços razoáveis para fornecer um aviso prévio sobre as atualizações materiais ao serviço Web. Quando a Microsoft acredita que uma atualização exigirá alterações aos clientes que utilizam o serviço Web, a Microsoft manterá a versão anterior (uma versão anterior) do serviço Web disponível durante, 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 têm de garantir que os clientes do serviço Web continuam a funcionar sem erro se forem efetuadas as seguintes alterações à assinatura da interface do serviço Web:

  • Adicionar um novo parâmetro opcional a um método Web existente que não tem de ser fornecido por clientes mais antigos e não afeta o resultado que um cliente mais antigo recebe.
  • Adicionar um novo atributo nomeado num dos itens REST de resposta ou noutras colunas ao CSV de resposta.
  • Adicionar um novo método Web com um novo nome que não é chamado pelos clientes mais antigos.

Atualizar notificações

Pode utilizar alguns métodos diferentes para receber notificações por e-mail quando as alterações aos endereços IP e URLs forem publicadas no serviço Web.

Exportar um ficheiro PAC de Proxy

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.

Intervalos de URLs e endereços IP do Microsoft 365

Gerir pontos finais do Microsoft 365

Princípios de Conectividade de Rede do Microsoft 365

Otimização da rede e do desempenho do Microsoft 365

Avaliar a conectividade de rede do Microsoft 365

Qualidade dos Suportes de Dados e Desempenho da Conectividade de Rede no Skype para Empresas Online

Otimizar a sua rede para o Skype para Empresas 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