Reciba notificaciones sobre los cambios en el perfil de configuración de Intune

08:21 13/09/2021 | 1 Lượt xem


Ha configurado sus perfiles de configuración, políticas de cumplimiento, etc. en Microsoft Intune y después de muchas pruebas, pilotos e incluso más pruebas, ¡ahora está en producción! ¡Tiempo para celebrar!

Pero ahora que el entorno está en producción, un cambio en uno de sus perfiles de producción puede tener un impacto (importante) en la experiencia del usuario y tal vez un cambio de política podría incluso necesitar la aprobación del Consejo Asesor de Cambios.

ya tenemos un registro de auditoría disponible en el centro de administración de Endpoint Manager. Por lo tanto, los cambios de política ahora están disponibles, pero no hay ninguna opción para recibir notificaciones de cambios de perfil. Prefiero que me notifiquen de un cambio de perfil en lugar de tener que buscar en los registros, ya que un incidente es un informe sobre los usuarios con problemas que podrían ser causados ​​por un cambio de perfil.

No sería útil conseguir notificado cuando uno de perfiles de producción es (por accidente) cambió?

Cómo están disponibles los eventos a través de Gráfico API, deberíamos poder construir algo para que esto funcione con aplicaciones lógicas.

Y no quiero que me notifiquen sobre cada cambio de política, sino solo sobre los cambios en los perfiles de producción. Si estamos seguros de que tenemos una convención de nomenclatura en su lugar, mediante la cual podemos hacer un cambio entre los perfiles de producción (PRD) y de prueba (TST), podemos hacer algunos filtros en el flujo de la aplicación lógica.

Cuando tenemos este flujo en su lugar, podemos recibir una notificación, por ejemplo, a través de equipos o correo electrónico.

Veamos cómo construir este flujo de Logic Apps.

La solución de un vistazo

El flujo que vamos a construir no es muy grande.

El flujo comienza con un Reaparición desencadenar. Puede programarlo para que se ejecute una vez al día, una vez a la hora, varias veces al día. Lo que sea necesario.

En cada ejecución (en mi ejemplo, cada hora), se consulta Microsoft Graph para eventos de auditoría a través de un HTTP acción. En ese momento, los eventos de auditoría se recuperan de la hora anterior.

Después de eso, usamos un Seleccione acción, para filtrar los datos que necesitamos en la notificación de tiempo.

Para seguir procesando estos datos, analizamos los datos con un analizar JSON acción.

Para hacer el filtrado, usamos una acción Condición. Con esta acción eliminamos eventos de perfiles que no están en producción y solo procesamos eventos de perfiles de producción.

En mi ejemplo utilizo un Publicación HTTP acción, para publicar un mensaje en un canal de equipo.

Requisitos

tenemos algo requisitos para poner ese flujo a trabajar. En primer lugar, necesitamos un Registro de la aplicación de Azure. Necesitamos el registro de la aplicación para la autenticación. Microsoft Graph para realizar una acción HTTP. En este registro de la aplicación, establecemos permisos para que podamos obtener los eventos de auditoría a través de nuestras consultas. El permiso mínimo para esta transmisión es DeviceManagementApps.Read.All.

Para proteger las acciones HTTP, utilizo un Azure Key Vault, que se describe en esta publicación anterior.

En este ejemplo, uso una acción HTTP para enviar una notificación a un canal de Teams. Por esto, un Conector de webhook de entrada de equipo debe estar en su lugar.
También puede enviar un correo electrónico mediante la acción Enviar correo electrónico.

Configurar el flujo de la aplicación lógica

Ingrese al portal de Azure y abra el aplicaciones lógicas Servicio. Aquí, cree una nueva aplicación lógica en blanco.

Abra el flujo y, en el cuadro de búsqueda de conexiones y activadores, busque Calendario. Seleccione Programar y seleccione Reaparición que funciona como nuestro activador de flujo.

Elijo ejecutar esta transmisión de aplicación lógica cada hora.

La primera acción que agregamos es una Azure Key Vault action para recuperar el secreto para la autenticación de la siguiente acción HTTP. Busque Azure Key Vault y seleccione obtener secreto.

Inserte al menos el nombre de la bóveda y haga clic en entrar.

introducir el nombre secreto.

Agrega uno HTTP acción.
Igual que Método Seleccione TÓMALO.
Igual que ODIO digitar:

https://graph.microsoft.com/beta/deviceManagement/auditEvents?$filter=%20activityDateTime%20gt%20

Este URI va seguido de un expresión. La expresión agrega la hora actual (UTC) menos 1 hora. O la hora actual menos un día. La expresión que se debe utilizar depende de la frecuencia con la que se activa el flujo.

La expresión para menos 1 hora es:

formatDateTime(addHours(utcNow(),-1),'yyyy-MM-ddTHH:mm:ssZ')

La expresión para menos 1 día es:

formatDateTime(addDays(utcNow(),-1),'yyyy-MM-ddTHH:mm:ssZ')

En verificación de acción HTTP Autenticación y elige Active Directory OAuth como tipo de autenticación. introducir el Inquilino, Identificación del cliente (desde el registro de la aplicación) y Público.
Y asegúrese de seleccionar el Valor secreto de Key Vault de la acción de Key Vault (que se encuentra a través de contenido dinámico).

Así es como se ve nuestra acción HTTP.

A continuación se muestra un ejemplo del resultado de la acción HTTP.
Quiero obtener algunos valores de esta salida para agregar a mis notificaciones, como:
Nombre para mostrar
displayName (que se encuentra en las funciones)
activityDateTime
Nombre del componente
activityOperationType
userPrincipalName (encontrado en actor)
tipo (encontrado en actor)

