Compartir a través de


[En desuso] Creación de un conector sin código heredado para Microsoft Sentinel

Importante

La recopilación de registros de muchos dispositivos y aparatos ahora está soportada por el Formato Común de Eventos (CEF) a través de AMA, Syslog a través de AMA, o registros personalizados mediante el conector de datos AMA en Microsoft Sentinel. Para obtener más información, consulte Encuentra tu conector de datos de Microsoft Sentinel.

Importante

Hay una versión más reciente de Codeless Connector Platform (CCP). Para obtener más información sobre la nueva CCP, consulte Creación de un conector sin código (versión preliminar).

Haga referencia a este documento si necesita mantener o actualizar un conector de datos basado en esta versión anterior y heredada de la CCP.

La CCP proporciona a los asociados, usuarios avanzados y desarrolladores la capacidad de crear conectores personalizados, conectarlos e ingerir datos en Microsoft Sentinel. Los conectores creados a través de la CCP se pueden implementar a través de la API, una plantilla de ARM o como solución en el centro de contenido de Microsoft Sentinel.

Los conectores creados con CCP son totalmente SaaS, sin requisitos para las instalaciones de servicio, e incluyen también la supervisión del estado y el soporte técnico completo de Microsoft Sentinel.

Cree el conector de datos mediante la definición de configuraciones JSON, con la configuración de cómo se ve la página del conector de datos en Microsoft Sentinel junto con la configuración de sondeo que define cómo funciona la conexión.

Importante

Esta versión de Codeless Connector Platform (CCP) está en versión de prueba, pero también se considera heredada. En la página Términos de uso complementarios para las Versiones preliminares de Microsoft Azure se incluyen términos legales adicionales que se aplican a las características de Azure que se encuentran en versión beta, versión preliminar o que todavía no se han publicado para su disponibilidad general.

Siga estos pasos para crear el conector ccp y conectarse al origen de datos desde Microsoft Sentinel:

  • Configuración de la interfaz de usuario del conector
  • Configure la configuración de sondeo del conector
  • Despliega tu conector en tu área de trabajo de Microsoft Sentinel
  • Conecte Microsoft Sentinel al origen de datos y empiece a ingerir datos

En este artículo se describe la sintaxis que se usa en las configuraciones y procedimientos JSON de LA CCP para implementar el conector a través de la API, una plantilla de ARM o una solución de Microsoft Sentinel.

Prerrequisitos

Antes de compilar un conector, se recomienda que comprenda cómo se comporta el origen de datos y cómo deberá conectarse Microsoft Sentinel exactamente.

Por ejemplo, deberá conocer los tipos de autenticación, paginación y puntos de conexión de API que son necesarios para las conexiones exitosas.

Creación de un archivo de configuración JSON del conector

El conector CCP personalizado tiene dos secciones JSON principales necesarias para la implementación. Rellene estas áreas para definir cómo se muestra el conector en Azure Portal y cómo conecta Microsoft Sentinel al origen de datos.

A continuación, si implementa el conector sin código a través de ARM, encapsulará estas secciones en la plantilla de ARM para los conectores de datos.

Revise otros conectores de datos ccp como ejemplos o descargue la plantilla de ejemplo, DataConnector_API_CCP_template.json (versión preliminar).

Configuración de la interfaz de usuario del conector

En esta sección se describen las opciones de configuración disponibles para personalizar la interfaz de usuario de la página del conector de datos.

En la imagen siguiente se muestra una página de conector de datos de ejemplo, resaltada con números que corresponden a áreas importantes de la interfaz de usuario:

Captura de pantalla de una página del conector de datos de ejemplo.

  1. Título. Título que se muestra para el conector de datos.
  2. Logotipo. Icono que se muestra para el conector de datos. Personalizar esto solo es posible cuando se implementa como parte de una solución.
  3. Status. Indica si el conector de datos está conectado o no a Microsoft Sentinel.
  4. Gráficos de datos. Muestra las consultas pertinentes y la cantidad de datos ingeridos en las últimas dos semanas.
  5. Pestaña Instrucciones. Incluye una sección Requisitos previos , con una lista de validaciones mínimas antes de que el usuario pueda habilitar el conector e Instrucciones, para guiar la habilitación del usuario del conector. Esta sección puede incluir texto, botones, formularios, tablas y otros widgets comunes para simplificar el proceso.
  6. Pestaña Pasos siguientes. Incluye información útil para comprender cómo buscar datos en los registros de eventos, como consultas de ejemplo.

Estas son las secciones y la connectorUiConfig sintaxis necesarias para configurar la interfaz de usuario:

Nombre de propiedad Tipo Descripción
disponibilidad {
"status": 1,
"isPreview": Booleano
}

