[Preterido] Criar um conector sem código herdado para o Microsoft Sentinel

Importante

A coleta de logs de muitos dispositivos e dispositivos agora é suportada pelo Common Event Format (CEF) via AMA, Syslog via AMA ou Custom Logs via conector de dados AMA no Microsoft Sentinel. Para obter mais informações, veja Localizar o conector de dados do Microsoft Sentinel.

Importante

Há uma versão mais recente da Codeless Connector Platform (CCP). Para obter mais informações sobre o novo CCP, consulte Criar um conector sem código (visualização).

Consulte este documento se precisar manter ou atualizar um conector de dados com base nessa versão mais antiga e herdada da CCP.

A CCP oferece aos parceiros, usuários avançados e desenvolvedores a capacidade de criar conectores personalizados, conectá-los e ingerir dados ao Microsoft Sentinel. Os conectores criados por meio do CCP podem ser implantados via API, um modelo ARM ou como uma solução no hub de conteúdo do Microsoft Sentinel.

Os conectores criados usando CCP são totalmente SaaS, sem quaisquer requisitos para instalações de serviço, e também incluem monitoramento de integridade e suporte total do Microsoft Sentinel.

Crie seu conector de dados definindo configurações JSON, com configurações para a aparência da página do conector de dados no Microsoft Sentinel, juntamente com configurações de sondagem que definem como a conexão funciona.

Importante

Esta versão da Codeless Connector Platform (CCP) está em pré-visualização, mas também é considerada Legado. Os Termos Suplementares do Azure Preview incluem termos legais adicionais que se aplicam a funcionalidades do Azure que estão em versão beta, pré-visualização ou ainda não disponibilizadas para disponibilidade geral.

Use as seguintes etapas para criar seu conector CCP e conectar-se à sua fonte de dados a partir do Microsoft Sentinel:

  • Configurar a interface do usuário do conector
  • Definir as configurações de sondagem do conector
  • Implante o conector no espaço de trabalho do Microsoft Sentinel
  • Conecte o Microsoft Sentinel à sua fonte de dados e comece a ingerir dados

Este artigo descreve a sintaxe usada nas configurações JSON CCP e procedimentos para implantar seu conector via API, um modelo ARM ou uma solução Microsoft Sentinel.

Pré-requisitos

Antes de criar um conector, recomendamos que você entenda como sua fonte de dados se comporta e exatamente como o Microsoft Sentinel precisará se conectar.

Por exemplo, você precisará saber os tipos de autenticação, paginação e pontos de extremidade de API necessários para conexões bem-sucedidas.

Criar um arquivo de configuração JSON do conector

Seu conector CCP personalizado tem duas seções JSON principais necessárias para implantação. Preencha essas áreas para definir como seu conector é exibido no portal do Azure e como ele conecta o Microsoft Sentinel à sua fonte de dados.

  • connectorUiConfig. Define os elementos visuais e o texto exibidos na página do conector de dados no Microsoft Sentinel. Para obter mais informações, consulte Configurar a interface do usuário do conector.

  • pollingConfig. Define como o Microsoft Sentinel coleta dados de sua fonte de dados. Para obter mais informações, consulte Configurar as configurações de sondagem do conector.

Em seguida, se você implantar seu conector sem código via ARM, encapsulará essas seções no modelo ARM para conectores de dados.

Analise outros conectores de dados CCP como exemplos ou baixe o modelo de exemplo, DataConnector_API_CCP_template.json (Visualização).

Configurar a interface do usuário do conector

Esta seção descreve as opções de configuração disponíveis para personalizar a interface do usuário da página do conector de dados.

A imagem a seguir mostra uma página de conector de dados de exemplo, realçada com números que correspondem a áreas notáveis da interface do usuário:

Captura de tela de uma página de conector de dados de exemplo.

  1. Título. O título exibido para o conector de dados.
  2. Logótipo. O ícone exibido para o conector de dados. Personalizar isso só é possível ao implantar como parte de uma solução.
  3. Estado. Indica se o conector de dados está ou não conectado ao Microsoft Sentinel.
  4. Gráficos de dados. Exibe consultas relevantes e a quantidade de dados ingeridos nas últimas duas semanas.
  5. Guia Instruções. Inclui uma seção de Pré-requisitos , com uma lista de validações mínimas antes que o usuário possa habilitar o conector, e Instruções, para orientar a ativação do conector pelo usuário. Esta seção pode incluir texto, botões, formulários, tabelas e outros widgets comuns para simplificar o processo.
  6. Guia Próximas etapas. Inclui informações úteis para entender como localizar dados nos logs de eventos, como consultas de exemplo.

