Uso de la API de Microsoft Graph para acceder a Azure a través de PowerShell
Microsoft Graph API le permite acceder a cualquier objeto en el arrendatario de Azure AD (Microsoft 365) mediante un solo punto REST API (
https://graph.microsoft.com). Es probable que pienses que puede ser interesante solo para desarrolladores web, pero es todo lo contrario. Solo se puede acceder a algunos datos, objetos o propiedades de recursos en Microsoft 365 a través de Microsoft Graph. Para recopilar datos analíticos, estadísticas u otra información, un administrador de Azure debe usar Microsoft Graph.
En este artículo, le mostraremos cómo registrar su aplicación en Azure AD, obtener un token de autenticación, conectarse a diferentes recursos de Microsoft 365 (Azure AD, Office 365, Intune, SharePoint, Teams, OneNote, etc.) usando RESTful y Potencia Shell
Invoke-RestMethodcmdlet. Puede usar Microsoft Graph tanto para obtener datos como para administrar objetos en Azure.
Registro de la aplicación Microsoft Graph en Azure AD
Para acceder a los recursos de su arrendatario de Azure mediante Microsoft Graph, debe crear una nueva aplicación de Azure AD y permitirle acceder a diferentes objetos de Azure.
-
Inicie sesión en Azure Portal https://portal.azure.com/
Vaya a Azure Active Directory -> Registro de la aplicación;
Crear una nueva aplicación (Nuevo registro);
Ingrese el nombre de su aplicación: azGraphPowerShellApp, seleccione quién puede usar la aplicación:
Accounts in this organizational directory only (tenantname only - Single tenant)y haga clic en Registrarse;
A continuación, seleccione a qué recursos de Azure puede acceder su aplicación. Vaya a la sección permisos de API;
De forma predeterminada, una aplicación solo puede leer datos sobre un usuario actual de AzureAD (
User.Read). Le otorgaremos permisos de lectura en todas las propiedades de los usuarios y grupos de Microsoft 365;
-
Haga clic en Agregar un permiso, seleccione Microsoft Graph;
Hay dos tipos de permisos básicos en Microsoft Graph (Permiso delegado: cuando se hace algo en nombre de un usuario que ejecuta una aplicación y Permiso de aplicación: cuando una aplicación es llamada por un guión externo). Seleccione Permiso de aplicación;
En la lista que aparece, puede seleccionar qué permisos le asignará a su aplicación para acceder a los recursos y objetos de Azure. En mi ejemplo, he agregado Grupo ->
Group.Read.All, Miembro del grupo ->
GroupMember.Read.All, Usuario ->
User.Read.All(si desea que su aplicación lea cualquier dato en su arrendatario, seleccione
Directory.Read.All);
Haz clic en Otorgar consentimiento de administrador para otorgar acceso en nombre del administrador.
Para autenticarse en una aplicación, puede usar un certificado o un secreto. Un secreto es una contraseña generada automáticamente. El nombre de usuario es una ID de aplicación. Vamos a crear un secreto para tu aplicación.
Abra Certificados y secretos -> Nuevos secretos de cliente;
Ingrese el nombre de la clave y establezca su tiempo de validez (he especificado 12 meses);
Copie el valor del campo Valor (es la contraseña de la aplicación). Guarde la contraseña en Azure Key Vault o en su administrador de contraseñas, ya que después de salir de la aplicación, el valor de la contraseña se ocultará (tendrá que crear el secreto nuevamente);
A continuación, copie el ID de su aplicación (ID de cliente de la aplicación) y el ID de inquilino de Azure (ID de inquilino del directorio).
Pegue sus valores en las variables de PowerShell:
$ApplicationID = "1111111-1111-1111-1111-11111111111"
$TenatDomainName = "2222222-2222-2222-2222-222222222222"
$AccessSecret = "3333333333333333333333333333333333333333333"Conexión a Azure Microsoft Graph API mediante PowerShell
Para usar la API de Microsoft Graph desde PowerShell, no necesita instalar ningún módulo de PowerShell por separado (como Azure AD). Puede interactuar con él utilizando un
Invoke-RestMethodcmdlet.
Para conectarse a Graph API, debe obtener un token de acceso. El siguiente script de PowerShell le permite autenticarse en su aplicación y obtener un token de acceso a la API de Microsoft Graph.
En este ejemplo, estamos usando un secreto (una contraseña) como texto sin formato en el script. En la vida real, no se recomienda hacerlo. Debería solicitar un secreto de forma interactiva o extraerlo de una bóveda secreta (el módulo SecretManagement PowerShell puede ayudarlo a hacerlo). Además, cuide sus secretos si almacena sus scripts de PowerShell en Git.
$ApplicationID = "1111111-1111-1111-1111-11111111111"
$TenatDomainName = "2222222-2222-2222-2222-222222222222"
$AccessSecret = "3333333333333333333333333333333333333333333"
$Body = @{
Grant_Type = "client_credentials"
Scope = "https://graph.microsoft.com/.default"
client_Id = $ApplicationID
Client_Secret = $AccessSecret
}
$ConnectGraph = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token -Method POST -Body $Body
$token = $ConnectGraph.access_tokenCon el token, puede ejecutar diferentes consultas en su arrendatario de Azure mediante GraphAPI.
Por ejemplo, el siguiente script muestra una lista de grupos en su Azure AD:
$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value.displayNamePuede mostrar la fecha en que se creó un grupo de Azure AD:
$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
$Groups=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value
$Groups | select displayName,createdDateTimePara mostrar un nombre de usuario, UPN y dirección de correo electrónico:
$GrapUserUrl = 'https://graph.microsoft.com/v1.0/users'
$users=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapUserUrl -Method Get).value
$users | select displayName,userprincipalname,mailSi no ha otorgado permisos para acceder a objetos de Azure AD a su aplicación, aparecerá el siguiente error al intentar ejecutar Invoke-RestMethod:
The remote server returned an error: (403) Forbidden.En los ejemplos anteriores, solo leemos datos de Azure AD mediante el método GET. Pero también puede usar los métodos POST, PUT, PATCH o DELETE para realizar cambios. Por ejemplo, puede crear un usuario en Azure AD, restablecer una contraseña, cambiar una descripción, etc.
Para ver las propiedades o los métodos disponibles de la API de Microsoft Graph en su navegador, puede usar Graph Explorer (https://developer.microsoft.com/en-us/graph/graph-explorer).
Microsoft también tiene un Microsoft Graph PowerShell SDK especial para interactuar con Microsoft Graph (
Install-Module Microsoft.Graph). Pero mostramos que puede acceder a Microsoft Graph directamente desde PowerShell.