status: 1 Indica que el conector está disponible con carácter general para los clientes.
isPreview Indica si se debe incluir el sufijo (Preview) en el nombre del conector.
criteriosDeConectividad {
"type": SentinelKindsV2,
"value": APIPolling
}
Objeto que define cómo comprobar si el conector está definido correctamente. Use los valores indicados aquí.
Datatypes dataTypes[] Lista de todos los tipos de datos del conector y una consulta para capturar la hora del último evento para cada tipo de datos.
descriptionMarkdown Cuerda Descripción del conector con la capacidad de agregar el lenguaje Markdown para mejorarlo.
graphConsultas graphQueries[] Consultas que presentan la ingesta de datos en las últimas dos semanas en el panel Gráficos de datos .

Proporcione una consulta para todos los tipos de datos del conector de datos o una consulta diferente para cada tipo de datos.
graphQueriesTableName Cuerda Define el nombre de la tabla de Log Analytics a partir de la cual se extraen los datos de las consultas.

El nombre de la tabla puede ser cualquier cadena, pero debe terminar en _CL. Por ejemplo: TableName_CL
instructionsSteps instructionSteps[] Matriz de elementos de widget que explican cómo instalar el conector, que se muestra en la pestaña Instrucciones .
metadata metadata Metadatos que se muestran en la descripción del conector.
permisos permissions[] La información que se muestra en la sección Requisitos previos de la interfaz de usuario en la que se enumeran los permisos necesarios para habilitar o deshabilitar el conector.
editor Cuerda Este es el texto que se muestra en la sección Proveedor .
sampleQueries sampleQueries[] Consultas de ejemplo para que el cliente comprenda cómo buscar los datos en el registro de eventos, que se mostrarán en la pestaña Pasos siguientes .
título Cuerda Título que se muestra en la página del conector de datos.

Es complicado juntar todas estas piezas. Utilice la herramienta de validación de la experiencia de usuario de la página del conector para probar los componentes que ha recopilado.

tipos de datos

Valor de matriz Tipo Descripción
nombre Cuerda Una descripción significativa para ellastDataReceivedQuery, incluida la compatibilidad con una variable.

Ejemplo: {{graphQueriesTableName}}
lastDataReceivedQuery Cuerda Una consulta KQL que devuelve una fila e indica la última vez que se recibieron datos o ningún dato si no hay datos relevantes.

Ejemplo: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)

graphQueries

Define una consulta que presenta la ingesta de datos en las últimas dos semanas en el panel Gráficos de datos .

Proporcione una consulta para todos los tipos de datos del conector de datos o una consulta diferente para cada tipo de datos.

Valor de matriz Tipo Descripción
metricName Cuerda Un nombre descriptivo para el grafo.

Ejemplo: Total data received
leyenda Cuerda Cadena que aparece en la leyenda a la derecha del gráfico y que incluye una referencia de variable.

Ejemplo: {{graphQueriesTableName}}
baseQuery Cuerda La consulta que filtra los eventos pertinentes, incluida una referencia a una variable.

Por ejemplo, TableName_CL | where ProviderName == "myprovider" o {{graphQueriesTableName}}.

instructionSteps

En esta sección se proporcionan parámetros que definen el conjunto de instrucciones que aparecen en la página del conector de datos de Microsoft Sentinel.

Propiedad de Array Tipo Descripción
título Cuerda Opcional. Define un título para las instrucciones.
descripción Cuerda Opcional. Define una descripción significativa para tus instrucciones.
innerSteps Matriz Opcional. Define una matriz de pasos de instrucción interna.
instrucciones Matriz de instrucciones Obligatorio. Define una matriz de instrucciones de un tipo de parámetro específico.
bottomBorder Booleano Opcional. Cuando true, agrega un borde inferior al área de instrucciones de la página del conector en Microsoft Sentinel
LlegaráPronto Booleano Opcional. Cuando true, agrega un título próximamente en la página del conector de Microsoft Sentinel

instrucciones

Muestra un grupo de instrucciones, con varias opciones usadas como parámetros y la capacidad de anidar más pasos de instrucción en grupos.

Parámetro Propiedad del array Descripción
APIKey APIKey Agregue marcadores de posición al archivo de configuración JSON del conector.
CopyableLabel CopyableLabel Muestra un campo de texto con un botón copiar al final. Cuando se selecciona el botón, se copia el valor del campo.
MensajeInformativo MensajeInformativo Define un mensaje de información en línea.
InstructionStepsGroup InstructionStepsGroup Muestra un grupo de instrucciones, opcionalmente expandido o contraíble, en una sección de instrucciones independiente.
InstallAgent InstallAgent Muestra un vínculo a otras partes de Azure para cumplir varios requisitos de instalación.

APIKey

Es posible que quiera crear una plantilla de archivo de configuración JSON, con parámetros de marcadores de posición, reutilizar en varios conectores o incluso crear un conector con datos que no tenga actualmente.