Aqui estão as seções e a connectorUiConfig sintaxe necessárias para configurar a interface do usuário:

Nome de Propriedade Tipo Description
disponibilidade {
"status": 1,
"isPreview": Booleano
}

status: 1 Indica que o conector está geralmente disponível para os clientes.
isPreview Indica se o sufixo (Preview) deve ser incluído no nome do conector.
conectividadeCritérios {
"type": SentinelKindsV2,
"value": APIPolling
}
Um objeto que define como verificar se o conector está definido corretamente. Utilize os valores aqui indicados.
Tipos de dados Tipos de dados[] Uma lista de todos os tipos de dados para seu conector e uma consulta para buscar a hora do último evento para cada tipo de dados.
descriçãoMarkdown String Uma descrição para o conector com a capacidade de adicionar linguagem de marcação para melhorá-lo.
graphQueries graphQueries[] Consultas que apresentam a ingestão de dados nas últimas duas semanas no painel Gráficos de dados.

Forneça uma consulta para todos os tipos de dados do conector de dados ou uma consulta diferente para cada tipo de dados.
graphQueriesTableName String Define o nome da tabela do Log Analytics da qual os dados para suas consultas são extraídos.

O nome da tabela pode ser qualquer cadeia de caracteres, mas deve terminar em _CL. Por exemplo: TableName_CL
instruçõesPassos instruçãoPassos[] Uma matriz de partes do widget que explicam como instalar o conector, exibidas na guia Instruções .
metadados metadados Metadados exibidos sob a descrição do conector.
permissions (permissões) permissões[] As informações exibidas na seção Pré-requisitos da interface do usuário, que lista as permissões necessárias para habilitar ou desabilitar o conector.
editora String Este é o texto mostrado na seção Provedor .
exemploConsultas sampleQueries[] Exemplos de consultas para o cliente entender como localizar os dados no log de eventos, a serem exibidos na guia Próximas etapas .
title String Título exibido na página do conector de dados.

Juntar todas estas peças é complicado. Use a ferramenta de validação da experiência do usuário da página do conector para testar os componentes que você montou.

Tipos de dados

Valor da matriz Tipo Description
Designação Cadeia (de carateres) Uma descrição significativa para olastDataReceivedQuery, incluindo suporte para uma variável.

Exemplo: {{graphQueriesTableName}}
lastDataReceivedQuery String Uma consulta KQL que retorna uma linha e indica a última vez que os dados foram recebidos, ou nenhum dado se não houver dados relevantes.

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

graphQueries

Define uma consulta que apresenta a ingestão de dados nas últimas duas semanas no painel Gráficos de dados.

Forneça uma consulta para todos os tipos de dados do conector de dados ou uma consulta diferente para cada tipo de dados.

Valor da matriz Tipo Description
metricName String Um nome significativo para o seu gráfico.

Exemplo: Total data received
lenda String A cadeia de caracteres que aparece na legenda à direita do gráfico, incluindo uma referência de variável.

Exemplo: {{graphQueriesTableName}}
baseQuery String A consulta que filtra eventos relevantes, incluindo uma referência variável.

Exemplo: TableName_CL | where ProviderName == "myprovider" ou {{graphQueriesTableName}}

instruçãoPassos

Esta seção fornece parâmetros que definem o conjunto de instruções que aparecem na página do conector de dados no Microsoft Sentinel.

Propriedade Array Tipo Description
title String Opcional. Define um título para as suas instruções.
descrição String Opcional. Define uma descrição significativa para as suas instruções.
innerSteps Matriz Opcional. Define uma matriz de etapas de instrução internas.
Instruções Conjunto de instruções Obrigatório. Define uma matriz de instruções de um tipo de parâmetro específico.
borda inferior Boolean Opcional. Quando true, adiciona uma borda inferior à área de instruções na página do conector no Microsoft Sentinel
isComingSoon Boolean Opcional. Quando true, adiciona um título Em breve na página do conector no Microsoft Sentinel

instruções

Exibe um grupo de instruções, com várias opções como parâmetros e a capacidade de aninhar mais instructionSteps em grupos.

Parâmetro Propriedade Array Description
APIKey APIKey Adicione espaços reservados ao arquivo de configuração JSON do conector.
CopyableLabel CopyableLabel Mostra um campo de texto com um botão de cópia no final. Quando o botão é selecionado, o valor do campo é copiado.
Mensagem de Informação Mensagem de Informação Define uma mensagem informativa embutida.
InstruçãoPassosGrupo InstruçãoPassosGrupo Exibe um grupo de instruções, opcionalmente expandidas ou dobráveis, em uma seção de instruções separada.
InstallAgent InstallAgent Exibe um link para outras partes do Azure para cumprir vários requisitos de instalação.

APIKey

Você pode querer criar um modelo de arquivo de configuração JSON, com parâmetros de espaços reservados, para reutilizar em vários conectores ou até mesmo para criar um conector com dados que você não tem no momento.

Para criar parâmetros de espaço reservado, defina uma matriz adicional nomeada userRequestPlaceHoldersInput na seção Instruções do arquivo de configuração JSON do CCP, usando a seguinte sintaxe:

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

O userRequestPlaceHoldersInput parâmetro inclui os seguintes atributos:

Nome Tipo Description
DisplayText String Define o valor de exibição da caixa de texto, que é exibido para o usuário durante a conexão.
RequestObjectKey String Define o ID na seção de solicitação do pollingConfig para substituir o valor de espaço reservado pelo valor fornecido pelo usuário.

Se você não usar esse atributo, use o PollingKeyPaths atributo em vez disso.
PollingKeyPaths String Define uma matriz de objetos JsonPath que direciona a chamada de API para qualquer lugar no modelo, para substituir um valor de espaço reservado por um valor de usuário.

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

Se você não usar esse atributo, use o RequestObjectKey atributo em vez disso.
PlaceHolderName String Define o nome do parâmetro de espaço reservado no arquivo de modelo JSON. Isso pode ser qualquer valor exclusivo, como {{placeHolder}}.

CopyableLabel

Exemplo:

Captura de ecrã de um botão de valor de cópia num campo.

Código de exemplo:

