Activación de Registros
Event Hubs
Desde el portal de Azure, busque Event Hubs y selecciónelo:


-
Desde el portal de Azure, busque Event Hubs y selecciónelo
-
Haga clic en +Crear
-
Complete los parámetros según su entorno de mejores prácticas (ej.: suscripción, grupo de recursos, etc.), excepto los siguientes valores:
- General
- Nivel de precios: Estándar
- Unidades de rendimiento: 1
- Avanzado
- Versión mínima de TLS: Versión 1.2
- Autenticación local: Habilitada
- Red
- Método de conectividad: Acceso público
- General
Tenga en cuenta que una vez que los recursos que desea monitorear envíen registros al Event Hub creado anteriormente, los Event Hubs correspondientes se crearán automáticamente.
Por ejemplo:


Azure Function
- Desde el portal de Azure, busque Function App y selecciónelo:


- Complete los parámetros según su entorno de mejores prácticas (ej.: suscripción, grupo de recursos, etc.), excepto los siguientes valores:
- General
- Opción de alojamiento: Funciones Premium
- ¿Quiere implementar código o una imagen de contenedor? Código
- Pila de ejecución: .NET
- Versión: 8 LTS, modelo en proceso
- Sistema operativo: Windows
- Plan de precios: Elastic Premium EP1 (210 ACU en total, 3.5 GB de memoria, 1 vCPU)
- Red
- Habilitar acceso público: Sí
- Monitoreo
- Habilitar Application Insights: No (actívelo después de que la función haya sido creada)
Después de que la función haya sido implementada, complete los siguientes campos:
Resumen – Funciones - +Crear
- Seleccione una plantilla: Trigger de Azure Event Hub
- Configure los demás parámetros según el Event Hub creado anteriormente.
- Variables de entorno: NEBULA_API_KEY
¿Cómo obtener una API KEY?
Vaya a nebula.altermaind.com y siga estos pasos:
- Menú -> Azure -> Claves API (recuerde, esta funcionalidad solo es visible para el rol orgaAdmin)
- Copie la clave API primaria y utilícela como valor para la variable NEBULA_API_KEY


Código de la Función Azure
#r "Newtonsoft.Json"
#r "Azure.Messaging.EventHubs"
#r "System.Net.Http"
#r "System.Memory.Data"
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Azure.Messaging.EventHubs;
using Newtonsoft.Json;
public static async Task Run(EventData[] events, ILogger log)
{
HttpClient httpClient = new HttpClient();
string NEBULA_URL = "https://azurerm-intake-api.altermaind.com/api/azurerm-logs";
string NEBULA_API_KEY = Environment.GetEnvironmentVariable("NEBULA_API_KEY");
const int INITIAL_DELAY = 1000; // Retraso inicial en milisegundos
foreach (EventData eventData in events)
{
string messageBody = Encoding.UTF8.GetString(eventData.Body.ToArray());
log.LogInformation($"Mensaje recibido: {messageBody}");
bool messageSent = false;
int retryCount = 0;
int delay = INITIAL_DELAY;
while (!messageSent)
{
try
{
// Preparar la solicitud HTTP
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, NEBULA_URL)
{
Content = new StringContent(messageBody, Encoding.UTF8, "application/json")
};
// Agregar la clave API a los encabezados de la solicitud
httpRequestMessage.Headers.Add("X-API-KEY", NEBULA_API_KEY);
// Enviar la solicitud HTTP al microservicio
HttpResponseMessage response = await httpClient.SendAsync(httpRequestMessage);
if (response.IsSuccessStatusCode)
{
log.LogInformation($"Mensaje enviado con éxito al microservicio. Respuesta: {await response.Content.ReadAsStringAsync()}");
messageSent = true;
}
else
{
log.LogError($"Error al enviar el mensaje al microservicio. Código de estado: {response.StatusCode}, Respuesta: {await response.Content.ReadAsStringAsync()}");
// Verificar si el código de estado está entre 400 y 499
if ((int)response.StatusCode >= 400 && (int)response.StatusCode <= 499)
{
log.LogError("Se produjo un error del cliente. No se reintentará.");
break;
}
}
}
catch (Exception ex)
{
log.LogError($"Excepción: {ex.Message}");
}
if (!messageSent)
{
retryCount++;
log.LogWarning($"Intento de reintento {retryCount} fallido. Esperando {delay}ms antes del próximo intento.");
await Task.Delay(delay);
delay *= 2; // Retroceso exponencial
}
}
}
}
Política
Esta guía está dividida en dos secciones principales: una para propósitos generales y otra para recursos específicos.
General
-
Desde el Portal de Azure, busca "Política" y selecciónala.
-
Bajo "Creación", selecciona "Definiciones", luego "+ Definiciones de Política": se abrirá el siguiente asistente:
a. Define la ubicación: el nivel más alto de tu directorio, típicamente el grupo de administración raíz, ya que en los pasos sucesivos puedes asignar la política a los niveles inferiores (por ejemplo, suscripción).
El contenido de los otros formularios depende de tu entorno.
- Una vez que se haya creado y guardado la política, el siguiente paso es asignarla.
Antes de continuar, es necesario tener el rol de Administrador de Acceso de Usuario para el ámbito de la asignación de la política.
Selecciona la política bajo "Creación" – "Definiciones".
-
Haz clic en "Asignar política", aparecerá el siguiente asistente:
-
Pestaña Básica
- Ámbito: el nivel más alto de tu directorio, típicamente el grupo de administración raíz, para dirigirse a todos los recursos afectados por la política.
- La definición de la política y el nombre de la asignación se configuran directamente en la política. El contenido de los otros formularios depende de tu entorno.
-
Pestaña de Parámetros
Selecciona el Event Hub creado previamente.
-
Pestaña de Remediación
- Tipo de Identidad Administrada: Identidad administrada asignada por el sistema.
Los otros campos se completan automáticamente según la definición de la política.
- Mensaje de incumplimiento: según tu entorno.
- Crear y guardar la asignación.
-
-
Una vez que la política ha sido asignada, su tiempo de evaluación depende de varios eventos según la documentación de Microsoft.
Es posible monitorear el estado de la evaluación bajo la columna "Remediación – Políticas para remediar – Recursos para remediar".
-
Una vez que se haya completado la ingestión de recursos para remediar, haz clic en la política deseada (Remediación – Políticas para remediar) y ajusta los parámetros de la remediación según tu elección:
- Recursos aplicables para remediar: aquí puedes seleccionar el ámbito (por ejemplo, grupo de administración, suscripción, etc.).
- Ubicaciones
Finalmente, selecciona "Remediar".
-
Es posible monitorear el estado de la remediación bajo "Remediación":
- Tarea de remediación