Para crear parámetros de marcador de posición, defina una matriz adicional denominada userRequestPlaceHoldersInput en la sección Instrucciones del archivo de configuración JSON de CCP , con la sintaxis siguiente:

"instructions": [
                {
                  "parameters": {
                    "enable": "true",
                    "userRequestPlaceHoldersInput": [
                      {
                        "displayText": "Organization Name",
                        "requestObjectKey": "apiEndpoint",
                        "placeHolderName": "{{placeHolder}}"
                      }
                    ]
                  },
                  "type": "APIKey"
                }
              ]

El userRequestPlaceHoldersInput parámetro incluye los siguientes atributos:

Nombre Tipo Descripción
DisplayText Cuerda Define el valor para mostrar del cuadro de texto, que se muestra al usuario al conectarse.
RequestObjectKey Cuerda Define el identificador de la sección de solicitud de pollingConfig para sustituir el valor de marcador de posición por el valor proporcionado por el usuario.

Si no usa este atributo, use el PollingKeyPaths atributo en su lugar.
PollingKeyPaths Cuerda Define una matriz de objetos JsonPath que dirige la llamada API a cualquier parte de la plantilla para reemplazar un valor de marcador de posición por un valor de usuario.

Ejemplo: "pollingKeyPaths":["$.request.queryParameters.test1"]

Si no usa este atributo, use el RequestObjectKey atributo en su lugar.
PlaceHolderName Cuerda Define el nombre del parámetro de marcador de posición en el archivo de plantilla JSON. Puede ser cualquier valor único, como {{placeHolder}}.

EtiquetaCopiable

Ejemplo:

Captura de pantalla de un botón que copia el valor en un campo.

Código de ejemplo:

{
    "parameters": {
        "fillWith": [
            "WorkspaceId",
            "PrimaryKey"
            ],
        "label": "Here are some values you'll need to proceed.",
        "value": "Workspace is {0} and PrimaryKey is {1}"
    },
    "type": "CopyableLabel"
}
Valor de matriz Tipo Descripción
fillWith ENUM Opcional. Matriz de variables de entorno usadas para llenar un marcador de posición. Separe varios marcadores de posición con comas. Por ejemplo: {0},{1}

Valores admitidos: workspaceId, workspaceName, primaryKey, MicrosoftAwsAccount, , subscriptionId
label Cuerda Define el texto de la etiqueta encima de un cuadro de texto.
valor Cuerda Define el valor que se va a presentar en el cuadro de texto, admite marcadores de posición.
Filas Filas Opcional. Define las filas en el área de la interfaz de usuario. De forma predeterminada, establezca en 1.
wideLabel Booleano Opcional. Determina una etiqueta ancha para cadenas de texto largas. De forma predeterminada, establezca en false.

InfoMessage

Este es un ejemplo de un mensaje de información insertado:

Captura de pantalla de un mensaje de información insertado.

En cambio, la imagen siguiente muestra un mensaje de información no en línea:

Captura de pantalla de un mensaje de información no insertado.

Valor de matriz Tipo Descripción
Mensaje de texto Cuerda Defina el texto que se va a mostrar en el mensaje.
visible Booleano Determina si se muestra el mensaje.
inline Booleano Determina cómo se muestra el mensaje de información.

- true: (Recomendado) Muestra el mensaje de información incrustado en las instrucciones.
- false: agrega un fondo azul.

InstructionStepsGroup

Este es un ejemplo de un grupo de instrucciones expandible:

Captura de pantalla de un grupo de instrucciones adicional expandible.

Valor de matriz Tipo Descripción
título Cuerda Define el título del paso de instrucción.
canCollapseAllSections Booleano Opcional. Determina si la sección es un acordeón plegable o no.
noFxPadding Booleano Opcional. Si el true, reduce el relleno de altura para ahorrar espacio.
Ampliado Booleano Opcional. Si true se muestra como expandido de forma predeterminada.

Para obtener un ejemplo detallado, consulte el código JSON de configuración para el conector dns de Windows.

Agente de Instalación

Algunos tipos InstallAgent aparecen como un botón; otros aparecerán como un vínculo. Estos son ejemplos de ambos:

Captura de pantalla de un vínculo agregado como un botón.

Captura de pantalla de un vínculo agregado como texto insertado.

Valores de matriz Tipo Descripción
tipoDeEnlace ENUM Determina el tipo de vínculo, como uno de los siguientes valores:

InstallAgentOnWindowsVirtualMachine
InstallAgentOnWindowsNonAzure
InstallAgentOnLinuxVirtualMachine
InstallAgentOnLinuxNonAzure
OpenSyslogSettings
OpenCustomLogsSettings
OpenWaf
OpenAzureFirewall OpenMicrosoftAzureMonitoring
OpenFrontDoors
OpenCdnProfile
AutomaticDeploymentCEF
OpenAzureInformationProtection
OpenAzureActivityLog
OpenIotPricingModel
OpenPolicyAssignment
OpenAllAssignmentsBlade
OpenCreateDataCollectionRule
policyDefinitionGuid Cuerda Obligatorio al usar el tipo de enlace OpenPolicyAssignment. Para los conectores basados en directivas, define el GUID de la definición de directiva predefinida.
assignMode ENUM Opcional. Para los conectores basados en directivas, define el modo de asignación, como uno de los siguientes valores: Initiative, Policy
dataCollectionRuleType ENUM Opcional. Para los conectores basados en DCR, define el tipo de regla de recopilación de datos como uno de los siguientes: SecurityEvent, ForwardEvent

metadatos

En esta sección se proporcionan metadatos en la interfaz de usuario del conector de datos en el área Descripción .

Valor de colección Tipo Descripción
kind Cuerda Define el tipo de plantilla de ARM que está creando. Usa siempre dataConnector.
fuente Cuerda Describe el origen de datos mediante la sintaxis siguiente:
{
"kind":cadena
"name":cadena de texto
}
autor Cuerda Describe el autor del conector de datos mediante la sintaxis siguiente:
{
"name":cadena
}
support Cuerda Describa la compatibilidad proporcionada para el conector de datos mediante la sintaxis siguiente:
{
"tier":string
"name":cadena
"email":cadena
"link":Cadena de dirección URL
}

permisos

Valor de matriz Tipo Descripción
aduana Cuerda Describe los permisos personalizados necesarios para la conexión de datos, en la sintaxis siguiente:
{
"name":cadena,
"description":cadena
}

Ejemplo: el valor aduanero se muestra en la sección Requisitos previos de Microsoft Sentinel con un icono informativo azul. En el ejemplo de GitHub, esto se correlaciona con la línea Clave de token personal de la API de GitHub: Necesita acceso al token personal de GitHub...
licenses ENUM Define las licencias necesarias, como uno de los siguientes valores: OfficeIRM,OfficeATP, Office365, AadP1P2, McasAatp, , Mdatp, , Mtp.IoT

Ejemplo: El valor de licencias se muestra en Microsoft Sentinel como : Licencia: Obligatorio Azure AD Premium P2
resourceProvider resourceProvider Describe los requisitos previos para el recurso de Azure.

Ejemplo: el valor resourceProvider se muestra en la sección Requisitos previos de Microsoft Sentinel como:
Área de trabajo: se requiere permiso de lectura y escritura.
Claves: se requieren permisos de lectura para claves compartidas para el área de trabajo.
inquilino matriz de valores ENUM
Ejemplo:

"tenant": [
"GlobalADmin",
"SecurityAdmin"
]
Define los permisos necesarios, como uno o varios de los siguientes valores: "GlobalAdmin", "SecurityAdmin", "SecurityReader", , "InformationProtection"

Ejemplo: muestra el valor de inquilino en Microsoft Sentinel como: Permisos de inquilino: Requiere Global Administrator o Security Administrator en el inquilino del área de trabajo

proveedor de recursos

valor de sub array Tipo Descripción
proveedor ENUM Describe el proveedor de recursos, con uno de los siguientes valores:
- Microsoft.OperationalInsights/workspaces
- Microsoft.OperationalInsights/solutions
- Microsoft.OperationalInsights/workspaces/datasources
- microsoft.aadiam/diagnosticSettings
- Microsoft.OperationalInsights/workspaces/sharedKeys
- Microsoft.Authorization/policyAssignments
providerDisplayName Cuerda Un elemento de lista en Requisitos previos que mostrará una "x" roja o un símbolo de verificación verde cuando se validen los permisos requeridos en la página del conector. Ejemplo "Workspace"
permissionsDisplayText Cuerda Mostrar texto para permisos de lectura, escritura o lectura y escritura que deben corresponder a los valores configurados en requiredPermissions
requiredPermissions {
"action":Booleano,
"delete":Booleano,
"read":Booleano,
"write":Booleano
}
Describe los permisos mínimos necesarios para el conector.
de ámbito de ENUM Describe el ámbito del conector de datos, como uno de los siguientes valores: "Subscription", , "ResourceGroup""Workspace"

sampleQueries

valor de matriz Tipo Descripción
descripción Cuerda Descripción significativa de la consulta de ejemplo.

Ejemplo: Top 10 vulnerabilities detected
consulta Cuerda Consulta de ejemplo usada para capturar los datos del tipo de datos.

Ejemplo: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10

Para definir un vínculo insertado mediante Markdown, use el ejemplo siguiente. Este vínculo se proporciona en una descripción de instrucciones:

{
   "title": "",
   "description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)"
}

Para definir un vínculo como plantilla de ARM, use el ejemplo siguiente como guía:

