Transfiere registros de actividad de Microsoft Azure
En este documento, se describen los pasos necesarios para transferir los registros de actividad de Microsoft Azure (AZURE_ACTIVITY
) a Google Security Operations.
Configura una cuenta de almacenamiento
Completa los siguientes pasos para configurar una cuenta de Storage:
- En la consola de Azure, busca Cuentas de almacenamiento.
- Haga clic en Crear.
- Selecciona la suscripción, el grupo de recursos, la región, el rendimiento (se recomienda Estándar) y la redundancia (se recomienda GRS o LRS) necesarios para la cuenta, y, luego, ingresa un nombre para la nueva cuenta de almacenamiento.
- Haz clic en Revisar y crear, revisa el resumen de la cuenta y haz clic en Crear.
- En la página Resumen de la cuenta de almacenamiento, selecciona Claves de acceso en el panel de navegación izquierdo de la ventana.
- Haz clic en Mostrar claves y anota la clave compartida de la cuenta de almacenamiento.
- Selecciona Extremos en la navegación izquierda de la ventana.
- Toma nota del extremo del servicio de Blob. (https://<storageaccountname>.blob.core.windows.net/)
Configura el registro de actividad de Azure
Completa los siguientes pasos para configurar el registro de actividad de Azure:
- En la consola de Azure, busca Monitor.
- Haz clic en el vínculo Registro de actividad en la navegación de la izquierda de la página.
- Haz clic en Export Activity Logs en la parte superior de la ventana.
- Haz clic en Agregar parámetro de configuración de diagnóstico.
- Selecciona todas las categorías que desees exportar a Google SecOps.
- En Detalles del destino, selecciona Archivar en una cuenta de almacenamiento.
- Selecciona la suscripción y la cuenta de almacenamiento que creaste en el paso anterior.
- Haz clic en Save.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds > Agregar un feed nuevo
- Centro de contenido > Paquetes de contenido > Comenzar
Cómo configurar el feed de actividades de Microsoft Azure
- Haz clic en el paquete Azure Platform.
- Busca el feed de actividad de Microsoft Azure.
Especifica valores para los siguientes campos:
- Tipo de fuente: Microsoft Azure Blob Storage V2
- URI de Azure: Ingresa el valor del extremo de Blob Service que registraste anteriormente, con el sufijo insights-activity-logs (por ejemplo, https://acme-azure-chronicle.blob.core.windows.net/insights-activity-logs).
- Opción de eliminación de la fuente: Especifica si se deben borrar los archivos y directorios después de la transferencia.
- Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días más reciente. El valor predeterminado es de 180 días.
- Clave compartida: Ingresa el valor de la clave compartida que capturaste antes.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Haz clic en Crear feed.
Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros dentro de esta familia de productos, consulta Configura feeds por producto.
Referencia de la asignación de campos
Este código del analizador primero inicializa una gran cantidad de campos en cadenas vacías y, luego, realiza una serie de manipulaciones de cadenas y operaciones de análisis de JSON para extraer información relevante del mensaje del registro de actividad de Azure. Por último, asigna los datos extraídos a los campos del modelo de datos unificado (UDM), categoriza el tipo de evento y lo enriquece con detalles adicionales, como la gravedad, la información principal y los datos de la red.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
category | read_only_udm.security_result.category_details |
Se asigna directamente desde el campo "categoría" del registro sin procesar. |
callerIpAddress | read_only_udm.principal.asset.ip , read_only_udm.principal.ip |
Se asigna directamente desde el campo "callerIpAddress" en el registro sin procesar. |
correlationId | read_only_udm.security_result.detection_fields.correlationId |
Se asigna directamente desde el campo "correlationId" en el registro sin procesar. |
data.callerIpAddress | read_only_udm.principal.asset.ip , read_only_udm.principal.ip |
Se asigna directamente desde el campo "callerIpAddress" dentro del objeto "data" en el registro sin procesar. |
data.correlationId | read_only_udm.security_result.detection_fields.correlationId |
Se asigna directamente desde el campo "correlationId" dentro del objeto "data" en el registro sin procesar. |
data.DeploymentUnit | read_only_udm.target.resource.name |
Se asigna directamente desde el campo "DeploymentUnit" dentro del objeto "data" en el registro sin procesar. |
data.details | read_only_udm.metadata.description |
Se asigna directamente desde el campo "details" dentro del objeto "data" en el registro sin procesar, solo si el campo "details" no es "Unknown". |
data.entity | read_only_udm.additional.fields.entity |
Se asigna directamente desde el campo "entity" dentro del objeto "data" en el registro sin procesar. |
data.EventName | read_only_udm.metadata.product_event_type |
Se asigna directamente desde el campo "EventName" dentro del objeto "data" en el registro sin procesar. |
data.hierarchy | read_only_udm.additional.fields.hierarchy |
Se asigna directamente desde el campo "hierarchy" dentro del objeto "data" en el registro sin procesar. |
data.identity.authorization.action | read_only_udm.security_result.detection_fields.action |
Se asigna directamente desde el campo "action" dentro del objeto "authorization" del objeto "identity" en el registro sin procesar. |
data.identity.authorization.evidence.principalId | read_only_udm.principal.user.product_object_id , read_only_udm.principal.resource.product_object_id , read_only_udm.principal.group.product_object_id |
Se asigna directamente desde el campo "principalId" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar. El campo de UDM específico al que se asigna depende del valor del campo "principalType". Si "principalType" es "User" o "ServicePrincipal", se asigna a principal.user.product_object_id . Si "principalType" es "Group", se asigna a principal.group.product_object_id . Si "principalType" es "ServicePrincipal", se asigna a principal.resource.product_object_id . |
data.identity.authorization.evidence.principalType | read_only_udm.principal.resource.resource_subtype |
Se asigna directamente desde el campo "principalType" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar. |
data.identity.authorization.evidence.role | read_only_udm.principal.user.role_name |
Se asigna directamente desde el campo "role" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar. |
data.identity.authorization.evidence.roleAssignmentId | read_only_udm.principal.resource.attribute.labels.roleAssignmentId |
Se asigna directamente desde el campo "roleAssignmentId" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar. |
data.identity.authorization.evidence.roleAssignmentScope | read_only_udm.principal.resource.attribute.labels.roleAssignmentScope |
Se asigna directamente desde el campo "roleAssignmentScope" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar. |
data.identity.authorization.evidence.roleDefinitionId | read_only_udm.principal.resource.attribute.labels.roleDefinitionId |
Se asigna directamente desde el campo "roleDefinitionId" dentro del objeto "evidence" del objeto "authorization" del objeto "identity" en el registro sin procesar. |
data.identity.authorization.scope | read_only_udm.security_result.detection_fields.scope |
Se asigna directamente desde el campo "scope" dentro del objeto "authorization" del objeto "identity" en el registro sin procesar. |
data.identity.claims.aio | read_only_udm.security_result.detection_fields.aio |
Se asigna directamente desde el campo "aio" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.appid | read_only_udm.security_result.detection_fields.appid |
Se asigna directamente desde el campo "appid" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.appidacr | read_only_udm.security_result.detection_fields.appidacr |
Se asigna directamente desde el campo "appidacr" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.aud | read_only_udm.security_result.detection_fields.aud |
Se asigna directamente desde el campo "aud" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.exp | read_only_udm.security_result.detection_fields.exp |
Se asigna directamente desde el campo "exp" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.http://schemas.microsoft.com/identity/claims/identityprovider |
read_only_udm.security_result.detection_fields.identityprovider |
Se asigna directamente desde el campo "http://schemas.microsoft.com/identity/claims/identityprovider" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.http://schemas.microsoft.com/identity/claims/objectidentifier |
read_only_udm.security_result.detection_fields.objectidentifier |
Se asigna directamente desde el campo "http://schemas.microsoft.com/identity/claims/objectidentifier" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.http://schemas.microsoft.com/identity/claims/tenantid |
read_only_udm.security_result.detection_fields.tenantid |
Se asigna directamente desde el campo "http://schemas.microsoft.com/identity/claims/tenantid" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier |
read_only_udm.security_result.detection_fields.nameidentifier |
Se asigna directamente desde el campo "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.iat | read_only_udm.security_result.detection_fields.iat |
Se asigna directamente desde el campo "iat" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.iss | read_only_udm.security_result.detection_fields.iss |
Se asigna directamente desde el campo "iss" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.nbf | read_only_udm.security_result.detection_fields.nbf |
Se asigna directamente desde el campo "nbf" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.rh | read_only_udm.security_result.detection_fields.rh |
Se asigna directamente desde el campo "rh" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.uti | read_only_udm.security_result.detection_fields.uti |
Se asigna directamente desde el campo "uti" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.ver | read_only_udm.security_result.detection_fields.ver |
Se asigna directamente desde el campo "ver" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.claims.xms_tcdt | read_only_udm.security_result.detection_fields.xms_tcdt |
Se asigna directamente desde el campo "xms_tcdt" dentro del objeto "claims" del objeto "identity" en el registro sin procesar. |
data.identity.UserName | read_only_udm.principal.user.user_display_name |
Se asigna directamente desde el campo "UserName" dentro del objeto "identity" en el registro sin procesar. |
data.level | read_only_udm.security_result.severity , read_only_udm.security_result.severity_details |
Se asigna directamente desde el campo "level" dentro del objeto "data" en el registro sin procesar. El campo "level" también se usa para determinar el valor del campo severity . Si "level" es "Information" o "Informational", severity se establece como "INFORMATIONAL". Si "level" es "Warning", severity se establece en "MEDIUM". Si "level" es "Error", severity se establece en "ERROR". Si "level" es "Critical", severity se establece en "CRITICAL". |
data.location | read_only_udm.target.location.name |
Se asigna directamente desde el campo "location" dentro del objeto "data" en el registro sin procesar. |
data.operationName | read_only_udm.metadata.product_event_type |
Se asigna directamente desde el campo "operationName" dentro del objeto "data" en el registro sin procesar. |
data.properties.EventChannel | read_only_udm.additional.fields.properties EventChannel |
Se asigna directamente desde el campo "EventChannel" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.EventSource | read_only_udm.additional.fields.properties EventSource |
Se asigna directamente desde el campo "EventSource" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.EventId | read_only_udm.metadata.product_log_id |
Se asigna directamente desde el campo "EventId" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.eventProperties.cause | read_only_udm.security_result.detection_fields.cause |
Se asigna directamente desde el campo "cause" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.eventProperties.clientIPAddress | read_only_udm.principal.asset.ip , read_only_udm.principal.ip |
Se asigna directamente desde el campo "clientIPAddress" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.eventProperties.compromisedHost | read_only_udm.principal.asset.hostname , read_only_udm.principal.hostname |
Se asigna directamente desde el campo "compromisedHost" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.eventProperties.currentHealthStatus | read_only_udm.security_result.detection_fields.currentHealthStatus |
Se asigna directamente desde el campo "currentHealthStatus" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.eventProperties.previousHealthStatus | read_only_udm.security_result.detection_fields.previousHealthStatus |
Se asigna directamente desde el campo "previousHealthStatus" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.eventProperties.type | read_only_udm.security_result.detection_fields.type |
Se asigna directamente desde el campo "type" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.eventProperties.User | read_only_udm.principal.user.userid |
Se asigna directamente desde el campo "User" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.eventProperties.userName | read_only_udm.principal.user.user_display_name |
Se asigna directamente desde el campo "userName" dentro del objeto "eventProperties" del objeto "properties" del objeto "data" en el registro sin procesar, después de quitar el prefijo "SECURE\". |
data.properties.ipAddress | read_only_udm.principal.asset.ip , read_only_udm.principal.ip |
Se asigna directamente desde el campo "ipAddress" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.legacyChannels | read_only_udm.security_result.detection_fields.legacyChannels |
Se asigna directamente desde el campo "legacyChannels" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.legacyEventDataId | read_only_udm.security_result.detection_fields.legacyEventDataId |
Se asigna directamente desde el campo "legacyEventDataId" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.legacyResourceId | read_only_udm.security_result.detection_fields.legacyResourceId |
Se asigna directamente desde el campo "legacyResourceId" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.legacyResourceGroup | read_only_udm.security_result.detection_fields.legacyResourceGroup |
Se asigna directamente desde el campo "legacyResourceGroup" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.legacyResourceProviderName | read_only_udm.security_result.detection_fields.legacyResourceProviderName |
Se asigna directamente desde el campo "legacyResourceProviderName" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.legacyResourceType | read_only_udm.security_result.detection_fields.legacyResourceType |
Se asigna directamente desde el campo "legacyResourceType" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.legacySubscriptionId | read_only_udm.security_result.detection_fields.legacySubscriptionId |
Se asigna directamente desde el campo "legacySubscriptionId" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.operationId | read_only_udm.security_result.detection_fields.operationId |
Se asigna directamente desde el campo "operationId" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.result | read_only_udm.security_result.action_details |
Se asigna directamente desde el campo "result" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.statusCode | read_only_udm.network.http.response_code |
Se asigna directamente desde el campo "statusCode" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.suspiciousCommandLine | read_only_udm.target.process.command_line |
Se asigna directamente desde el campo "suspiciousCommandLine" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.suspiciousProcess | read_only_udm.target.process.file.full_path |
Se asigna directamente desde el campo "suspiciousProcess" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.suspiciousProcessId | read_only_udm.target.process.pid |
Se asigna directamente desde el campo "suspiciousProcessId" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.tlsVersion | read_only_udm.network.tls.version |
Se asigna directamente desde el campo "tlsVersion" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.userAgent | read_only_udm.network.http.user_agent , read_only_udm.network.http.parsed_user_agent |
Se asigna directamente desde el campo "userAgent" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.userAgentHeader | read_only_udm.network.http.user_agent , read_only_udm.network.http.parsed_user_agent |
Se asigna directamente desde el campo "userAgentHeader" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.properties.userId | read_only_udm.target.user.product_object_id |
Se asigna directamente desde el campo "userId" dentro del objeto "properties" del objeto "data" en el registro sin procesar. |
data.ReleaseVersion | read_only_udm.metadata.product_version |
Se asigna directamente desde el campo "ReleaseVersion" dentro del objeto "data" en el registro sin procesar. |
data.resourceId | read_only_udm.target.resource.name |
Se asigna directamente desde el campo "resourceId" dentro del objeto "data" en el registro sin procesar. |
data.resourceType | read_only_udm.additional.fields.resourceType |
Se asigna directamente desde el campo "resourceType" dentro del objeto "data" en el registro sin procesar. |
data.resultDescription | read_only_udm.metadata.description |
Se asigna directamente desde el campo "resultDescription" dentro del objeto "data" en el registro sin procesar. |
data.resultSignature | read_only_udm.additional.fields.resultSignature |
Se asigna directamente desde el campo "resultSignature" dentro del objeto "data" en el registro sin procesar. |
data.resultType | read_only_udm.security_result.action_details , read_only_udm.additional.fields.resultType |
Se asigna directamente desde el campo "resultType" dentro del objeto "data" en el registro sin procesar. |
data.RoleLocation | read_only_udm.target.location.name |
Se asigna directamente desde el campo "RoleLocation" dentro del objeto "data" en el registro sin procesar. |
data.time | read_only_udm.metadata.event_timestamp |
El campo "time" dentro del objeto "data" en el registro sin procesar se analiza para extraer la marca de tiempo, que luego se asigna a event_timestamp . |
data.uri | read_only_udm.network.http.referral_url |
Se asigna directamente desde el campo "uri" dentro del objeto "data" en el registro sin procesar. |
read_only_udm.extensions.auth.mechanism |
INTERACTIVE |
Se establece en "INTERACTIVE" si el campo "isInteractive" dentro del objeto "properties" del objeto "data" en el registro sin procesar es "true". De lo contrario, se establece como "MECHANISM_OTHER". |
read_only_udm.extensions.auth.type |
MACHINE |
Se establece en "MACHINE" si el campo "category" del registro sin procesar es "NonInteractiveUserSignInLogs", "ManagedIdentitySignInLogs" o "ServicePrincipalSignInLogs". |
read_only_udm.metadata.log_type |
AZURE_ACTIVITY |
Se codifica de forma rígida como "AZURE_ACTIVITY". |
read_only_udm.metadata.vendor_name |
Microsoft |
Se codifica de forma rígida como "Microsoft". |
read_only_udm.principal.platform |
WINDOWS , MAC , LINUX , ANDROID |
Se determina según el valor del campo "properties.test.deviceDetail.operatingSystem". Si contiene "Win", platform se establece en "WINDOWS". Si contiene "Mac", platform se establece en "MAC". Si contiene "Lin", platform se establece en "LINUX". Si contiene "Android", platform se establece en "ANDROID". |
read_only_udm.principal.resource.type |
SERVICE_ACCOUNT , UNSPECIFIED |
Se determina según el valor del campo "identity.authorization.evidence.principalType". Si es "ServicePrincipal", type se establece en "SERVICE_ACCOUNT". De lo contrario, se establece como "UNSPECIFIED". |
read_only_udm.security_result.action |
ALLOW , BLOCK , UNKNOWN_ACTION |
Se determina en función de los valores de los campos "resultType", "status_errorcode" y "statusText". Si "resultType" es uno de "Success", "success", "Succeeded", "Started", "Resolved", "Active", "Updated", "Start", "Accept", "Accepted", "0", o si "status_errorcode" es 0, o si "statusText" es "Success", action se establece en "ALLOW". Si "resultType" es uno de "Failure" o "Failed", o si "status_errorcode" no está vacío, o si "resultType" no está vacío, action se establece en "BLOCK". De lo contrario, se establece como "UNKNOWN_ACTION". |
read_only_udm.target.cloud.environment |
MICROSOFT_AZURE |
Se codifica como "MICROSOFT_AZURE". |