Dado que uno de estos valores de salida está en un elemento Array, no podemos simplemente usar un JSON Parse para obtener el valor (esto devolvería la matriz completa). Para esto, necesitamos usar una expresión con un índice entero. Entonces usamos una acción Seleccionar para obtener todos los valores.

agregamos un Operaciones de datos llamado acción Seleccione.

usamos un expresión para obtener los datos del cuerpo de salida de la salida HTTP. Agregue la expresión a continuación en el campo Desde a través de la pestaña de expresión. Asegúrese para reemplazar HTTP_ACTION_NAME con el nombre de su acción HTTP, pero con guiones bajos en lugar de espacios.

body('HTTP_ACTION_NAME')?['value']

Luego ingrese todos los nombres clave a la izquierda. Puede elegir los nombres de las claves usted mismo.

A la derecha, necesitamos los valores (elementos) de la acción HTTP anterior.
Para obtener estos elementos, usamos una expresión como la siguiente:

item()?['ITEMNAME']

Por ejemplo, para obtener activityDateTime:

item()?['activityDateTime']

Cuando el elemento está ubicado en otro objeto, necesitamos una expresión como la que se muestra a continuación, ya que userPrincipalName se encuentra en actor:

item()?['actor']?['userPrincipalName']

Esto no es posible para una matriz como Resources. Necesitamos usar un índice entero. Dado que el nombre para mostrar se encuentra en el primer nivel de la matriz [0] ya que todo el índice comienza con 0.

item()['Resources']?[0]?['displayName']

Las expresiones que usé:

item()?['displayName']
item()['Resources']?[0]?['displayName']
item()?['activityDateTime']
item()?['componentName']
item()?['activityOperationType']
item()?['actor']?['userPrincipalName']
item()?['actor']?['type']

Ingrese todas las expresiones una por una.

Esta es la acción Seleccionar completa.

Guardar  la aplicación lógica y correr el flujo.
Cuando termine, abra la secuencia del historial de ejecución y abra la acción Seleccionar.
copia de las salidas cuerpo. Usaremos esto como un ejemplo de carga útil en la siguiente acción.

Cuando el campo de salidas no contiene ningún dato, no se realizan cambios durante la última hora. Realice un pequeño cambio en uno de sus perfiles de Intune.

Luego agregamos un analizar JSON acción, que también es una acción de Operaciones de datos.
Como contenido, utilizamos el Salida de la acción Seleccionar anterior.
Completamos el esquema usando el muestra de carga útil que acabamos de copiar en el paso anterior. Hacer clic Utilice la carga útil de muestra para generar el esquema y pegue los datos copiados en el cuadro que generará el esquema.

Para filtrar los eventos de auditoría que no son de producción, podemos hacer uso de un Enfermedad, el cual es un acción de control. Filtro por el nombre para mostrar que se encuentra en recursos porque mis perfiles de producción comienzan con PRD en su nombre para mostrar.

Cuando el evento de auditoría contiene un nombre para mostrar que comienza con PRD, el resultado de la condición es Verdad. Por lo tanto, nuestro flujo sigue siendo Verdadero (y se detiene cuando el resultado es Falso).
Agrega otro Acción HTTP (en verdad).

Igual que Método Seleccione PUBLICAR.
Igual que ODIO ingrese la URL del webhook de entrada.
Igual que Encabezados ingrese Content-Type – application / json

En el cuerpo, agregamos el texto y el título en formato JSON. A continuación se muestra el formato JSON que necesitamos usar para esto, sin nuestras variables:

{
 "text": "WRITE YOUR MESSAGE TEXT HERE",
  "title": "WRITE YOUR TITLE HERE"
}

Podemos usar contenido dinámico (variables) de la acción PARSE JSON anterior e insertar nuestro propio texto.
Use n n en el texto para crear nuevas líneas en el mensaje de texto; de lo contrario, el mensaje constará de una línea larga de texto.
Y solía ** para poner texto en negrita.

Este es el JSON de mi ejemplo anterior:

{
  "text": "**Activity:** @{items('For_each_2')['displayName']}nn **Profile Name:** @{items('For_each_2')['ResourcesDisplayname']}nn **Date:** @{items('For_each_2')['activityDateTime']}nn **Component Name:** @{items('For_each_2')['componentName']}nn **Actor:** nn **UPN:** @{items('For_each_2')['UPN']}nn **Type:** @{items('For_each_2')['actortype']}nn",
  "title": "Intune profile activity '@{items('For_each_2')['ResourcesDisplayname']}' - @{items('For_each_2')['activityOperationType']}"
}

Este es el flujo para recibir notificaciones sobre los cambios en el perfil de Intune:

Decidí no incluir las propiedades modificadas en la notificación en sí. Esto haría que la notificación fuera un desastre, ya que las propiedades modificadas podrían contener una gran cantidad de datos (no estructurados). Con la información que tenemos en la notificación, podemos consultar el evento en la sección de auditoría del portal

Pero puede, por ejemplo, elegir enviar un correo electrónico (en lugar de un mensaje de Teams) y agregar los datos de propiedades modificados a un archivo adjunto de correo electrónico.

¡Gracias por leer el articulo!

Related Posts

Agregar fondos a archivos PDF

Este artículo explicará cómo agregar un fondo a un PDF con Foxit PDF Editor. Para agregar un nuevo fondo, haga lo siguiente: 1. Abra un documento al que desee agregar un fondo y elija...

lên đầu trang