{
   "title": "Azure Resource Manager (ARM) template",
   "description": "1. Click the **Deploy to Azure** button below.\n\n\t[![Deploy To Azure](https://aka.ms/deploytoazurebutton)]({URL to custom ARM template})"
}

Validación de la experiencia del usuario de la página del conector de datos

Siga estos pasos para representar y validar la experiencia del usuario del conector.

  1. Esta dirección URL puede acceder a la utilidad de prueba: https://aka.ms/sentineldataconnectorvalidateurl
  2. Vaya a Microsoft Sentinel - Conectores de datos
  3. Haga clic en el botón "importar" y seleccione un archivo JSON que solo contenga la connectorUiConfig sección del conector de datos.

Para obtener más información sobre esta herramienta de validación, consulte las instrucciones de compilación del conector en nuestra guía de compilación de GitHub.

Nota:

Dado que el parámetro de instrucción APIKey es específico del conector sin código, quite temporalmente esta sección para usar la herramienta de validación o producirá un error.

Configuración de los valores de sondeo del conector

En esta sección se describe la configuración de cómo se sondean los datos desde el origen de datos para un conector de datos sin código.

El código siguiente muestra la sintaxis de la pollingConfig sección del archivo de configuración ccp .

"pollingConfig": {
    "auth": {
    },
    "request": {
    },
    "response": {
    },
    "paging": {
    }
 }

La pollingConfig sección incluye las siguientes propiedades:

Nombre Tipo Descripción
Auth Cuerda Describe las propiedades de autenticación para la consulta de datos. Para más información, consulte Configuración de autenticación.
auth.authType Cuerda Obligatorio. Define el tipo de autenticación, anidado dentro del auth objeto, como uno de los siguientes valores: Basic, , , APIKeyOAuth2
solicitud JSON anidado Obligatorio. Describe la carga de solicitud para sondear los datos, como el punto de conexión de la API. Para más información, consulte configuración de solicitud.
response JSON anidado Obligatorio. Describe el objeto de respuesta y el mensaje anidado devueltos por la API al sondear los datos. Para más información, consulte configuración de respuesta.
paginación JSON anidado Opcional. Describe la carga de paginación al sondear los datos. Para más información, consulte Configuración de paginación.

Para obtener más información, consulte Sample pollingConfig code.

Configuración de autenticación

La auth sección de la configuración pollingConfig incluye los parámetros siguientes, según el tipo definido en el elemento authType :

Parámetros básicos de authType

Nombre Tipo Descripción
Nombre de usuario Cuerda Obligatorio. Define el nombre de usuario.
Contraseña Cuerda Obligatorio. Define la contraseña de usuario.

Parámetros de APIKey authType

Nombre Tipo Descripción
APIKeyName Cuerda Opcional. Define el nombre de la clave de API como uno de los siguientes valores:

- XAuthToken
- Authorization
IsAPIKeyInPostPayload Booleano Determina dónde se define la clave de API.

True: La clave API se define en el payload de la solicitud POST.
False: la clave de API se define en el encabezado
APIKeyIdentifier Cuerda Opcional. Define el nombre del identificador de la clave de API.

Por ejemplo, donde la autorización se define como "Authorization": "token <secret>", este parámetro se define como: {APIKeyIdentifier: “token”})

Parámetros de OAuth2 authType

Codeless Connector Platform admite la concesión de código de autorización de OAuth 2.0.

Los clientes confidenciales y públicos usan el tipo de concesión de código de autorización para intercambiar un código de autorización para un token de acceso.

Después de que el usuario vuelva al cliente a través de la dirección URL de redireccionamiento, la aplicación obtendrá el código de autorización de la dirección URL y lo usará para solicitar un token de acceso.

Nombre Tipo Descripción
FlowName Cuerda Obligatorio. Define un flujo de OAuth2.

Valor admitido: : AuthCode requiere un flujo de autorización.
AccessToken Cuerda Opcional. Define un token de acceso de OAuth2, relevante cuando el token de acceso no expira.
AccessTokenPrepend Cuerda Opcional. Define un prefijo de token de acceso de OAuth2. El valor predeterminado es Bearer.
RefreshToken Cuerda Obligatorio para los tipos de autenticación de OAuth2. Define el token de actualización de OAuth2.
TokenEndpoint Cuerda Obligatorio para los tipos de autenticación de OAuth2. Define el punto de conexión de servicio del token de OAuth2.
PuntoFinalDeAutorización Cuerda Opcional. Define el punto de conexión del servicio de autorización de OAuth2. Solo se usa durante la incorporación o al renovar un token de actualización.
Punto de Redirección Cuerda Opcional. Define un punto final de redireccionamiento durante la incorporación.
FechaHoraDeExpiraciónDelTokenDeAccesoEnUtc Cuerda Opcional. Define una fecha y hora de expiración del token de acceso en formato UTC. Relevante para cuando el token de acceso no expira y, por tanto, tiene una fecha y hora extensa en UTC, o cuando el token de acceso tiene una fecha y hora de expiración extensa.
RefreshTokenExpirationDateTimeInUtc Cuerda Obligatorio para los tipos de autenticación de OAuth2. Define la fecha y hora de expiración del token de actualización en formato UTC.
TokenEndpointHeaders Diccionario<, cadena, objeto> Opcional. Define los encabezados al llamar a un punto de conexión del servicio de tokens OAuth2.

