Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
connectorUiConfig. Define los elementos visuales y el texto que se muestran en la página del conector de datos de 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 de tu 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 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:
- Título. Título que se muestra para el conector de datos.
- Logotipo. Icono que se muestra para el conector de datos. Personalizar esto 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 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.
- 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:
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:
En cambio, la imagen siguiente muestra un mensaje de información no en línea:
| 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:
| 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:
| Valores de matriz | Tipo | Descripción |
|---|---|---|
| tipoDeEnlace | ENUM | Determina el tipo de vínculo, como uno de los siguientes valores: InstallAgentOnWindowsVirtualMachineInstallAgentOnWindowsNonAzureInstallAgentOnLinuxVirtualMachineInstallAgentOnLinuxNonAzureOpenSyslogSettingsOpenCustomLogsSettingsOpenWafOpenAzureFirewall
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 |
Configuración de otras opciones de vínculo
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[]({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.
- 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
connectorUiConfigsecció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:
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.
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.
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 Implementación de una plantilla personalizada.
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.
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.
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 empezar a ingerir 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 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
connectorUiConfigdel 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.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