Guías técnicas

Enviar mensajes a Microsoft Teams desde FCWP utilizando SNS Notifications de AWS

A continuación os explicamos como integrar tres tecnologías diferentes para poder utilizar tecnología de mensajería corporativa (Microsoft Teams o Slack), tecnología de Fortinet, en concreto FortiCWP, y la funcionalidad de SNS Notification de AWS.

Con esta integración conseguimos que FCWP sea parte de nuestro equipo de IT, enviando mensajes en tiempo real para su análisis. Por ello, estos son los pasos necesarios:

  • Prerequisitos. Para esta integración necesitaremos una cuenta de AWS con al menos esos servicios:
    • Servicio AWS SNS, para recibir y almacenar notificaciones de alerta.
    • AWS Lambda Service, para poder enviarlo a Microsoft Teams.
    • Servicio de registro de AWS CloudWatch, para ver los registros del servicio de AWS (opcional).
    • Se recomienda crear al menos un canal de Microsoft Teams, donde AWS Lambda enviará mensajes de alerta.
  • Flow control. Este es el flujo de trabajo para la integración:
    • FortiCWP enviará notificaciones al Servicio SNS.
    • AWS SNS Service almacena el próximo mensaje y lo envía a la función AWS Lambda.
    • En este punto, es AWS Lambda analizará la notificación JSON y la enviará al canal específico de Microsoft Teams a través del mensaje estándar de WebHook.
  • Configuración paso a paso:
      • MS Teams
        1. Abre MS Teams, seleccione “Canal” y luego haz clic en “Más opciones” y selecciona Conectores.
        2. Aparecerá una ventana emergente. Seleccione Todo de la sección Categoría en el panel izquierdo y haga clic en el botón “Agregar” para añadir Webhook entrante.
        3. Aparecerá otra ventana emergente. Haga clic en el botón Instalar. Eso es todo para configurar el conector de Webhooks entrantes para un canal.
        4. Después de configurar el conector de Webhooks entrantes, ahora debemos marcarlo.
        5. Haz click en “Nombre” y puede cambiar la imagen (Opcional). clic en el botón Crear.
        6. Paso final para copiar la URL y hacer clic en el botón Listo. Guarda esta URL porque es donde AWS Lambda enviará un mensaje de notificación.

Enlace con toda la información: https://sankalpit.com/how-to-get-channel-webhook-url/

    • Servicio AWS SNS
      1. Abre la consola de AWS, seleccione su región y busque “Sistemas de notificación simples” en la pestaña Servicio (arriba a la derecha).
      2. Crea un nuevo tema. Rellena los dos campos de nombre únicamente, los otros son opcionales.
      3. Copia la identificación ARN.
    • Servicio AWS Lambda
      1. En la consola de AWS, busque “Lambda” en la pestaña Servicio (arriba a la derecha).
      2. Haga clic en Crear función, con las siguientes opciones:
      3. Selecciona “Autor desde cero”.
      4. Haz click en nombre de función.
      5. Selecciona en la lista Tiempo de ejecución: Python 3.6
      6. Haga clic en “Crear función”.
      7. Ahora, necesitamos configurar la función Lambda con un disparador y un código Python, para hacer eso:
        1. Haz clic en “+ Agregar disparador”, seleccione SNS de la lista y su tema SNS se mostrará en la lista. Haz clic en “Agregar”.
        2. Ahora, haz clic en el nombre del icono de Lambda y desplázate hacia abajo hasta la sección Código de función.
        3. Elimina todo el código existente y pega este:

import json
import logging
import os

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError

logger = logging.getLogger()
logger.setLevel(logging.INFO)


def lambda_handler(event, context):
logger.info(“Event: ” + str(event))
message = json.loads(event[‘Records’][0][‘Sns’][‘Message’])
logger.info(“Message: ” + str(message))

   

    HOOK_URL = os.environ[‘HookUrlGeneral’]

    alertId = message[‘alertId’]
vendor = message[‘vendor’]
description = message[‘description’]

    colour = “d63333”
title = “Red Alert – A bad thing happened in ” + vendor
text = description + “. AlertID: ” + alertId

    message = {
“@context”: “https://schema.org/extensions“,
“@type”: “MessageCard”,
“themeColor”: colour,
“title”: title,
“text”: text
}

    req = Request(HOOK_URL, json.dumps(message).encode(‘utf-8’))
try:
response = urlopen(req)
response.read()
logger.info(“Message posted”)
except HTTPError as e:
logger.error(“Request failed: %d %s”, e.code, e.reason)
except URLError as e:
logger.error(“Server connection failed: %s”, e.reason)

4. Último paso: crea una nueva entrada en “Variables de entorno” llamada ‘HookUrlGeneral’ como clave, con tu enlace Webhook creado en la sección Equipos de Microsoft.

    • FortiCWP
      1. Ir a la consola FortiCWP, haga clic en la sección “Administrador” y en “Notificación”.
      2. Agrega un nuevo “Receptor de notificaciones SNS” con la siguiente información:
      3. Selecciona su cuenta de AWS.
      4. Completa SNS ARN con la identificación de ARN en el paso “AWS SNS Service”, sección de configuración.
      5. Región de AWS: selecciona su región de AWS donde se implementan SNS y Lambda.
  • Ejemplo:

Tags

Contenidos relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *