A API Microsoft Graph é um serviço que permite ler, modificar e gerir quase todos os aspectos do Azure AD e do Office 365 sob um único endpoint da API REST. Neste artigo, aprenda a transformar sua API em PowerShell Graph API.
Pré-requisitos
Se você quiser acompanhar comigo neste artigo, certifique-se de que primeiro cumpra os seguintes critérios:
- Rodando Windows PowerShell 5.1 (Esta é a versão que testei. Outras versões podem funcionar, mas não são garantidas)
- Um inquilino Azure
- Autenticado no Azure com uma conta com permissões de administrador global ou permissões de registro de aplicativos na assinatura e um administrador global para aceitar seus pedidos de registro de aplicativos.
Criando uma Identidade de Aplicativo para a API Microsoft Graph
Para acessar a API Microsoft Graph, você primeiro precisa de uma identidade para obter um token OAuth. Isso é feito principalmente com uma identidade de aplicativo que você pode criar no Portal Azure. Você pode criar uma identidade de aplicativo através do portal Azure. Para fazer isso:
- Vá até o Portal Azure e vá para Azure Active Directory.
- Clique em Registros de aplicativos em Gerenciar no menu à esquerda e clique no botão Novo registro.

- Insira um nome para sua aplicação e clique em Registrar.
- Copie o ID do aplicativo para uso posterior.

Criando segredos para a API Microsoft Graph
Você pode autenticar no Graph API usando dois métodos principais: AppId/Secret e autenticação baseada em certificado. Você precisará autenticar ao conectar-se ao Graph API com o PowerShell.
Vamos cobrir como autenticar com ambos os métodos.
AppId/Secret
Um ID/segredo de aplicativo é como um nome de usuário/senha regular. O ID do aplicativo consiste em um GUID em vez de um nome de usuário e a senha é apenas uma sequência aleatória.
Para criar um segredo, clique em Certificados e segredos no menu à esquerda e pressione Novo segredo do cliente.

Insira uma descrição para o segredo e selecione quando deseja que ele expire. Agora é apenas uma questão de solicitar permissão para acessar os dados desejados.
Certificado
Existe a possibilidade de criar um certificado autoassinado e fazer upload de sua chave pública no Azure. Esta é a maneira preferida e mais segura de autenticação.
Primeiro, você precisará gerar um certificado autoassinado. Felizmente, isso é feito facilmente com o PowerShell.
Agora, faça o upload do certificado autoassinado que você exportou para $CerOutputPath
para o seu Aplicativo Azure clicando em Certificados e segredos no menu à esquerda e pressionando Fazer upload do certificado.

Adicionando permissões ao aplicativo
Dar as permissões adequadas ao aplicativo é importante – não apenas para a funcionalidade do seu aplicativo, mas também para a segurança. O conhecimento disso e (quase) tudo o mais na API do Microsoft Graph pode ser encontrado na documentação.
Assim que eu conseguir configurar isso, vou reunir todos os eventos de segurança do meu locatário. Para poder fazer isso, eu preciso de permissão mínima de SecurityEvents.Read.All. Com isso, posso reunir e tomar medidas sobre eventos de Viagem Impossível, usuários conectados via VPN/TOR e assim por diante.
Para adicionar o SecurityEvents.Read.All à sua aplicação – clique em Permissões de API e depois em Adicionar Permissão. Isso apresentará não apenas a API do Microsoft Graph, mas também uma tonelada de outras aplicações no Azure. A maioria dessas aplicações é fácil de conectar assim que você souber como se conectar à API do Microsoft Graph.
Clique em Microsoft Graph > Permissões de Aplicativos > Eventos de Segurança e marque o SecurityEvents.Read.All. Depois disso, pressione o botão Adicionar Permissão.
Você viu que a coluna Consentimento do Admin Necessário foi definida como Sim nessa permissão? Isso significa que um administrador do locatário precisa aprovar antes que a permissão seja adicionada à aplicação.

Se você é um administrador global, pressione o Dar consentimento do administrador para ou peça a um Administrador Global para aprovar. Pedir permissão ao usuário em vez de um administrador apenas definir permissão de leitura/escrita é uma grande parte da autenticação OAuth. Mas isso nos permite contorná-lo para a maioria das permissões no Microsoft Graph.
Você provavelmente já viu isso no Facebook ou no Google: “Você permite que a aplicação X acesse seu perfil?”