{
    "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 da matriz Tipo Description
preenchimentoCom ENUM Opcional. Matriz de variáveis de ambiente usadas para preencher um espaço reservado. Separe vários espaços reservados com vírgulas. Por exemplo: {0},{1}

Valores suportados: workspaceId, workspaceName, primaryKey, MicrosoftAwsAccount, , subscriptionId
etiqueta String Define o texto para o rótulo acima de uma caixa de texto.
valor String Define o valor a ser apresentado na caixa de texto, suporta espaços reservados.
linhas Linhas Opcional. Define as linhas na área de interface do usuário. Por padrão, defina como 1.
wideLabel Boolean Opcional. Determina um rótulo largo para cadeias de caracteres longas. Por padrão, defina como false.

Mensagem de Informação

Eis um exemplo de uma mensagem informativa embutida:

Captura de ecrã de uma mensagem informativa embutida.

Por outro lado, a imagem a seguir mostra uma mensagem informativa não embutida:

Captura de ecrã de uma mensagem informativa não incorporada.

Valor da matriz Tipo Descrição
texto String Defina o texto a ser exibido na mensagem.
visível Boolean Determina se a mensagem é exibida.
em linha Boolean Determina como a mensagem informativa é exibida.

- true: (Recomendado) Mostra a mensagem informativa incorporada nas instruções.
- false: Adiciona um fundo azul.

InstruçãoPassosGrupo

Aqui está um exemplo de um grupo de instruções expansível:

Captura de ecrã de um grupo de instruções extra expansível.

Valor da matriz Tipo Description
title String Define o título da etapa de instrução.
canCollapseAllSections Boolean Opcional. Determina se a seção é um acordeão dobrável ou não.
noFxPadding Boolean Opcional. Se true, reduz o preenchimento de altura para economizar espaço.
expandida Boolean Opcional. Se true, é exibido como expandido por padrão.

Para obter um exemplo detalhado, consulte a configuração JSON para o conector DNS do Windows.

InstallAgent

Alguns tipos de InstallAgent aparecem como um botão, outros aparecerão como um link. Aqui estão exemplos de ambos:

Captura de tela de um link adicionado como um botão.

Captura de tela de um link adicionado como texto embutido.

Valores de matriz Tipo Description
tipo de ligação ENUM Determina o tipo de link, como um dos seguintes valores:

InstallAgentOnWindowsVirtualMachine
InstallAgentOnWindowsNonAzure
InstallAgentOnLinuxVirtualMachine
InstallAgentOnLinuxNonAzure
OpenSyslogSettings
OpenCustomLogsSettings
OpenWaf
OpenAzureFirewall OpenMicrosoftAzureMonitoring
OpenFrontDoors
OpenCdnProfile
AutomaticDeploymentCEF
OpenAzureInformationProtection
OpenAzureActivityLog
OpenIotPricingModel
OpenPolicyAssignment
OpenAllAssignmentsBlade
OpenCreateDataCollectionRule
policyDefiniçãoGuid String Necessário ao usar o OpenPolicyAssignment linkType. Para conectores baseados em política, define o GUID da definição de política interna.
assignMode ENUM Opcional. Para conectores baseados em política, define o modo de atribuição como um dos seguintes valores: Initiative, Policy
dataCollectionRuleType ENUM Opcional. Para conectores baseados em DCR, define o tipo de regra de coleta de dados como um dos seguintes: SecurityEvent, ForwardEvent

do IdP

Esta seção fornece metadados na interface do usuário do conector de dados na área Descrição .

Valor da Coleção Tipo Descrição
tipo String Define o tipo de modelo ARM que você está criando. Utilize dataConnectorsempre .
fonte String Descreve sua fonte de dados, usando a seguinte sintaxe:
{
"kind":string
"name":string
}
autor String Descreve o autor do conector de dados, usando a seguinte sintaxe:
{
"name":string
}
Suporte String Descreva o suporte fornecido para o conector de dados usando a seguinte sintaxe:
{
"tier":string,
"name":string,
"email":string,
"link":Cadeia de URL
}

permissões

Valor da matriz Tipo Description
Alfândegas String Descreve as permissões personalizadas necessárias para sua conexão de dados, na seguinte sintaxe:
{
"name":string,
"description":string
}

Exemplo: O valor aduaneiro é exibido na seção Pré-requisitos do Microsoft Sentinel com um ícone informativo azul. No exemplo do GitHub, isso se correlaciona com a linha GitHub API personal token Key: You need access to GitHub personal token...
Licenças ENUM Define as licenças necessárias, como um dos seguintes valores: ,, , , , , MdatpAatp, Mtp, McasAadP1P2Office365OfficeATPOfficeIRMIoT

Exemplo: O valor das licenças é exibido no Microsoft Sentinel como: Licença: Necessário Azure AD Premium P2
resourceProvider resourceProvider Descreve todos os pré-requisitos para seu recurso do Azure.

Exemplo: O valor resourceProvider é exibido na seção Pré-requisitos do Microsoft Sentinel como:
Espaço de trabalho: é necessária permissão de leitura e gravação.
Chaves: são necessárias permissões de leitura para chaves compartilhadas para o espaço de trabalho.
tenant matriz de valores ENUM
Exemplo:

"tenant": [
"GlobalADmin",
"SecurityAdmin"
]
Define as permissões necessárias, como um ou mais dos seguintes valores: "GlobalAdmin", "SecurityAdmin", "SecurityReader", "InformationProtection"

Exemplo: exibe o valor do locatário no Microsoft Sentinel como: Permissões de locatário: requer Global Administrator ou Security Administrator no locatário do espaço de trabalho

resourceProvider

valor da submatriz Tipo Description
fornecedor ENUM Descreve o provedor de recursos, com um dos seguintes valores:
- Microsoft.OperationalInsights/workspaces
- Microsoft.OperationalInsights/solutions
- Microsoft.OperationalInsights/workspaces/datasources
- microsoft.aadiam/diagnosticSettings
- Microsoft.OperationalInsights/workspaces/sharedKeys
- Microsoft.Authorization/policyAssignments
providerDisplayName String Um item de lista em Pré-requisitos que exibirá uma marca de seleção vermelha "x" ou verde quando as permissões necessárias forem validadas na página do conector. Exemplo, "Workspace"
permissõesDisplayText String Exibir texto para permissões de Leitura, Gravação ou Leitura e Gravação que devem corresponder aos valores configurados em requiredPermissions
requiredPermissions {
"action":Booleano,
"delete":Booleano,
"read":Booleano,
"write":Booleano
}
Descreve as permissões mínimas necessárias para o conector.
Âmbito de aplicação ENUM Descreve o escopo do conector de dados, como um dos seguintes valores: "Subscription", "ResourceGroup", "Workspace"

exemploConsultas

Valor da matriz Tipo Description
descrição String Uma descrição significativa para a consulta de exemplo.

Exemplo: Top 10 vulnerabilities detected
query String Consulta de exemplo usada para buscar os dados do tipo de dados.

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

Para definir um link embutido usando markdown, use o exemplo a seguir. Aqui um link é fornecido em uma descrição de instruções:

{
   "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 um link como um modelo ARM, use o seguinte exemplo como guia:

{
   "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})"
}

Validar a experiência do usuário da página do conector de dados

Siga estas etapas para renderizar e validar a experiência do usuário do conector.

  1. O utilitário de teste pode ser acessado por este URL - https://aka.ms/sentineldataconnectorvalidateurl
  2. Ir para Microsoft Sentinel -> Conectores de dados
  3. Clique no botão "importar" e selecione um arquivo json que contenha apenas a connectorUiConfig seção do seu conector de dados.

Para obter mais informações sobre essa ferramenta de validação, consulte as instruções Construir o conector em nosso guia de compilação do GitHub.

Nota

Como o parâmetro de instrução APIKey é específico para o conector sem código, remova temporariamente esta seção para usar a ferramenta de validação, ou ela falhará.

Definir as configurações de sondagem do conector

Esta seção descreve a configuração de como os dados são pesquisados de sua fonte de dados para um conector de dados sem código.

O código a seguir mostra a pollingConfig sintaxe da seção do arquivo de configuração do CCP.

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

A pollingConfig seção inclui as seguintes propriedades:

Nome Tipo Description
auth String Descreve as propriedades de autenticação para sondar os dados. Para obter mais informações, consulte Configuração de autenticação.
auth.authType String Obrigatório. Define o tipo de autenticação, aninhado dentro do auth objeto, como um dos seguintes valores: Basic, APIKey, OAuth2
solicitar JSON aninhado Obrigatório. Descreve a carga útil da solicitação para sondar os dados, como o ponto de extremidade da API. Para obter mais informações, consulte Configuração de solicitação.
resposta JSON aninhado Obrigatório. Descreve o objeto de resposta e a mensagem aninhada retornada da API ao sondar os dados. Para obter mais informações, consulte Configuração de resposta.
paginação JSON aninhado Opcional. Descreve a carga útil de paginação ao sondar os dados. Para obter mais informações, consulte Configuração de paginação.

Para obter mais informações, consulte Exemplo de código pollingConfig.

Configuração de autenticação

A auth seção da configuração pollingConfig inclui os seguintes parâmetros, dependendo do tipo definido no elemento authType:

Parâmetros básicos authType

Nome Tipo Description
Nome de utilizador String Obrigatório. Define o nome do usuário.
Palavra-passe String Obrigatório. Define a senha do usuário.

APIKey authType parâmetros

Nome Tipo Description
APIKeyName String Opcional. Define o nome da sua chave de API, como um dos seguintes valores:

- XAuthToken
- Authorization
IsAPIKeyInPostPayload Boolean Determina onde sua chave de API é definida.

True: A chave da API é definida na carga útil da solicitação POST
False: a chave da API é definida no cabeçalho
APIKeyIdentifier String Opcional. Define o nome do identificador para a chave da API.

Por exemplo, quando a autorização é definida como "Authorization": "token <secret>", este parâmetro é definido como: {APIKeyIdentifier: “token”})

Parâmetros OAuth2 authType

A Codeless Connector Platform suporta concessão de código de autorização OAuth 2.0.

O tipo de concessão de Código de Autorização é usado por clientes confidenciais e públicos para trocar um código de autorização por um token de acesso.

Depois que o usuário retornar ao cliente por meio da URL de redirecionamento, o aplicativo obterá o código de autorização da URL e o usará para solicitar um token de acesso.

Nome Tipo Description
Nome do fluxo String Obrigatório. Define um fluxo OAuth2.

Valor suportado: AuthCode - requer um fluxo de autorização
AccessToken String Opcional. Define um token de acesso OAuth2, relevante quando o token de acesso não expira.
AccessTokenPrepend String Opcional. Define um token de acesso OAuth2 prepend. A predefinição é Bearer.
RefreshToken String Obrigatório para os tipos de autenticação OAuth2. Define o token de atualização OAuth2.
TokenEndpoint String Obrigatório para os tipos de autenticação OAuth2. Define o ponto de extremidade do serviço de token OAuth2.
AuthorizationEndpoint String Opcional. Define o ponto de extremidade do serviço de autorização OAuth2. Usado apenas durante a integração ou ao renovar um token de atualização.
RedirectionEndpoint String Opcional. Define um ponto de extremidade de redirecionamento durante a integração.
AccessTokenExpirationDateTimeInUtc String Opcional. Define uma data/hora de expiração do token de acesso, no formato UTC. Relevante para quando o token de acesso não expira e, portanto, tem uma data/hora grande no UTC, ou quando o token de acesso tem uma data/hora de expiração grande.
RefreshTokenExpirationDateTimeInUtc String Obrigatório para os tipos de autenticação OAuth2. Define a data/hora de expiração do token de atualização no formato UTC.
TokenEndpointHeaders Cadeia de dicionário<, objeto> Opcional. Define os cabeçalhos ao chamar um ponto de extremidade de serviço de token OAuth2.

Defina uma cadeia de caracteres no formato serializado dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }
AuthorizationEndpointHeaders Cadeia de dicionário<, objeto> Opcional. Define os cabeçalhos ao chamar um ponto de extremidade do serviço de autorização OAuth2. Usado apenas durante a integração ou ao renovar um token de atualização.

Defina uma cadeia de caracteres no formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
AuthorizationEndpointQueryParameters Cadeia de dicionário<, objeto> Opcional. Define parâmetros de consulta ao chamar um ponto de extremidade de serviço de autorização OAuth2. Usado apenas durante a integração ou ao renovar um token de atualização.

Defina uma cadeia de caracteres no formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
TokenEndpointQueryParameters Cadeia de dicionário<, objeto> Opcional. Defina parâmetros de consulta ao chamar o ponto de extremidade do serviço de token OAuth2.

Defina uma cadeia de caracteres no formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
IsTokenEndpointPostPayloadJson Boolean Opcional, o padrão é false. Determina se os parâmetros de consulta estão no formato JSON e definidos na carga útil POST da solicitação.
IsClientSecretInHeader Boolean Opcional, o padrão é false. Determina se os client_id valores e client_secret são definidos no cabeçalho, como é feito no esquema de autenticação Básica, em vez de na carga útil POST.
RefreshTokenLifetimeinSecAttributeName String Opcional. Define o nome do atributo a partir da resposta do ponto de extremidade do token, especificando o tempo de vida do token de atualização, em segundos.
IsJwtBearerFlow Boolean Opcional, o padrão é false. Determina se você está usando JWT.
JwtHeaderInJson Cadeia de dicionário<, objeto> Opcional. Defina os cabeçalhos JWT no formato JSON.

Defina uma cadeia de caracteres no formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...}
JwtClaimsInJson Cadeia de dicionário<, objeto> Opcional. Define declarações JWT no formato JSON.

Defina uma cadeia de caracteres no formato serializado dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...}
JwtPem String Opcional. Define uma chave secreta, no formato PEM Pkcs1: '-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n'

Certifique-se de manter o '\r\n' código no lugar.
RequestTimeoutInSeconds Número inteiro Opcional. Determina o tempo limite em segundos ao chamar o ponto de extremidade do serviço de token. O padrão é 180 segundos

Aqui está um exemplo de como uma configuração OAuth2 pode parecer:

"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 da sessão

Nome Tipo Description
QueryParameters Cadeia de dicionário<, objeto> Opcional. Uma lista de parâmetros de consulta, no formato serializado dictionary<string, string> :

{'<attr_name>': '<val>', '<attr_name>': '<val>'... }
IsPostPayloadJson Boolean Opcional. Determina se os parâmetros de consulta estão no formato JSON.
Cabeçalhos Cadeia de dicionário<, objeto> Opcional. Define o cabeçalho usado ao chamar o ponto de extremidade para obter a ID da sessão e ao chamar a API do ponto de extremidade.

Defina a cadeia de caracteres no formato serializado dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }
SessionTimeoutInMinutes String Opcional. Define um tempo limite de sessão, em minutos.
SessionIdName String Opcional. Define um nome de ID para a sessão.
SessionLoginRequestUri String Opcional. Define um URI de solicitação de login de sessão.

Solicitar configuração

A request seção da configuração pollingConfig inclui os seguintes parâmetros:

Nome Tipo Description
apiEndpoint String Obrigatório. Define o ponto de extremidade do qual extrair dados.
Método http String Obrigatório. Define o método API: GET ou POST
queryTimeFormat String, ou UnixTimestamp ou UnixTimestampInMills Obrigatório. Define o formato usado para definir o tempo de consulta.

Este valor pode ser uma string, ou no formato UnixTimestamp ou UnixTimestampInMills para indicar a hora de início e término da consulta no UnixTimestamp.
startTimeAttributeName String Opcional. Define o nome do atributo que define a hora de início da consulta.
endTimeAttributeName String Opcional. Define o nome do atributo que define a hora de término da consulta.
queryTimeIntervalAttributeName String Opcional. Define o nome do atributo que define o intervalo de tempo da consulta.
queryTimeIntervalDelimiter String Opcional. Define o delimitador de intervalo de tempo de consulta.
queryWindowInMin Número inteiro Opcional. Define a janela de consulta disponível, em minutos.

Valor mínimo: 5
queryParameters Cadeia de dicionário<, objeto> Opcional. Define os parâmetros passados na consulta no eventsJsonPaths caminho.

Defina a cadeia de caracteres no formato serializado dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }.
queryParametersTemplate String Opcional. Define o modelo de parâmetros de consulta a ser usado ao passar parâmetros de consulta em cenários avançados.

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

{_QueryWindowStartTime} e {_QueryWindowEndTime} são suportados apenas nos queryParameters parâmetros e queryParametersTemplate request.

{_APIKeyName} e {_APIKey} são suportados apenas no queryParametersTemplate parâmetro request.
isPostPayloadJson Boolean Opcional. Determina se a carga POST está no formato JSON.
rateLimitQPS Duplo Opcional. Define o número de chamadas ou consultas permitidas em um segundo.
timeoutInSeconds Número inteiro Opcional. Define o tempo limite da solicitação, em segundos.
retryCount Número inteiro Opcional. Define o número de novas tentativas de solicitação a serem tentadas, se necessário.
cabeçalhos Cadeia de dicionário<, objeto> Opcional. Define o valor do cabeçalho da solicitação, no formato serializado dictionary<string, object> : {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... }

Configuração de resposta

A response seção da configuração pollingConfig inclui os seguintes parâmetros:

Nome Tipo Description
eventosJsonPaths Lista de cadeias de caracteres Obrigatório. Define o caminho para a mensagem no JSON de resposta.

Uma expressão de caminho JSON especifica um caminho para um elemento, ou um conjunto de elementos, em uma estrutura JSON
successStatusJsonPath String Opcional. Define o caminho para a mensagem de sucesso na resposta JSON.
successStatusValue String Opcional. Define o caminho para o valor da mensagem de sucesso no JSON de resposta
isGzipComprimido Boolean Opcional. Determina se a resposta é compactada em um arquivo gzip.

O código a seguir mostra um exemplo do valor eventsJsonPaths para uma mensagem de nível superior:

"eventsJsonPaths": [
              "$"
            ]

Configuração de paginação

A paging seção da configuração pollingConfig inclui os seguintes parâmetros:

Nome Tipo Description
pagingType String Obrigatório. Determina o tipo de paginação a ser usado nos resultados, como um dos seguintes valores: None, LinkHeader, NextPageToken, NextPageUrl, Offset
linkHeaderTokenJsonPath String Opcional. Define o caminho JSON para o cabeçalho do link no JSON de resposta, se o LinkHeader não estiver definido no cabeçalho de resposta.
próximoPageTokenJsonPath String Opcional. Define o caminho para um JSON de token de página seguinte.
hasNextFlagJsonPath String Opcional. Define o caminho para o HasNextPage atributo flag.
nextPageTokenResponseHeader String Opcional. Define o nome do cabeçalho do token da próxima página na resposta.
próximoPageParaName String Opcional. Determina o nome da próxima página na solicitação.
nextPageRequestHeader String Opcional. Determina o nome do cabeçalho da próxima página na solicitação.
nextPageUrl String Opcional. Determina o URL da próxima página , se for diferente do URL da solicitação inicial.
nextPageUrlQueryParameters String Opcional. Determina os parâmetros de consulta do URL da próxima página se ele for diferente do URL da solicitação inicial.