Defina una cadena en el formato serializado dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }
AuthorizationEndpointHeaders Cadena de diccionario<, objeto> Opcional. Se definen los encabezados al llamar a un endpoint del servicio de autorización OAuth2. Solo se usa durante la incorporación o al renovar un token de actualización.

Defina una cadena en el formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
Parámetros de Consulta del Punto de Autorización Diccionario<cadena, objeto> Opcional. Define parámetros de consulta al llamar a un punto de conexión de servicio de autorización de OAuth2. Solo se usa durante la incorporación o al renovar un token de actualización.

Defina una cadena en el formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
TokenEndpointQueryParameters Diccionario< de string, objeto> Opcional. Defina parámetros de consulta al llamar al punto de conexión de servicio del token de OAuth2.

Defina una cadena en el formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
IsTokenEndpointPostPayloadJson Booleano Opcional, el valor predeterminado es false. Determina si los parámetros de consulta están en formato JSON y se establecen en la carga útil de la solicitud POST.
IsClientSecretInHeader Booleano Opcional, el valor predeterminado es false. Determina si los valores client_id y client_secret se definen en el encabezado, como se hace en el esquema de autenticación Basic, en lugar de en el cuerpo de la solicitud POST.
RefreshTokenLifetimeinSecAttributeName Cuerda Opcional. Define el nombre del atributo en la respuesta del extremo del token, especifica la duración del token de renovación, en segundos.
IsJwtBearerFlow Booleano Opcional, el valor predeterminado es false. Determina si usa JWT.
JwtHeaderInJson Cadena de diccionario<, objeto> Opcional. Defina los encabezados JWT en formato JSON.

Defina una cadena en el formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...}
JwtClaimsInJson (Reclamaciones Jwt en Json) Diccionario<string, object> Opcional. Define las declaraciones JWT en formato JSON.

Defina una cadena en el formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...}
JwtPem Cuerda Opcional. Define una clave secreta, en formato PEM Pkcs1: '-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n'

Asegúrese de mantener el código '\r\n' en su lugar.
RequestTimeoutInSeconds Entero Opcional. Determina el tiempo de espera en segundos al llamar al endpoint del servicio de tokens. El valor predeterminado es 180 segundos

Este es un ejemplo de cómo podría ser una configuración de OAuth2:

"pollingConfig": {
    "auth": {
        "authType": "OAuth2",
        "authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent",
        "redirectionEndpoint": "https://portal.azure.com/TokenAuthorize",
        "tokenEndpoint": "https://oauth2.googleapis.com/token",
        "authorizationEndpointQueryParameters": {},
        "tokenEndpointHeaders": {
            "Accept": "application/json"
        },
        "TokenEndpointQueryParameters": {},
        "isClientSecretInHeader": false,
        "scope": "https://www.googleapis.com/auth/admin.reports.audit.readonly",
        "grantType": "authorization_code",
        "contentType": "application/x-www-form-urlencoded",
        "FlowName": "AuthCode"
    },

Parámetros de authType de sesión

Nombre Tipo Descripción
QueryParameters Diccionario<, cadena de caracteres, objeto> Opcional. Una lista de parámetros de consulta, en el formato serializado dictionary<string, string> :

{'<attr_name>': '<val>', '<attr_name>': '<val>'... }
IsPostPayloadJson Booleano Opcional. Determina si los parámetros de consulta están en formato JSON.
Encabezados Diccionario<string, object> Opcional. Define el encabezado usado al llamar al punto de conexión para obtener el identificador de sesión y al llamar a la API del punto de conexión.

Defina la cadena en el formato serializado dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }
SessionTimeoutInMinutes Cuerda Opcional. Define un tiempo de espera de sesión, en minutos.
SessionIdName Cuerda Opcional. Define un nombre de identificador para la sesión.
SessionLoginRequestUri Cuerda Opcional. Define una URI de solicitud de inicio de sesión.

Configuración de la solicitud

La request sección de la configuración pollingConfig incluye los parámetros siguientes:

Nombre Tipo Descripción
apiEndpoint Cuerda Obligatorio. Define el punto de conexión del que se extraerán los datos.
httpMethod Cuerda Obligatorio. Define el método de API: GET o POST
queryTimeFormat String, o UnixTimestamp o UnixTimestampInMills Obligatorio. Define el formato usado para definir la hora de consulta.

