Recopila registros de acceso de Azure AD
En este documento, se explica cómo exportar los registros de acceso de Azure AD a Google Security Operations con una cuenta de Azure Storage. El analizador toma los registros sin procesar en formato JSON y los transforma en un formato estructurado que cumple con el modelo de datos unificado (UDM). Extrae campos relevantes, normaliza valores, controla diferentes marcas de tiempo y enriquece los datos con contexto relacionado con la seguridad, como información del usuario, direcciones IP y políticas de acceso condicional.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Un inquilino de Azure activo
- Acceso con privilegios a Azure
Configura la cuenta de Azure Storage
- En la consola de Azure, busca Cuentas de almacenamiento.
- Haz clic en + Crear.
- Especifica valores para los siguientes parámetros de entrada:
- Suscripción: Selecciona la suscripción.
- Grupo de recursos: Selecciona el grupo de recursos.
- Región: Selecciona la región.
- Rendimiento: Selecciona el rendimiento (se recomienda Estándar).
- Redundancia: Selecciona la redundancia (se recomienda GRS o LRS).
- Nombre de la cuenta de almacenamiento: Ingresa un nombre para la nueva cuenta de almacenamiento.
- Haz clic en Revisar + crear.
- Revisa el resumen de la cuenta y haz clic en Crear.
- En la página Información general de la cuenta de almacenamiento, selecciona el submenú Claves de acceso en Seguridad y redes.
- Haz clic en Mostrar junto a key1 o key2.
- Haz clic en Copiar en el portapapeles para copiar la clave.
- Guarda la llave en un lugar seguro para usarla más adelante.
- En la página Información general de la cuenta de almacenamiento, selecciona el submenú Endpoints en Configuración.
- Haz clic en Copiar al portapapeles para copiar la URL del extremo del servicio Blob, por ejemplo,
https://<storageaccountname>.blob.core.windows.net
. - Guarda la URL del extremo en una ubicación segura para usarla más adelante.
Cómo configurar la exportación de registros para los registros de acceso de Azure AD
- Accede al portal de Azure con tu cuenta con privilegios.
- Ve a Microsoft Entra ID > Supervisión > Configuración de diagnóstico.
- Haz clic en Agregar parámetro de configuración de diagnóstico.
- Ingresa un nombre descriptivo para el parámetro de configuración de diagnóstico.
- Selecciona Registros de acceso.
- Selecciona la casilla de verificación Archivar en una cuenta de almacenamiento como destino.
- Especifica la Suscripción y la Cuenta de almacenamiento.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds
- Centro de contenido > Paquetes de contenido
Configura feeds desde Configuración del SIEM > Feeds
Para configurar varios feeds para diferentes tipos de registros dentro de esta familia de productos, consulta Cómo configurar feeds por producto.
Para configurar un solo feed, sigue estos pasos:
- Ve a SIEM Settings > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed, por ejemplo, Registros de acceso de Azure.
- Selecciona Microsoft Azure Blob Storage como el Tipo de fuente.
- Selecciona Azure Sign-In como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- URI de Azure: Es la URL del extremo del blob.
ENDPOINT_URL/BLOB_NAME
- Reemplaza lo siguiente:
ENDPOINT_URL
: URL del extremo del blob (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: Es el nombre del blob (por ejemplo,insights-logs-<logname>
).
- Reemplaza lo siguiente:
- El URI es un: Selecciona el TIPO de URI según la configuración del flujo de registros (Archivo único | Directorio | Directorio que incluye subdirectorios).
Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tus preferencias de transferencia.
Clave compartida: Es la clave de acceso a Azure Blob Storage.
Espacio de nombres del recurso: Es el espacio de nombres del recurso.
Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
- URI de Azure: Es la URL del extremo del blob.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
- URI de Azure: Es la URL del extremo del blob.
ENDPOINT_URL/BLOB_NAME
- Reemplaza lo siguiente:
ENDPOINT_URL
: URL del extremo del blob (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: Es el nombre del blob (por ejemplo,insights-logs-<logname>
).
- Reemplaza lo siguiente:
- El URI es un: Selecciona el TIPO de URI según la configuración del flujo de registros (Archivo único | Directorio | Directorio que incluye subdirectorios).
- Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tus preferencias de transferencia.
- Clave compartida: Es la clave de acceso a Azure Blob Storage.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
- Espacio de nombres del recurso: Espacio de nombres asociado al feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
AppDisplayName | read_only_udm.target.application | Se asigna directamente desde el campo AppDisplayName en el registro sin procesar. |
AppId | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo AppId en el registro sin procesar. La clave se establece en appId . |
Categoría | read_only_udm.security_result.category_details | Se asigna directamente desde el campo Category en el registro sin procesar. |
ConditionalAccessPolicies[].displayName | read_only_udm.security_result.rule_name | Se asigna directamente desde el campo displayName dentro del array ConditionalAccessPolicies en el registro sin procesar. |
ConditionalAccessPolicies[].enforcedGrantControls[] | read_only_udm.security_result.rule_labels.value | Se asigna directamente desde el array enforcedGrantControls dentro del array ConditionalAccessPolicies en el registro sin procesar. La clave se establece en applied_conditional_access_policies_enforced_grant_controls . |
ConditionalAccessPolicies[].enforcedSessionControls[] | read_only_udm.security_result.rule_labels.value | Se asigna directamente desde el array enforcedSessionControls dentro del array ConditionalAccessPolicies en el registro sin procesar. La clave se establece en applied_conditional_access_policies_enforced_session_controls . |
ConditionalAccessPolicies[].id | read_only_udm.security_result.rule_id | Se asigna directamente desde el campo id dentro del array ConditionalAccessPolicies en el registro sin procesar. |
ConditionalAccessPolicies[].Result | read_only_udm.security_result.rule_labels.value | Se asigna directamente desde el campo Result dentro del array ConditionalAccessPolicies en el registro sin procesar. La clave se establece en applied_conditional_access_policies_result . |
ConditionalAccessStatus | read_only_udm.additional.fields.value.string_value | Se asigna directamente desde el campo ConditionalAccessStatus en el registro sin procesar. La clave se establece en conditionalAccessStatus . |
CorrelationId | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo CorrelationId en el registro sin procesar. La clave se establece en correlationId . |
DurationMs | read_only_udm.additional.fields.value.string_value | Se asigna directamente desde el campo DurationMs en el registro sin procesar. La clave se establece en durationMs . |
HomeTenantId | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo HomeTenantId en el registro sin procesar. La clave se establece en HomeTenantId . |
IPAddress | read_only_udm.principal.asset.ip, read_only_udm.principal.ip | Se asigna directamente desde el campo IPAddress en el registro sin procesar. |
ID | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo Id en el registro sin procesar. La clave se establece en id . |
Identidad | read_only_udm.target.resource.attribute.labels.value | Se asigna directamente desde el campo Identity en el registro sin procesar. La clave se establece en identity . |
Nivel | read_only_udm.security_result.severity, read_only_udm.security_result.severity_details | Se asigna directamente desde el campo Level en el registro sin procesar. La gravedad se determina según el valor de Level : Information , Informational , 0 o 4 se asignan a INFORMATIONAL ; Warning , 1 o 3 se asignan a MEDIUM ; Error o 2 se asignan a ERROR ; Critical se asigna a CRITICAL . |
OperationName | read_only_udm.metadata.product_event_type | Se asigna directamente desde el campo OperationName en el registro sin procesar. |
ResourceGroup | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo ResourceGroup en el registro sin procesar. La clave se establece en ResourceGroup . |
ResultSignature | read_only_udm.additional.fields.value.string_value | Se asigna directamente desde el campo ResultSignature en el registro sin procesar. La clave se establece en resultSignature . |
ResultType | read_only_udm.additional.fields.value.string_value | Se asigna directamente desde el campo ResultType en el registro sin procesar. La clave se establece en resultType . |
TenantId | read_only_udm.metadata.product_deployment_id | Se asigna directamente desde el campo TenantId en el registro sin procesar. |
TimeGenerated | read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos | Se asigna directamente desde el campo TimeGenerated en el registro sin procesar. El campo se analiza como una marca de tiempo y se usa para propagar los campos seconds y nanos . |
TokenIssuerType | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo TokenIssuerType en el registro sin procesar. La clave se establece en TokenIssuerType . |
UniqueTokenIdentifier | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo UniqueTokenIdentifier en el registro sin procesar. La clave se establece en UniqueTokenIdentifier . |
UserAgent | read_only_udm.network.http.user_agent, read_only_udm.network.http.parsed_user_agent | Se asigna directamente desde el campo UserAgent en el registro sin procesar. El campo se analiza como una cadena de usuario-agente y se usa para completar el objeto parsed_user_agent . |
UserDisplayName | read_only_udm.target.user.user_display_name | Se asigna directamente desde el campo UserDisplayName en el registro sin procesar. |
UserId | read_only_udm.target.user.userid | Se asigna directamente desde el campo UserId en el registro sin procesar. |
UserPrincipalName | read_only_udm.target.user.email_addresses | Se asigna directamente desde el campo UserPrincipalName en el registro sin procesar, pero solo si coincide con el patrón de dirección de correo electrónico. |
UserType | read_only_udm.target.user.attribute.roles.name | Se asigna directamente desde el campo UserType en el registro sin procesar. |
_Internal_WorkspaceResourceId | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo _Internal_WorkspaceResourceId en el registro sin procesar. La clave se establece en Internal_WorkspaceResourceId . |
_ItemId | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo _ItemId en el registro sin procesar. La clave se establece en ItemId . |
properties.appId | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo appId dentro del objeto properties en el registro sin procesar. La clave se establece en appId . |
properties.authenticationDetails[].authenticationMethod | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo authenticationMethod dentro del array authenticationDetails en el registro sin procesar. La clave se establece en authenticationMethod . |
properties.authenticationDetails[].authenticationMethodDetail | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo authenticationMethodDetail dentro del array authenticationDetails en el registro sin procesar. La clave se establece en authenticationMethodDetail . |
properties.authenticationDetails[].authenticationStepDateTime | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo authenticationStepDateTime dentro del array authenticationDetails en el registro sin procesar. La clave se establece en authenticationStepDateTime . |
properties.authenticationDetails[].authenticationStepRequirement | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo authenticationStepRequirement dentro del array authenticationDetails en el registro sin procesar. La clave se establece en authenticationStepRequirement . |
properties.authenticationDetails[].authenticationStepResultDetail | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo authenticationStepResultDetail dentro del array authenticationDetails en el registro sin procesar. La clave se establece en authenticationStepResultDetail . |
properties.authenticationDetails[].succeeded | read_only_udm.security_result.action, read_only_udm.security_result.action_details | Se asigna directamente desde el campo succeeded dentro del array authenticationDetails en el registro sin procesar. Si el valor es true , la acción se establece en ALLOW ; de lo contrario, se establece en BLOCK . |
properties.conditionalAccessStatus | read_only_udm.additional.fields.value.string_value | Se asigna directamente desde el campo conditionalAccessStatus dentro del objeto properties en el registro sin procesar. La clave se establece en conditionalAccessStatus . |
properties.id | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo id dentro del objeto properties en el registro sin procesar. La clave se establece en id . |
properties.status.errorCode | read_only_udm.security_result.action | Si el valor es 0, la acción se establece en ALLOW ; de lo contrario, se establece en BLOCK . |
properties.userId | read_only_udm.target.user.userid | Se asigna directamente desde el campo userId dentro del objeto properties en el registro sin procesar. |
properties.userPrincipalName | read_only_udm.target.user.email_addresses | Se asigna directamente desde el campo userPrincipalName dentro del objeto properties en el registro sin procesar, pero solo si coincide con el patrón de dirección de correo electrónico. |
resourceId | read_only_udm.target.resource.name | Se asigna directamente desde el campo resourceId en el registro sin procesar. |
hora | read_only_udm.metadata.event_timestamp.seconds, read_only_udm.metadata.event_timestamp.nanos | Se asigna directamente desde el campo time en el registro sin procesar. El campo se analiza como una marca de tiempo y se usa para propagar los campos seconds y nanos . |
read_only_udm.extensions.auth.type | El valor se establece en AUTHTYPE_UNSPECIFIED . |
|
read_only_udm.metadata.event_type | El valor se determina según la presencia de los campos principal.ip y target.user.userid : Si ambos están presentes, el tipo se establece en USER_LOGIN ; si solo está presente principal.ip , el tipo se establece en STATUS_UPDATE ; de lo contrario, se establece en GENERIC_EVENT . |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.