Defina a cadeia de caracteres no formato serializado dictionary<string, object> : {'<attr_name>': <val>, '<attr_name>': <val>... }
offsetParaName String Opcional. Define o nome do parâmetro offset.
pageSizeParaName String Opcional. Define o nome do parâmetro de tamanho de página.
Tamanho da página Número inteiro Define o tamanho da paginação.

Exemplo de pollingConfig code

O código a seguir mostra um exemplo da pollingConfig seção do arquivo de configuração 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": [
          "$"
        ]
     }
}

Implante seu conector no Microsoft Sentinel e comece a ingerir dados

Depois de criar o arquivo de configuração JSON, incluindo a interface do usuário e a configuração de sondagem, implante o conector no espaço de trabalho do Microsoft Sentinel.

  1. Use uma das seguintes opções para implantar seu conector de dados.

    Gorjeta

    A vantagem de implantar por meio de um modelo do Azure Resource Manager (ARM) é que vários valores são incorporados ao modelo e você não precisa defini-los manualmente em uma chamada de API.

    Envolva suas coleções de configuração JSON em um modelo ARM para implantar seu conector. Para garantir que seu conector de dados seja implantado no espaço de trabalho correto, certifique-se de definir o espaço de trabalho no modelo ARM ou selecionar o espaço de trabalho ao implantar o modelo ARM.

    1. Prepare um arquivo JSON de modelo ARM para seu conector. Por exemplo, consulte os seguintes arquivos JSON de modelo ARM:

    2. No portal do Azure, procure Implantar um modelo personalizado.

    3. Na página Implantação personalizada, selecione Criar seu próprio modelo no editor>Carregar arquivo. Procure e selecione seu modelo ARM local e salve as alterações.

    4. Selecione sua assinatura e grupo de recursos e insira o espaço de trabalho do Log Analytics onde você deseja implantar seu conector personalizado.

    5. Selecione Rever + criar para implementar o seu conector personalizado no Microsoft Sentinel.

    6. No Microsoft Sentinel, vá para a página Conectores de dados, procure seu novo conector. Configure-o para começar a ingerir dados.

    Para obter mais informações, consulte Implantar um modelo local na documentação do Azure Resource Manager.

  2. Configure o conector de dados para conectar a fonte de dados e começar a ingerir dados no Microsoft Sentinel. Você pode se conectar à sua fonte de dados através do portal, como com conectores de dados prontos para uso, ou via API.

    Quando você usa o portal do Azure para se conectar, os dados do usuário são enviados automaticamente. Ao se conectar via API, você precisará enviar os parâmetros de autenticação relevantes na chamada de API.

    Na página do conector de dados do Microsoft Sentinel, siga as instruções fornecidas para se conectar ao conector de dados.

    A página do conector de dados no Microsoft Sentinel é controlada pela configuração InstructionSteps no connectorUiConfig elemento do arquivo de configuração JSON CCP. Se você tiver problemas com a conexão da interface do usuário, verifique se você tem a configuração correta para o tipo de autenticação.

  3. No Microsoft Sentinel, vá para a página Logs e verifique se você vê os logs da fonte de dados fluindo para o espaço de trabalho.

Se você não vir dados fluindo para o Microsoft Sentinel, verifique a documentação da fonte de dados e os recursos de solução de problemas, verifique os detalhes de configuração e verifique a conectividade. Para obter mais informações, consulte Monitorar a integridade dos conectores de dados.

Desconecte o conector

Se você não precisar mais dos dados do conector, desconecte o conector para interromper o fluxo de dados.

Utilize um dos métodos seguintes:

  • Portal do Azure: na página do conector de dados do Microsoft Sentinel, selecione Desconectar.

  • API: Use a API DISCONNECT para enviar uma chamada PUT com um corpo vazio para a seguinte 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
    

Próximos passos

Se ainda não o fez, partilhe o seu novo conector de dados sem código com a comunidade Microsoft Sentinel! Crie uma solução para o seu conector de dados e partilhe-a no Microsoft Sentinel Marketplace.

Para obter mais informações, consulte,