Este valor puede ser una cadena o en formato UnixTimestamp o UnixTimestampInMills para indicar la hora de inicio y finalización de la consulta en UnixTimestamp.
startTimeAttributeName Cuerda Opcional. Define el nombre del atributo que define la hora de inicio de la consulta.
endTimeAttributeName Cuerda Opcional. Define el nombre del atributo que define la hora de finalización de la consulta.
queryTimeIntervalAttributeName Cuerda Opcional. Define el nombre del atributo que define el intervalo de tiempo de consulta.
queryTimeIntervalDelimiter Cuerda Opcional. Define el delimitador de intervalo de tiempo de consulta.
queryWindowInMin Entero Opcional. Define la ventana de consulta disponible, en minutos.

Valor mínimo: 5
queryParameters Dictionary<cadena, objeto> Opcional. Define los parámetros pasados en la consulta en la ruta eventsJsonPaths.

Defina la cadena en el formato serializado dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }.
queryParametersTemplate Cuerda Opcional. Define la plantilla de parámetros de consulta para usar al pasar parámetros de consulta en escenarios avanzados.

Por ejemplo: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}"

{_QueryWindowStartTime} y {_QueryWindowEndTime} solo se admiten en los parámetros de solicitud de queryParameters y queryParametersTemplate.

{_APIKeyName} y {_APIKey} solo se admiten en el parámetro de queryParametersTemplate solicitud.
isPostPayloadJson Booleano Opcional. Determina si la carga de POST está en formato JSON.
rateLimitQPS Doble Opcional. Define el número de llamadas o consultas permitidas en un segundo.
timeoutInSeconds Entero Opcional. Define el tiempo de espera de la solicitud, en segundos.
retryCount Entero Opcional. Define el número de reintentos de solicitud para probar si es necesario.
headers Diccionario<string, object> Opcional. Define el valor del encabezado de solicitud, en el formato serializado dictionary<string, object> : {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... }

Configuración de respuesta

La response sección de la configuración pollingConfig incluye los parámetros siguientes:

Nombre Tipo Descripción
eventsJsonPaths Lista de cadenas Obligatorio. Define la ruta de acceso al mensaje en el JSON de respuesta.

Una expresión de ruta de acceso JSON especifica una ruta de acceso a un elemento o un conjunto de elementos en una estructura JSON
successStatusJsonPath Cuerda Opcional. Define la ruta de acceso al mensaje de operación correcta en el JSON de respuesta.
successStatusValue Cuerda Opcional. Define la ruta de acceso al valor del mensaje de operación correcta en el JSON de respuesta
isGzipCompressed Booleano Opcional. Determina si la respuesta se comprime en un archivo gzip.

En el código siguiente se muestra un ejemplo del valor eventsJsonPaths para un mensaje de nivel superior:

"eventsJsonPaths": [
              "$"
            ]

Configuración de paginación

La paging sección de la configuración pollingConfig incluye los parámetros siguientes:

Nombre Tipo Descripción
tipo de paginación Cuerda Obligatorio. Determina el tipo de paginación que se va a usar en los resultados, como uno de los siguientes valores: None, LinkHeader, NextPageToken, , NextPageUrl, Offset
linkHeaderTokenJsonPath Cuerda Opcional. Define la ruta de acceso JSON al encabezado de vínculo en el JSON de respuesta, si LinkHeader no está definido en el encabezado de respuesta.
nextPageTokenJsonPath Cuerda Opcional. Defina la ruta de acceso a un JSON de token para la página siguiente.
hasNextFlagJsonPath Cuerda Opcional. Define la ruta de acceso al atributo de la bandera HasNextPage.
nextPageTokenResponseHeader Cuerda Opcional. Define el nombre del encabezado del token de página siguiente en la respuesta.
nextPageParaName Cuerda Opcional. Determina el nombre de página siguiente de la solicitud.
nextPageRequestHeader Cuerda Opcional. Determina el nombre del encabezado de página siguiente en la solicitud.
nextPageUrl Cuerda Opcional. Determina la dirección URL de la página siguiente , si es diferente de la dirección URL de solicitud inicial.
ParámetrosDeConsultaDeUrlSiguientePágina Cuerda Opcional. Determina los parámetros de consulta de la dirección URL de la página siguiente si es diferente de la dirección URL de la solicitud inicial.

Defina la cadena en el formato serializado dictionary<string, object> : {'<attr_name>': <val>, '<attr_name>': <val>... }
offsetParaName Cuerda Opcional. Define el nombre del parámetro offset.
pageSizeParaName Cuerda Opcional. Define el nombre del parámetro de tamaño de página.
TamañoDePágina Entero Define el tamaño de paginación.

Código pollingConfig de ejemplo

El código siguiente muestra un ejemplo de la pollingConfig sección del archivo de configuración ccp :

