[En desuso] Creación de un conector sin código heredado para Microsoft Sentinel
Importante
La recopilación de registros de muchos dispositivos y dispositivos ahora es compatible con el formato de evento común (CEF) a través de AMA, Syslog a través de AMA o registros personalizados a través del conector de datos AMA en Microsoft Sentinel. Para más información, consulte Búsqueda del conector de datos de Microsoft Sentinel.
Importante
Hay una versión más reciente de la plataforma de conector sin código (CCP). Para 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 asociados, usuarios avanzados y desarrolladores la capacidad de crear conectores personalizados, conectarlos e ingerir datos en Microsoft Sentinel. Los conectores creados mediante la CCP se pueden implementar a través de la API, de una plantilla de ARM o como una solución en el centro de contenido de Microsoft Sentinel.
Los conectores creados con la CCP están totalmente habilitados para SaaS, sin ningún requisito para las instalaciones de servicio, y también incluyen seguimiento de estado y soporte técnico completo por parte de Microsoft Sentinel.
Cree su conector de datos mediante la definición de valores de configuración JSON, teniendo en cuenta valores de configuración del aspecto de la página del conector de datos en Microsoft Sentinel y unos valores de sondeo que definen cómo funciona la conexión.
Importante
Esta versión de la plataforma de conector sin código (CCP) está en versión preliminar, 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 los siguientes pasos para crear el conector CCP y conectarse al origen de datos desde Microsoft Sentinel:
- Configuración de la interfaz de usuario del conector
- Configuración de los valores de sondeo del conector
- Implementación del conector en el á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 los valores de configuración JSON de CCP y los procedimientos para implementar el conector mediante la API, una plantilla de ARM o una solución de Microsoft Sentinel.
Requisitos previos
Antes de crear un conector, es recomendable que comprenda cómo se comporta el origen de datos y la manera exacta en la que Microsoft Sentinel tiene que conectarse.
Por ejemplo, tendrá que aprender los tipos de autenticación, paginación y puntos de conexión de API necesarios para las conexiones correctas.
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.
connectorUiConfig
. Define los elementos visuales y el texto que se muestran en la página del conector de datos en Microsoft Sentinel. Para más información, consulte Configuración de la interfaz de usuario del conector.pollingConfig
. Define cómo Microsoft Sentinel recopila datos del origen de datos. Para más información, consulte Configuración de los valores de sondeo del conector.
A continuación, si implementa el conector sin código a través de ARM, encapsulará estas secciones en la plantilla de ARM de 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 ejemplo del conector de datos, resaltada con números que corresponden a áreas configurables de la interfaz de usuario:
- Título. Título que se muestra para el conector de datos.
- Logotipo. Icono que se muestra para el conector de datos. La personalización de este elemento solo es posible cuando se implementa como parte de una solución.
- Status. Indica si el conector de datos está conectado o no a Microsoft Sentinel.
- Gráficos de datos. Muestra las consultas pertinentes y la cantidad de datos ingeridos en las últimas dos semanas.
- Pestaña Instrucciones. Incluye una sección de Requisitos previos, con una lista de validaciones mínimas antes de que el usuario pueda habilitar el conector; también cuenta con una sección de Instrucciones que tiene una lista de instrucciones para guiar al usuario en el proceso de habilitación del conector. Esta sección puede incluir texto, botones, formularios, tablas y otros widgets comunes para simplificar el proceso.
- Pestaña Pasos siguientes. Incluye información útil para comprender cómo buscar datos, entre otros consultas de ejemplo, en los registros de eventos.
Estas son las connectorUiConfig
secciones y la sintaxis necesarias para configurar la interfaz de usuario:
Nombre de propiedad | Type | Descripción |
---|---|---|
disponibilidad | { "status": 1, "isPreview": (booleana)} |
status: 1 indica que el conector está disponible de forma general para los clientes. isPreview: indica si se debe incluir el sufijo (versión preliminar) en el nombre del conector. |
connectivityCriteria | { "type": SentinelKindsV2, "value": APIPolling } |
Objeto que define cómo comprobar si el conector está definido correctamente. Use los valores indicados aquí. |
dataTypes | dataTypes[] | Una lista de todos los tipos de datos para el conector y una consulta para capturar la hora del último evento para cada tipo de datos. |
descriptionMarkdown | String | Descripción del conector con la capacidad de agregar lenguaje Markdown para mejorarlo. |
graphQueries | 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 | String | Define el nombre de la tabla de Log Analytics de la que 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[] | Es la información que se muestra en la sección Requisitos previos de la interfaz de usuario, que a su vez muestra los permisos necesarios para habilitar o deshabilitar el conector. |
publisher | String | Este es el texto que se muestra en la sección Proveedor. |
sampleQueries | sampleQueries[] | Consultas de ejemplo para que el cliente entienda cómo buscar los datos en el registro de eventos, que se mostrarán en la pestaña Pasos siguientes. |
title | String | Título que se muestra en la página del conector de datos. |
Unir todas estas piezas es complicado. Use la herramienta de validación de la experiencia de usuario de la página del conector para probar los componentes que ha reunido.
dataTypes
Valor Array | Tipo | Descripción |
---|---|---|
name | String | Descripción significativa de lastDataReceivedQuery , incluida la compatibilidad con una variable. Ejemplo: {{graphQueriesTableName}} |
lastDataReceivedQuery | String | Consulta de KQL que, o devuelve una fila e indica la última vez que se recibieron los datos, o no devuelve ningún dato si no hay datos pertinentes. Ejemplo: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
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.
Valor Array | Tipo | Descripción |
---|---|---|
metricName | String | Escriba un nombre significativo para el gráfico. Ejemplo: Total data received |
legend | String | Cadena que aparece en la leyenda a la derecha del gráfico, incluida una referencia de variable. Ejemplo: {{graphQueriesTableName}} |
baseQuery | String | Consulta que filtra los eventos relevantes, incluida una referencia de 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 en Microsoft Sentinel.
Propiedad Array | Tipo | Descripción |
---|---|---|
title | String | Opcional. Define un título para las instrucciones. |
description | String | Opcional. Define una descripción significativa para las instrucciones. |
innerSteps | Array | Opcional. Define una matriz de pasos de instrucciones internas. |
instructions | Matriz de instrucciones | Necesario. Define una matriz de instrucciones de un tipo de parámetro específico. |
bottomBorder | Boolean | Opcional. Cuando se produce true , agrega un borde inferior al área de instrucciones de la página del conector en Microsoft Sentinel |
isComingSoon | Boolean | Opcional. Cuando se produce true , agrega un título en el que pone Próximamente, en la página del conector en Microsoft Sentinel |
instrucciones
Muestra un grupo de instrucciones, con varias opciones como parámetros y la capacidad de anidar más instrucciones y pasos en grupos.
Parámetro | Propiedad Array | Descripción |
---|---|---|
APIKey | APIKey | Permite agregar marcadores de posición al archivo de configuración JSON del conector. |
CopyableLabel | CopyableLabel | Muestra un campo de texto con el botón Copiar al final. Cuando se pulsa el botón, se copia el valor del campo. |
InfoMessage | InfoMessage | Define un mensaje de información insertado. |
InstructionStepsGroup | InstructionStepsGroup | Muestra un grupo de instrucciones, opcionalmente expandidas o contraídas, 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 desee crear una plantilla de archivo de configuración JSON, con parámetros de marcadores de posición, para reutilizar en varios conectores o incluso para crear un conector con datos que no tiene 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 parámetro userRequestPlaceHoldersInput
incluye los siguientes atributos:
Nombre | Escribir | Descripción |
---|---|---|
DisplayText | String | Define el valor de presentación del cuadro de texto, que se muestra al usuario al conectarse. |
RequestObjectKey | String | Define el id. en la sección de solicitud del elemento pollingConfig para sustituir el valor del marcador de posición con el valor que haya proporcionado el usuario. Si no usa este atributo, use el atributo PollingKeyPaths en su lugar. |
PollingKeyPaths | String | 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 atributo RequestObjectKey en su lugar. |
PlaceHolderName | String | Define el nombre del parámetro de marcador de posición en el archivo de plantilla JSON. Puede ser cualquier valor único, como {{placeHolder}} . |
CopyableLabel
Ejemplo:
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 Array | Tipo | Descripción |
---|---|---|
fillWith | ENUM | Opcional. Matriz de variables de entorno utilizadas para rellenar 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 | String | Define el texto de la etiqueta encima de un cuadro de texto. |
value | String | Define el valor que se debe presentar en el cuadro de texto y admite marcadores de posición. |
rows | Filas | Opcional. Define las filas del área de interfaz de usuario. De manera predeterminada, se establece en 1. |
wideLabel | Boolean | Opcional. Determina una etiqueta ancha para cadenas largas. De manera predeterminada, se establece en false . |
InfoMessage
Este es un ejemplo de un mensaje de información insertado:
Por el contrario, la imagen siguiente muestra un mensaje de información no insertado:
Valor Array | Tipo | Descripción |
---|---|---|
text | String | Texto que se va a mostrar en el mensaje. |
visible | Boolean | Determina si se muestra el mensaje. |
inline | Boolean | Determina cómo se muestra el mensaje de información. - true : (Recomendado) Muestra el mensaje de información insertado en las instrucciones. - false : agrega un fondo azul. |
InstructionStepsGroup
Este es un ejemplo de un grupo de instrucciones expandible:
Valor Array | Tipo | Descripción |
---|---|---|
title | String | Define el título del paso de instrucción. |
canCollapseAllSections | Boolean | Opcional. Determina si la sección es una instancia de Accordion contraíble o no contraíble. |
noFxPadding | Boolean | Opcional. Si se produce true , reduce el relleno de altura para ahorrar espacio. |
expanded | Boolean | Opcional. Si se produce true , se muestra como expandido de manera predeterminada. |
Para obtener un ejemplo detallado, consulte el archivo JSON de configuración para el conector DNS de Windows.
InstallAgent
Algunos tipos InstallAgent aparecen como un botón; otros aparecerán como un vínculo. Estos son ejemplos de ambos:
Valores Array | Tipo | Descripción |
---|---|---|
linkType | ENUM | Determina el tipo de vínculo, como uno de los valores siguientes: InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall OpenMicrosoftAzureMonitoring OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | String | Se requiere al usar el tipo de vínculo OpenPolicyAssignment. Para los conectores basados en directivas, define el GUID de la definición de directiva integrada. |
assignMode | ENUM | Opcional. En el caso de 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 |
metadata
En esta sección se proporcionan metadatos en la interfaz de usuario del conector de datos en el área Descripción.
Valor Collection | Tipo | Descripción |
---|---|---|
kind | String | Define el tipo de plantilla de ARM que está creando. Use siempre dataConnector . |
source | String | Describe el origen de datos, con la sintaxis siguiente: { "kind": cadena"name": cadena} |
author | String | Describe el autor del conector de datos, con la sintaxis siguiente: { "name": cadena} |
support | String | Describa la compatibilidad proporcionada para el conector de datos mediante la sintaxis siguiente: { "tier": cadena,"name": cadena,"email": cadena,"link": cadena de dirección URL} |
permisos
Valor Array | Tipo | Descripción |
---|---|---|
customs | String | Describe los permisos personalizados necesarios para la conexión de datos, en la sintaxis siguiente: { "name": string, "description": cadena} Ejemplo: el valor customs 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 valores siguientes: OfficeIRM ,OfficeATP , Office365 , AadP1P2 , Mcas , Aatp , Mdatp , Mtp , IoT Ejemplo: el valor licenses (licencias) se muestra así en Microsoft Sentinel: Licencia: requiere Azure AD Premium P2 |
resourceProvider | resourceProvider | Describe los requisitos previos para el recurso de Azure. Ejemplo: el valor resourceProvider se muestra así en la sección Requisitos previos de Microsoft Sentinel: Área de trabajo: se requiere permiso de escritura y de escritura. Debe tener permisos de lectura para las claves compartidas del área de trabajo. |
tenant | matriz de valores ENUM Ejemplo: "tenant": [ "GlobalADmin", "SecurityAdmin" ] |
Define los permisos necesarios, como uno o varios de los valores siguientes: "GlobalAdmin" , "SecurityAdmin" , "SecurityReader" , "InformationProtection" Ejemplo: el valor tenant se muestra así en Microsoft Sentinel: Permisos de inquilino: requiere Global Administrator o Security Administrator en el área de trabajo del inquilino. |
resourceProvider
valor de submatriz | Tipo | Descripción |
---|---|---|
proveedor | ENUM | Describe el proveedor de recursos, con uno de los valores siguientes: - Microsoft.OperationalInsights/workspaces - Microsoft.OperationalInsights/solutions - Microsoft.OperationalInsights/workspaces/datasources - microsoft.aadiam/diagnosticSettings - Microsoft.OperationalInsights/workspaces/sharedKeys - Microsoft.Authorization/policyAssignments |
providerDisplayName | String | Es un elemento de lista en Requisitos previos que mostrará una "x" roja o una marca de verificación verde cuando se validen los elementos requisitosPermissions en la página del conector. Ejemplo, "Workspace" |
permissionsDisplayText | String | Muestra texto para permisos de lectura, escritura o lectura y escritura que deben corresponder a los valores configurados en requiredPermissions. |
requiredPermissions | { "action": Boolean, "delete": Boolean, "read": Boolean, "write": Boolean} |
Describe los permisos mínimos necesarios para el conector. |
scope | ENUM | Describe el ámbito del conector de datos, como uno de los valores siguientes: "Subscription" , "ResourceGroup" , "Workspace" |
sampleQueries
valor array | Tipo | Descripción |
---|---|---|
description | String | Descripción significativa de la consulta de ejemplo. Ejemplo: Top 10 vulnerabilities detected |
consulta | String | Consulta de ejemplo usada para capturar los datos del tipo de datos. Ejemplo: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10 |
Configuración de otras opciones de vínculo
Para definir un vínculo insertado mediante Markdown, use el ejemplo siguiente. Aquí se proporciona un vínculo 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 una 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 de usuario de la página del conector de datos
Siga estos pasos para representar y validar la experiencia de usuario del conector.
- Esta dirección URL puede acceder a la utilidad de prueba: https://aka.ms/sentineldataconnectorvalidateurl
- Vaya a Microsoft Sentinel -> Conectores de datos.
- Haga clic en el botón "Importar" y seleccione un archivo JSON que solo contenga la sección
connectorUiConfig
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 la 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 se 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 del origen de datos para un conector de datos sin código.
El código siguiente muestra la sintaxis de la sección pollingConfig
del archivo de configuración de CCP.
"pollingConfig": {
"auth": {
},
"request": {
},
"response": {
},
"paging": {
}
}
La sección pollingConfig
se incluye los datos siguientes:
Nombre | Escribir | Descripción |
---|---|---|
auth | String | Describe las propiedades de autenticación para sondear los datos. Para más información, consulte Configuración de autenticación. |
auth.authType | String | Mandatory. Define el tipo de autenticación, anidado dentro del objeto auth , como uno de los siguientes valores: Basic , APIKey , OAuth2 |
Solicitud | JSON anidado | Mandatory. 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 | Mandatory. 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. |
paging | 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 más información, consulte Código pollingConfig de ejemplo.
configuración de autenticación
La sección auth
de la configuración pollingConfig incluye los parámetros siguientes, dependiendo del tipo definido en el elemento authType:
Parámetros authType básicos
Nombre | Escribir | Descripción |
---|---|---|
Nombre de usuario | String | Mandatory. Define el nombre de usuario. |
Contraseña | String | Mandatory. Define la contraseña de usuario. |
Parámetros authType de APIKey
Nombre | Escribir | Descripción |
---|---|---|
APIKeyName | String | Opcional. Define el nombre de la clave de API, como uno de los valores siguientes: - XAuthToken - Authorization |
IsAPIKeyInPostPayload | Boolean | Determina dónde se define la clave de API. True: La clave de API se define en la carga de la solicitud POST False: la clave de API se define en el encabezado |
APIKeyIdentifier | String | Opcional. Define el nombre del identificador de la clave de API. Por ejemplo, cuando la autorización se define como "Authorization": "token <secret>" , este parámetro se define como: {APIKeyIdentifier: “token”}) |
Parámetros authType de OAuth2
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 | Escribir | Descripción |
---|---|---|
FlowName | String | Mandatory. Define un flujo de OAuth2. Valor admitido: AuthCode - requiere un flujo de autorización |
AccessToken | String | Opcional. Define un token de acceso de OAuth2, pertinente cuando el token de acceso no expira. |
AccessTokenPrepend | String | Opcional. Define un token de acceso de OAuth2 antepuesto. El valor predeterminado es Bearer . |
RefreshToken | Cadena | Obligatorio para los tipos de autenticación de OAuth2. Define el token de actualización de OAuth2. |
TokenEndpoint | Cadena | Obligatorio para los tipos de autenticación de OAuth2. Define el punto de conexión de servicio de token de OAuth2. |
AuthorizationEndpoint | String | 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. |
RedirectionEndpoint | String | Opcional. Define un punto de conexión de redireccionamiento durante la incorporación. |
AccessTokenExpirationDateTimeInUtc | String | Opcional. Define una fecha y hora de expiración del token de acceso, en formato UTC. Pertinente para cuando el token de acceso no expira y, por tanto, tiene un datetime grande en UTC o cuando el token de acceso tiene un datetime de expiración grande. |
RefreshTokenExpirationDateTimeInUtc | String | Obligatorio para los tipos de autenticación de OAuth2. Define el datetime de expiración del token de actualización en formato UTC. |
TokenEndpointHeaders | Diccionario<string, objeto> | Opcional. Define los encabezados al llamar a un punto de conexión de servicio de token de OAuth2. Defina una cadena en el formato dictionary<string, string> serializado: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
AuthorizationEndpointHeaders | Diccionario<string, objeto> | Opcional. Define los encabezados 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 dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
AuthorizationEndpointQueryParameters | Diccionario<string, objeto> | Opcional. Define los 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 dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
TokenEndpointQueryParameters | Diccionario<string, objeto> | Opcional. Defina los parámetros de consulta al llamar al punto de conexión de servicio de token de OAuth2. Defina una cadena en el formato dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
IsTokenEndpointPostPayloadJson | Boolean | Opcional, el valor predeterminado es falso. Determina si los parámetros de consulta están en formato JSON y establecidos en la carga POST de la solicitud. |
IsClientSecretInHeader | Boolean | Opcional, el valor predeterminado es falso. Determina si los valores client_id y client_secret se definen en el encabezado, como se hace en el esquema de autenticación básica, en lugar de en la carga POST. |
RefreshTokenLifetimeinSecAttributeName | String | Opcional. Define el nombre del atributo de la respuesta del punto de conexión del token, lo que especifica la duración del token de actualización, en segundos. |
IsJwtBearerFlow | Boolean | Opcional, el valor predeterminado es falso. Determina si usa JWT. |
JwtHeaderInJson | Diccionario<string, objeto> | Opcional. Defina los encabezados de JWT en formato JSON. Defina una cadena en el formato dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...} |
JwtClaimsInJson | Diccionario<string, objeto> | Opcional. Define las notificaciones de JWT en formato JSON. Defina una cadena en el formato dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...} |
JwtPem | String | 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 punto de conexión de servicio de token. El valor predeterminado es 180 segundos. |
Este es un ejemplo del aspecto que podría tener 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 authType de la sesión
Nombre | Escribir | Descripción |
---|---|---|
QueryParameters | Diccionario<string, objeto> | Opcional. Lista de parámetros de consulta, en formato serializado dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
IsPostPayloadJson | Boolean | Opcional. Determina si los parámetros de consulta están en formato JSON. |
Encabezados | Diccionario<string, objeto> | Opcional. Define el encabezado utilizado al llamar al punto de conexión para obtener el id. 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 | String | Opcional. Define un tiempo de espera de la sesión, en minutos. |
SessionIdName | String | Opcional. Define un nombre de id. para la sesión. |
SessionLoginRequestUri | String | Opcional. Define un URI de solicitud de inicio de sesión. |
Configuración de la solicitud
La sección request
de la configuración pollingConfig incluye los parámetros siguientes:
Nombre | Escribir | Descripción |
---|---|---|
apiEndpoint | String | Mandatory. Define el punto de conexión del que se extraerán los datos. |
httpMethod | String | Mandatory. Define el método de la API: GET o POST |
queryTimeFormat | String, o UnixTimestamp o UnixTimestampInMills | Mandatory. Define el formato utilizado 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 | String | Opcional. Define el nombre del atributo que define la hora de inicio de la consulta. |
endTimeAttributeName | String | Opcional. Define el nombre del atributo que define la hora de finalización de la consulta. |
queryTimeIntervalAttributeName | String | Opcional. Define el nombre del atributo que define el intervalo de tiempo de la consulta. |
queryTimeIntervalDelimiter | String | Opcional. Define el delimitador del intervalo de tiempo de la consulta. |
queryWindowInMin | Entero | Opcional. Define la ventana de consulta disponible, en minutos. Valor mínimo: 5 |
queryParameters | Diccionario<string, objeto> | Opcional. Define los parámetros pasados en la consulta en la ruta de acceso eventsJsonPaths . Defina la cadena en el formato dictionary<string, string> serializado: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } . |
queryParametersTemplate | String | Opcional. Define la plantilla de parámetros de consulta que se 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 queryParameters y queryParametersTemplate . {_APIKeyName} y {_APIKey} solo se admiten en el parámetro de solicitud queryParametersTemplate . |
isPostPayloadJson | Boolean | Opcional. Determina si la carga de POST está en formato JSON. |
rateLimitQPS | Double | 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, en caso de que se necesiten. |
headers | Diccionario<string, objeto> | Opcional. Define el valor del encabezado de solicitud, en formato serializado dictionary<string, object> : {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
Configuración de respuesta
La sección response
de la configuración pollingConfig incluye los parámetros siguientes:
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 sección paging
de la configuración pollingConfig incluye los parámetros siguientes:
Nombre | Escribir | Descripción |
---|---|---|
pagingType | String | Mandatory. Determina el tipo de paginación que se usará en los resultados, como uno de los valores siguientes: None , LinkHeader , NextPageToken , NextPageUrl , Offset |
linkHeaderTokenJsonPath | String | Opcional. Define la ruta de acceso JSON para vincular el encabezado en el JSON de respuesta, si el LinkHeader no está definido en el encabezado de respuesta. |
nextPageTokenJsonPath | String | Opcional. Define la ruta de acceso a un JSON de token de la página siguiente. |
hasNextFlagJsonPath | String | Opcional. Define la ruta de acceso al atributo de marca HasNextPage . |
nextPageTokenResponseHeader | String | Opcional. Define el encabezado de token de la página siguiente en la respuesta. |
nextPageParaName | String | Opcional. Determina el nombre de la página siguiente en la solicitud. |
nextPageRequestHeader | String | Opcional. Determina el nombre de encabezado de la página siguiente en la solicitud. |
nextPageUrl | String | Opcional. Determina la dirección URL de la página siguiente, si es diferente de la dirección URL de la solicitud inicial. |
nextPageUrlQueryParameters | String | 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 dictionary<string, object> serializado: {'<attr_name>': <val>, '<attr_name>': <val>... } |
offsetParaName | String | Opcional. Define el nombre del parámetro de desplazamiento. |
pageSizeParaName | String | Opcional. Define el nombre del parámetro de tamaño de página. |
PageSize | Entero | Define el tamaño de paginación. |
Código pollingConfig de ejemplo
El código siguiente muestra un ejemplo de la sección pollingConfig
del archivo de configuración de 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.
Use una de las siguientes opciones para implementar el conector de datos.
Sugerencia
La ventaja de la implementación mediante una plantilla de Azure Resource Manager (ARM) es que hay varios valores integrados en la plantilla y no es necesario definirlos manualmente en una llamada API.
Ajuste las colecciones de configuración JSON en una plantilla de ARM para implementar el 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 de la plantilla de ARM o seleccione el área de trabajo al implementar la plantilla de ARM.
Prepare un archivo JSON de plantilla de ARM para el conector. Por ejemplo, consulte los siguientes archivos JSON de plantilla de ARM:
- Conector de datos en la solución Slack
- Conector de datos en la solución de GitHub
En Azure Portal, busque la opción Implementar una plantilla personalizada.
En la página Implementación personalizada, seleccione Cree su propia plantilla en el editor>Cargar archivo. Vaya a la plantilla de ARM local, selecciónela y guarde los cambios.
Seleccione la suscripción y el grupo de recursos. Después, escriba el área de trabajo de Log Analytics donde desea implementar el conector personalizado.
Seleccione Revisar y crear para implementar el conector personalizado en Microsoft Sentinel.
En Microsoft Sentinel, vaya a la página Conectores de datos y busque el nuevo conector. Configúrelo para iniciar la ingesta de datos.
Para más información, consulte Implementación de una plantilla local en la documentación de Azure Resource Manager.
Configure el conector de datos para conectar el origen de datos y empezar a ingerir datos en Microsoft Sentinel. Puede conectarse al origen de datos a través del portal, como con los conectores de datos estándar, o a través de la API.
Cuando se usa el 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 se controla mediante la configuración de InstructionSteps en el elemento
connectorUiConfig
del archivo de configuración JSON de CCP. 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.En Microsoft Sentinel, vaya a la página Registros y compruebe que ve que los registros del origen de datos fluyen al área de trabajo.
Si no ve que los datos 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.
Desconexión del conector
Si ya no necesita los datos del conector, desconéctelo para detener el flujo de datos.
Utilice 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, le invitamos a que comparta su 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 el Marketplace de Microsoft Sentinel.
Para obtener más información, vea