Cómo recopilar registros de acceso de Azure AD
En este documento, se explica cómo exportar registros de acceso de Azure AD a Google Security Operations con una cuenta de almacenamiento de Azure. El analizador toma 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 los 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 tener una instancia de Google SecOps.
- Asegúrate de tener un inquilino de Azure activo.
- Asegúrate de tener 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:
- Subscription: 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 cuenta de almacenamiento nueva.
- Haz clic en Revisar + crear.
- Revisa la descripción general de la cuenta y haz clic en Crear.
- En la página Descripción general de la cuenta de almacenamiento, selecciona el submenú Llaves de acceso en Seguridad y herramientas de redes.
- Haz clic en Mostrar junto a clave1 o clave2.
- Haz clic en Copiar en el portapapeles para copiar la clave.
- Guarda la clave en una ubicación segura para usarla más adelante.
- En la página Descripción general de la cuenta de almacenamiento, selecciona el submenú Puntos finales en Configuración.
- Haz clic en Copiar en el portapapeles para copiar la URL del extremo del servicio de Blob (por ejemplo,
https://<storageaccountname>.blob.core.windows.net
). - Guarda la URL del extremo en una ubicación segura para usarla más adelante.
Configura 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 un feed en Google SecOps para transferir los registros de acceso de Azure
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- 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 de blob.
ENDPOINT_URL/BLOB_NAME
- Reemplaza lo siguiente:
ENDPOINT_URL
: La URL del extremo de blob (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: Es el nombre del blob (comoinsights-logs-<logname>
).
- URI is a: 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 fuentes: Selecciona la opción de eliminación según tus preferencias.
Clave compartida: Es la clave de acceso a Azure Blob Storage.
Espacio de nombres de recursos: Es el espacio de nombres de recursos.
Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
- URI de Azure: Es la URL del extremo de blob.
Haz clic en Siguiente.
Revisa la configuración del nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.
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 formato. |
AppId | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo AppId en el registro sin formato. 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 formato. |
ConditionalAccessPolicies[].displayName | read_only_udm.security_result.rule_name | Se asigna directamente desde el campo displayName dentro del array ConditionalAccessPolicies en el registro sin formato. |
ConditionalAccessPolicies[].enforcedGrantControls[] | read_only_udm.security_result.rule_labels.value | Se asignan 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 asignan 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 formato. |
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 formato. 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 formato. 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 formato. 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 formato. 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 formato. 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 formato. |
ID | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo Id en el registro sin formato. 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 formato. 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 formato. La gravedad se determina en función del 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 formato. |
ResourceGroup | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo ResourceGroup en el registro sin formato. 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 formato. 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 formato. 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 formato. |
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 formato. 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 formato. 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 formato. 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 formato. El campo se analiza como una cadena de usuario-agente y se usa para propagar 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 formato. |
UserId | read_only_udm.target.user.userid | Se asigna directamente desde el campo UserId en el registro sin formato. |
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 formato. |
_Internal_WorkspaceResourceId | read_only_udm.security_result.detection_fields.value | Se asigna directamente desde el campo _Internal_WorkspaceResourceId en el registro sin formato. 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 formato. La clave se establece en ItemId . |
properties.appId | read_only_udm.security_result.detection_fields.value | Se asignan 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 formato. 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 formato. 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 formato. 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 formato. 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 formato. 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 formato. 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 asignan 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 asignan directamente desde el campo id dentro del objeto properties en el registro sin formato. 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 asignan 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 formato. |
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 formato. 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 en función de 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 . |
Cambios
2024-05-07
- Analizador creado recientemente
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.