"pollingConfig": {
    "auth": {
        "authType": "APIKey",
        "APIKeyIdentifier": "token",
        "APIKeyName": "Authorization"
     },
     "request": {
        "apiEndpoint": "https://api.github.com/../{{placeHolder1}}/audit-log",
        "rateLimitQPS": 50,
        "queryWindowInMin": 15,
        "httpMethod": "Get",
        "queryTimeFormat": "yyyy-MM-ddTHH:mm:ssZ",
        "retryCount": 2,
        "timeoutInSeconds": 60,
        "headers": {
           "Accept": "application/json",
           "User-Agent": "Scuba"
        },
        "queryParameters": {
           "phrase": "created:{_QueryWindowStartTime}..{_QueryWindowEndTime}"
        }
     },
     "paging": {
        "pagingType": "LinkHeader",
        "pageSizeParaName": "per_page"
     },
     "response": {
        "eventsJsonPaths": [
          "$"
        ]
     }
}

Implementación del conector en Microsoft Sentinel e inicio de la ingesta de datos

Después de crear el archivo de configuración JSON, incluida la interfaz de usuario y la configuración de sondeo , implemente el conector en el área de trabajo de Microsoft Sentinel.

  1. Use una de las siguientes opciones para implementar el conector de datos.

    Sugerencia

    La ventaja de implementar mediante una plantilla de Azure Resource Manager (ARM) es que varios valores están integrados en la plantilla y no es necesario definirlos manualmente en una llamada API.

    Envuelve tus colecciones de configuración JSON en una plantilla ARM para desplegar tu conector. Para asegurarse de que el conector de datos se implementa en el área de trabajo correcta, asegúrese de definir el área de trabajo en la plantilla de ARM o seleccione el área de trabajo al implementar la plantilla de ARM.

    1. Prepare un archivo JSON de plantilla de ARM para el conector. Por ejemplo, consulte los siguientes archivos JSON de plantilla de ARM:

    2. En Azure Portal, busque Implementación de una plantilla personalizada.

    3. En la página Implementación personalizada, seleccione Crear su propia plantilla en el editor>Cargar archivo. Vaya a y seleccione la plantilla de ARM local y, a continuación, guarde los cambios.

    4. Seleccione su suscripción y grupo de recursos, y a continuación, ingrese el espacio de trabajo de Log Analytics donde desea implementar su conector personalizado.

    5. Seleccione Revisar y crear para implementar el conector personalizado en Microsoft Sentinel.

    6. En Microsoft Sentinel, vaya a la página Conectores de datos y busque el nuevo conector. Configúrelo para empezar a ingerir datos.

    Para más información, consulte Implementación de una plantilla local en la documentación de Azure Resource Manager.

  2. Configure el conector de datos para conectar el origen de datos y comenzar a ingerir datos en Microsoft Sentinel. Puede conectarse al origen de datos mediante el portal, como con los conectores de datos predefinidos, o mediante la API.

    Cuando se usa Azure Portal para conectarse, los datos de usuario se envían automáticamente. Al conectarse a través de la API, deberá enviar los parámetros de autenticación pertinentes en la llamada API.

    En la página del conector de datos de Microsoft Sentinel, siga las instrucciones que ha proporcionado para conectarse al conector de datos.

    La página del conector de datos de Microsoft Sentinel está controlada por la configuración de InstructionSteps en el elemento connectorUiConfig del archivo CCP de configuración JSON. Si tiene problemas con la conexión de la interfaz de usuario, asegúrese de que tiene la configuración correcta para el tipo de autenticación.

  3. En Microsoft Sentinel, vaya a la página Registros y compruebe que los registros de su origen de datos están fluyendo hacia su área de trabajo.

Si no ve los datos que fluyen a Microsoft Sentinel, compruebe la documentación del origen de datos y los recursos de solución de problemas, compruebe los detalles de configuración y compruebe la conectividad. Para más información, consulte Supervisión del estado de los conectores de datos.

Desconectar el conector

Si ya no necesita los datos del conector, desconecte el conector para detener el flujo de datos.

Use uno de los métodos siguientes:

  • Azure Portal: en la página del conector de datos de Microsoft Sentinel, seleccione Desconectar.

  • API: use la API DISCONNECT para enviar una llamada PUT con un cuerpo vacío a la siguiente dirección URL:

    https://management.azure.com /subscriptions/{{SUB}}/resourceGroups/{{RG}}/providers/Microsoft.OperationalInsights/workspaces/{{WS-NAME}}/providers/Microsoft.SecurityInsights/dataConnectors/{{Connector_Id}}/disconnect?api-version=2021-03-01-preview
    

Pasos siguientes

Si aún no lo ha hecho, comparta el nuevo conector de datos sin código con la comunidad de Microsoft Sentinel. Cree una solución para el conector de datos y compártala en Marketplace de Microsoft Sentinel.

Para obtener más información, consulta