Juan C. Delgado Concepcion

Data Engineer

Software Engineer

Data Analyst

Data Architect

Juan C. Delgado Concepcion

Data Engineer

Software Engineer

Data Analyst

Data Architect

Blog Post

Automation Compliance

Automation Compliance

⚙️ Configuración en Azure Automation

En esta sección se explica cómo ejecutar el script de automatización en Azure Automation, usando PowerShell 7.2 y una App Registration para autenticación segura en Microsoft Graph.


🧭 1. Crear o seleccionar una Automation Account

1️⃣ Inicia sesión en portal.azure.com
2️⃣ Busca Automation Accounts en la barra superior.
3️⃣ Crea una nueva cuenta o selecciona una existente.


🧩 2. Crear un Runbook

1️⃣ En el panel lateral, navega a Process Automation → Runbooks.
2️⃣ Haz clic en ➕ Create a Runbook.
3️⃣ Asigna un nombre descriptivo (por ejemplo, IntuneCompliance-Report).
4️⃣ En Runbook type, selecciona PowerShell 7.2.
5️⃣ Guarda y luego abre el nuevo Runbook para editarlo.


💻 3. Agregar el script

1️⃣ Haz clic en Edit.
2️⃣ Pega el contenido del script de PowerShell completo.
3️⃣ Asegúrate de modificar las variables de autenticación:

$TenantId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$ClientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$ClientSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Replace these values with your actual App Registration details and Teams webhook
$TenantId     = "********************************"
$ClientId     = "*******************************"
$ClientSecret = "**********************"
$WebhookUrl   = "********************************************"

# Get token
$body = @{ 
    client_id     = $ClientId
    scope         = "https://graph.microsoft.com/.default"
    client_secret = $ClientSecret
    grant_type    = "client_credentials"
}

$tokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token" -Method POST -Body $body -ContentType "application/x-www-form-urlencoded"
$accessToken = $tokenResponse.access_token

# Prepare Graph call
$headers = @{ Authorization = "Bearer $accessToken" }
$startDate = (Get-Date).AddDays(-7).ToString("yyyy-MM-ddTHH:mm:ssZ")
$uri = "https://graph.microsoft.com/beta/deviceManagement/auditEvents?`$filter=activityDateTime ge $startDate and category eq 'DeviceConfiguration'&`$orderby=activityDateTime desc"
$response = Invoke-RestMethod -Uri $uri -Headers $headers -Method Get

# Filter for ConfigurationPolicy changes
$policyChanges = $response.value | Where-Object { $_.activityType -like '*DeviceManagementConfigurationPolicy*' } | Select-Object -First 5

if ($policyChanges.Count -eq 0) {
    $messageText = "No policy changes detected in the last 7 days."
} else {
    $entries = $policyChanges | ForEach-Object {
        $policy = $_.resources[0].displayName
        $user   = $_.actor.userPrincipalName
        $type   = $_.activityType
        $date   = Get-Date $_.activityDateTime -Format "yyyy-MM-dd HH:mm"
        "- [$date] $type by $user on '$policy'"
    }
    $messageText = "**Intune Policy Change Audit**`nLast 7 days:`n`n" + ($entries -join "`n")
}

# Send to Teams
$payload = @{
    "@type"      = "MessageCard"
    "@context"   = "http://schema.org/extensions"
    "summary"    = "Policy Changes Audit"
    "themeColor" = "FFAA00"
    "title"      = "Weekly Intune Policy Change Report"
    "text"       = $messageText
} | ConvertTo-Json -Depth 6

Invoke-RestMethod -Uri $WebhookUrl -Method POST -Body $payload -ContentType 'application/json'

🔐 4. Crear una App Registration

1️⃣ Ve a Microsoft Entra ID → App registrations → New registration.
2️⃣ Asigna un nombre (ej. Graph-Intune-Automation).
3️⃣ Copia el Tenant ID y el Client ID desde la pestaña Overview.
4️⃣ En Certificates & Secrets, crea un nuevo Client Secret y guarda su valor.


🧾 5. Otorgar permisos a la aplicación

1️⃣ Dentro de la App Registration, ve a API Permissions → Add a permission.
2️⃣ Selecciona Microsoft Graph → Application permissions.
3️⃣ Agrega los permisos necesarios, por ejemplo:

DeviceManagementManagedDevices.Read.All
DeviceManagementConfiguration.Read.All
DeviceManagementConfiguration.ReadWrite.All

4️⃣ Haz clic en Grant admin consent para aprobarlos.


🚀 6. Probar el Runbook

1️⃣ Regresa al Runbook y selecciona Publish → Yes.
2️⃣ Haz clic en Start para ejecutarlo manualmente.
3️⃣ Verifica que el mensaje se envíe correctamente al canal de Microsoft Teams configurado.


Listo:
Tu automatización ahora ejecuta el script desde Azure, recopila métricas de cumplimiento desde Intune y envía alertas automáticas al canal de Teams configurado.

Tags:
Write a comment

Powered by