Agora você está pronto – vamos fazer login e obter alguns dados!
Obter um Token de Acesso (ID do Aplicativo e Segredo)
Para isso, precisaremos enviar uma solicitação para obter um token de acesso de um ponto de extremidade OAuth do Microsoft Graph. E no corpo dessa solicitação, precisamos fornecer:
client_id
– Seu ID de Aplicativo – codificado em URLclient_secret
– Seu segredo de aplicativo – codificado em URLscope
– Uma URL codificada que especifica o que você deseja acessargrant_type
– Qual método de autenticação você está usando
O URL para o ponto de extremidade é https://login.microsoftonline.com/<tenantname>/oauth2/v2.0/token. Você pode solicitar um token de acesso com o PowerShell e a API do Graph usando o trecho de código abaixo.
Obter um Token de Acesso (Usando um Certificado)
A autenticação na API do Microsoft Graph com um certificado é um pouco diferente do fluxo normal de AppId/Secret. Para obter um token de acesso usando um certificado, você precisa:
- Crie um cabeçalho de Token Web Java (JWT).
- Crie um payload JWT.
- Assine o cabeçalho JWT E payload com o certificado autoassinado previamente criado. Isso criará um token de acesso feito sob medida usado para solicitar um token de acesso ao Gráfico da Microsoft.
- Crie um corpo de solicitação contendo:
client_id=<ID do aplicativo>
client_assertion=<o JWT>
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
scope=<escopo codificado em URL>
grant_type=client_credentials
- Faça uma solicitação POST com o corpo para o endpoint oauth com
Authorization=<JWT>
no cabeçalho.
Como fazer isso não era óbvio na documentação da Microsoft, mas aqui está o script do PowerShell para fazer isso acontecer:
Compreendendo a Saída do Token de Acesso
Uma vez que tenha obtido um token de acesso, seja através do ID/segredo da aplicação ou por meio de um certificado, você deverá ver um objeto com quatro propriedades.
token_type
– O tipo de tokenexpires_in
– O tempo em segundos que o token de acesso é válidoext_expires_in
– Similar aoexpires_in
, mas para garantir a resiliência em caso de interrupção do serviço de tokenaccess_token
– O que buscamos
Em seguida, você criará um cabeçalho usando token_type
e access_token
e começará a fazer solicitações com o PowerShell para a API do Microsoft Graph.
Fazendo Solicitações para a API do Microsoft Graph com o PowerShell
Agora, comece a fazer algumas solicitações para a API.
No nosso exemplo, você precisará primeiro da URL para listar os alertas de segurança. Lembre-se de consultar a documentação da API do Microsoft Graph para ver o que é necessário.
Neste caso, você precisa de um cabeçalho com Authorization=Bearer <access_token>
e uma solicitação GET para o ponto de extremidade de Alertas da API do Graph. Veja como fazer isso com o PowerShell.
Agora, se você tiver algum alerta de segurança na variável $SecurityAlerts
, ele deve se parecer com isso:
Inspeccionar um único alerta de segurança como JSON parecerá assim:
Compreensão e Gerenciamento da Paginação da Saída da API
A API do Microsoft Graph tem um limite por função sobre quantos itens ela retornará. Esse limite é por função, mas digamos que sejam 1000 itens. Isso significa que você só pode obter no máximo 1000 itens em sua solicitação.
Quando esse limite é atingido, ele usará a paginação para entregar o restante dos itens. Ele faz isso adicionando a propriedade @odata.nextLink
à resposta da sua solicitação. @odata.nextLink
contém um URL que você pode chamar para obter a próxima página da sua solicitação.
Você pode ler todos os itens verificando essa propriedade e usando um loop:
Conclusão
Depois de aprender a autenticar na API do Graph, é bastante fácil coletar dados dela. É um serviço poderoso que é usado muito menos do que deveria.
Felizmente, existem muitos módulos por aí já para utilizar a API do Microsoft Graph, mas para atender às suas próprias necessidades, você pode precisar criar seu próprio módulo para ela. Usando as habilidades que você aprendeu neste artigo, você deveria estar bem encaminhado.
Para mais informações sobre o controle de acesso de convidados no Office 365, escrevi um artigo detalhado no meu blog que eu encorajo você a dar uma olhada.