Compartilhar via


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

Importante

A coleta de logs de vários aparelhos e dispositivos agora tem suporte no Formato Comum de Evento (CEF) via AMA, Syslog via AMA, ou Logs Personalizados via conector de dados AMA no Microsoft Sentinel. Para obter mais informações, consulte Encontrar seu conector de dados do Microsoft Sentinel.

Importante

Há uma versão mais recente da Plataforma de Conector sem Código (CCP). Para obter mais informações sobre o novo CCP, consulte Criar um conector sem código (versão prévia).

Faça referência a este documento se precisar manter ou atualizar um conector de dados com base nessa versão antiga e herdada do CCP.

A Plataforma de Conector sem Código (CCP) fornece aos parceiros, usuários avançados e desenvolvedores a capacidade de criar conectores personalizados, conectá-los e ingerir dados no Microsoft Sentinel. Os conectores criados por meio da CCP podem ser implantados usando uma API, um modelo do ARM ou como uma solução no hub de conteúdo do Microsoft Sentinel.

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

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

Importante

Esta versão da Plataforma de Conector sem Código (CCP) está em VERSÃO PRÉVIA, mas também é considerada Herdada. Os termos suplementares de versão prévia do Azure incluem termos legais adicionais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Use as etapas a seguir para criar o conector da CCP e conectar-se à fonte de dados por meio do Microsoft Sentinel:

  • Configurar a interface do usuário do conector
  • Definir as configurações de sondagem do conector
  • Implantar seu conector no workspace do Microsoft Sentinel
  • Conectar o Microsoft Sentinel à fonte de dados e começar a ingerir dados

Este artigo descreve a sintaxe usada em configurações JSON da CCP e os procedimentos para implantar o conector por meio de API, de um modelo do ARM ou de uma solução do Microsoft Sentinel.

Pré-requisitos

Para criar um conector, você deve saber como sua fonte de dados se comporta e entender exatamente como o Microsoft Sentinel precisará se conectar.

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

Criar um arquivo de configuração JSON para o conector

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

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

Examine outros conectores de dados CCP como exemplos ou baixe o modelo de exemplo , DataConnector_API_CCP_template.json (versão prévia).

Configurar a interface do usuário do seu 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 exemplo do conector de dados, realçada com números que correspondem às áreas importantes 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. Logotipo. O ícone exibido para o conector de dados. Personalizar isso só é possível ao implantar como parte de uma solução.
  3. Status. Indica se o conector de dados está ou não conectado ao Microsoft Sentinel.
  4. Gráficos de dados. Exibem 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 para que o usuário possa habilitar o conector e uma seção de Instruções, para orientar o usuário na habilitação do conector. 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 sintaxe connectorUiConfig necessárias para configurar a interface do usuário:

Nome da propriedade Type Descrição
availability {
"status": 1,
"isPreview": Booliano
}

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

Fornece 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 é efetuado pull dos dados para as suas consultas.

O nome da tabela pode ser qualquer cadeia de caracteres, mas deve terminar em _CL. Por exemplo: TableName_CL
instructionsSteps instructionSteps[] Uma matriz de partes de widget que explica como instalar o conector, exibida na guia Instruções.
metadados metadados Metadados exibidos na descrição do conector.
permissões permissions[] 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.
Publicador String Esse é o texto mostrado na seção Provedor.
sampleQueries sampleQueries[] Exemplos de consultas para que o cliente entenda 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 essas peças é complicado. Use a ferramenta de validação de experiência do usuário da página do conector para testar os componentes que você juntou.

dataTypes

Valor da matriz Tipo Descrição
name String Uma descrição significativa para lastDataReceivedQuery, incluindo suporte para uma variável.

Exemplo: {{graphQueriesTableName}}
lastDataReceivedQuery String Uma consulta KQL que retorna uma linha e indica a última vez em 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 ingestão de dados nas últimas duas semanas no painel Gráficos de dados.

Fornece 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 Descrição
metricName String Um nome significativo para o gráfico.

Exemplo: Total data received
legend 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 de variável.

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

instructionSteps

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

Propriedade de matriz Tipo Descrição
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 Array Opcional. Define uma matriz de etapas de instrução interna.
instruções Matriz de instruções Obrigatórios. Define uma matriz de instruções de um tipo de parâmetro específico.
bottomBorder 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 de matriz Descrição
APIKey APIKey Adicionar espaços reservados ao arquivo de configuração JSON do seu 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.
InfoMessage InfoMessage Define uma mensagem de informações embutida.
InstructionStepsGroup InstructionStepsGroup Exibe um grupo de instruções, opcionalmente expandidas ou recolhidas, em uma seção de instruções separada.
InstallAgent InstallAgent Exibe um link para outras partes do Azure para atender a vários requisitos de instalação.

APIKey

Pode ser interessante 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 criar um conector para dados que você ainda não tem.

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

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

O parâmetro userRequestPlaceHoldersInput inclui os seguintes atributos:

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

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

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

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

CopyableLabel

Exemplo:

Captura de tela de um botão de valor de cópia em um 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 Descrição
fillWith ENUM Opcional. Matriz de variáveis de ambiente usadas para preencher um espaço reservado. Separa vários espaço reservados com vírgulas. Por exemplo: {0},{1}

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

InfoMessage

Aqui está um exemplo de uma mensagem de informações embutida:

Captura de tela de uma mensagem de informações embutida.

Por outro lado, a imagem a seguir mostra uma mensagem de informações que não está embutida:

Captura de tela de uma mensagem de informações não embutida.

Valor da matriz Tipo Descrição
text String Define texto a ser exibido na mensagem.
visible Boolean Determina se a mensagem é exibida.
inline Boolean Determina como a mensagem de informações é exibida.

- true: (Recomendado) Mostra a mensagem de informações inserida nas instruções.
- false: adiciona uma tela de fundo azul.

InstructionStepsGroup

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

Captura de tela de um grupo de instruções adicional expansível.

Valor da matriz Tipo Descrição
title String Define o título para a etapa de instrução.
canCollapseAllSections Boolean Opcional. Determina se a seção é uma sanfona que pode ser colapsada ou não.
noFxPadding Boolean Opcional. Se true, reduzirá o preenchimento de altura para economizar espaço.
expanded Boolean Opcional. Se true, mostrará como expandido por padrão.

Para obter um exemplo detalhado, consulte o JSON de configuração 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 botão.

Captura de tela de um link adicionado como texto embutido.

Valores de matriz Tipo Descrição
linkType 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
policyDefinitionGuid Cadeia de caracteres Necessário ao usar o linkType OpenPolicyAssignment. Para conectores baseados em políticas, 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 tipos: SecurityEvent, ForwardEvent

metadata

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
kind String Define o tipo de modelo do ARM que você está criando. Sempre use dataConnector.
source String Descreve sua fonte de dados usando a seguinte sintaxe:
{
"kind":string
"name":string
}
author String Descreve o autor do conector de dados usando a seguinte sintaxe:
{
"name":string
}
support String Descreve o suporte fornecido para o conector de dados usando a seguinte sintaxe:
{
"tier":string,
"name":string,
"email":string,
"link":Cadeia de caracteres de URL
}

permissões

Valor da matriz Tipo Descrição
customs String Descreve todas as permissões personalizadas necessárias para sua conexão de dados, conforme a seguinte sintaxe:
{
"name":cadeia de caracteres,
"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 chave de token pessoal da API do GitHub: você precisa de acesso ao token pessoal do GitHub...
licenças ENUM Define as licenças necessárias, como um dos seguintes valores: OfficeIRM, OfficeATP, Office365, AadP1P2, Mcas, Aatp, Mdatp, Mtp, IoT

Exemplo: o valor licenses é exibido no Microsoft Sentinel como: Licença: requer Azure AD Premium P2
resourceProvider resourceProvider Descreve os pré-requisitos para o seu recurso do Azure.

Exemplo: O valor resourceProvider é exibido na seção Pré-requisitos do Microsoft Sentinel como:
Workspace: a permissão de leitura e gravação é necessária.
Keys: são necessárias permissões de leitura nas chaves compartilhadas do workspace.
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 locatário no Microsoft Sentinel como: Permissões de locatário: Requer Global Administrator ou Security Administrator no locatário do workspace

ResourceProvider

valor da sub matriz Tipo Descrição
provedor 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 requiredPermissions for validado na página do conector. Exemplo, "Workspace"
permissionsDisplayText 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":Booliano,
"delete":Booliano,
"read":Booliano,
"write":Booliano
}
Descreve as permissões mínimas necessárias para o conector.
escopo ENUM Descreve o escopo do conector de dados, como um dos seguintes valores: "Subscription", "ResourceGroup", "Workspace"

sampleQueries

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

Exemplo: Top 10 vulnerabilities detected
consulta 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ção:

{
   "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 do 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 essa URL – https://aka.ms/sentineldataconnectorvalidateurl
  2. Acesse Microsoft Sentinel –> Conectores de Dados
  3. Clique no botão "importar" e selecione um arquivo json que contém apenas a seção connectorUiConfig do conector de dados.

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

Observação

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 seu conector

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

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

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

A seção pollingConfig inclui as seguintes propriedades:

Nome Tipo Descrição
auth String Descreve as propriedades de autenticação para sondar os dados. Para obter mais informações, veja configuração de auth.
auth.authType String Mandatory. Define o tipo de autenticação, aninhado dentro do objeto auth, como um dos seguintes valores: Basic, APIKey, OAuth2
solicitação JSON aninhado Mandatory. Descreve o conteúdo da solicitação para sondar os dados, como o ponto de extremidade da API. Para mais informações, confira configuração de request.
response JSON aninhado Mandatory. Descreve o objeto de resposta e a mensagem aninhada retornada da API ao sondar os dados. Para mais informações, confira configuração de response.
paging JSON aninhado Opcional. Descreve o conteúdo de paginação ao sondar os dados. Para obter mais informações, confira configuração de paging.

Para obter mais informações, confira Código de pollingConfig de exemplo.

Configuração de auth

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

Parâmetros básicos authType

Nome Tipo Descrição
Nome de usuário String Mandatory. Define o nome de usuário.
Senha String Mandatory. Define a senha de usuário.

Parâmetros authType de APIKey

Nome Tipo Descrição
APIKeyName Cadeia de caracteres Opcional. Define o nome da sua chave de API, como um dos seguintes valores:

- XAuthToken
- Authorization
IsAPIKeyInPostPayload Boolean Determina o local em que sua chave de API está definida.

True: a chave de API é definida no conteúdo da solicitação POST
False: a chave de API é definida no cabeçalho
APIKeyIdentifier Cadeia de caracteres Opcional. Define o nome do identificador para a chave de API.

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

Parâmetros authType de OAuth2

A Plataforma de Conector sem Código permite a concessão de código de autorização do 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 usará para solicitar um token de acesso.

Nome Tipo Descrição
FlowName String Mandatory. Define um fluxo de OAuth2.

Valor com suporte: AuthCode – requer um fluxo de autorização
AccessToken String Opcional. Define um token de acesso de OAuth2, relevante quando o token de acesso não expira.
AccessTokenPrepend String Opcional. Define um prepend de token de acesso de OAuth2. O padrão é Bearer.
RefreshToken String Obrigatório para tipos de autenticação de OAuth2. Define o token de atualização de OAuth2.
TokenEndpoint String Obrigatório para tipos de autenticação de OAuth2. Define o ponto de extremidade do serviço de token de OAuth2.
AuthorizationEndpoint String Opcional. Define o ponto de extremidade do serviço de autorização de OAuth2. Usado somente durante a integração ou a renovação de um token de atualização.
RedirectionEndpoint String Opcional. Define um ponto de extremidade de redirecionamento durante a integração.
AccessTokenExpirationDateTimeInUtc String Opcional. Define um datetime de validade do token de acesso, no formato UTC. Relevante para quando o token de acesso não expira e, portanto, tem um datetime grande em UTC, ou quando o token de acesso tem um datetime de validade grande.
RefreshTokenExpirationDateTimeInUtc String Obrigatório para tipos de autenticação de OAuth2. Define um datetime de validade do token de atualização, no formato UTC.
TokenEndpointHeaders Dicionário<cadeia de caracteres, objeto> Opcional. Define os cabeçalhos ao chamar um ponto de extremidade do serviço de token de OAuth2.

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

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

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

Define uma cadeia de caracteres no formato dictionary<string, object> serializado: {'<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 se foram definidos no payload POST da solicitação.
IsClientSecretInHeader Boolean opcional, o padrão é false. Determina se os valores client_id e client_secret foram definidos no cabeçalho, como é feito no esquema de autenticação Básica, em vez de no payload POST.
RefreshTokenLifetimeinSecAttributeName String Opcional. Define o nome do atributo na 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 o JWT.
JwtHeaderInJson Dicionário<cadeia de caracteres, objeto> Opcional. Define os cabeçalhos JWT no formato JSON.

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

Define uma cadeia de caracteres no formato dictionary<string, object> serializado: {'<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'

Mantenha o código '\r\n' inserido.
RequestTimeoutInSeconds Integer Opcional. Determina o tempo limite em segundos ao chamar o ponto de extremidade do serviço de token. O padrão é 180 segundos

Este é um exemplo de como a configuração de OAuth2 pode ser:

"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 Descrição
QueryParameters Dicionário<cadeia de caracteres, 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 Dicionário<cadeia de caracteres, 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.

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

Configuração de solicitação

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

Nome Tipo Descrição
apiEndpoint String Mandatory. Define o ponto de extremidade do qual efetuar pull dos dados.
httpMethod String Mandatory. Define o método da API: GET ou POST
queryTimeFormat Cadeia de caracteres ou UnixTimestamp ou UnixTimestampInMills Mandatory. Define o formato usado para definir a hora da consulta.

Esse valor pode ser uma cadeia de caracteres ou no formato UnixTimestamp ou UnixTimestampInMills para indicar a hora de início e término da consulta no UnixTimestamp.
startTimeAttributeName Cadeia de caracteres Opcional. Define o nome do atributo que define a hora de início da consulta.
endTimeAttributeName Cadeia de caracteres 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 Cadeia de caracteres Opcional. Define o delimitador do intervalo de tempo da consulta.
queryWindowInMin Integer Opcional. Define a janela de consulta disponível, em minutos.

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

Define a cadeia de caracteres no formato dictionary<string, string> serializado: {'<attr_name>': '<val>', '<attr_name>': '<val>'... }.
queryParametersTemplate String Opcional. Define o modelo de parâmetros da 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}'}"

Há suporte para {_QueryWindowStartTime} e {_QueryWindowEndTime} somente nos parâmetros de solicitação queryParameters e queryParametersTemplate.

Há suporte para {_APIKeyName} e {_APIKey} somente no parâmetro de solicitação queryParametersTemplate.
isPostPayloadJson Boolean Opcional. Determina se o conteúdo POST está no formato JSON.
rateLimitQPS Double Opcional. Define o número de chamadas ou consultas permitidas em um segundo.
timeoutInSeconds Integer Opcional. Define o tempo limite da solicitação, em segundos.
retryCount Integer Opcional. Define o número de repetição de tentativas de solicitação, se necessário.
headers Dicionário<cadeia de caracteres, objeto> Opcional. Define o valor do cabeçalho da solicitação, no formato dictionary<string, object> serializado: {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... }

Configuração de resposta

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

Nome Tipo Descrição
eventsJsonPaths Lista de cadeias de caracteres Mandatory. 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 Cadeia de caracteres Opcional. Define o caminho para a mensagem de êxito no JSON de resposta.
successStatusValue Cadeia de caracteres Opcional. Define o caminho para o valor da mensagem de êxito no JSON de resposta
isGzipCompressed 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 seção paging da configuração de pollingConfig inclui os seguintes parâmetros:

Nome Tipo Descrição
pagingType String Mandatory. Determina o tipo de paginação a ser usado nos resultados, como um dos seguintes valores: None, LinkHeader, NextPageToken, NextPageUrl, Offset
linkHeaderTokenJsonPath Cadeia de caracteres Opcional. Define o caminho JSON para vincular o cabeçalho no JSON de resposta, se o LinkHeader não estiver definido no cabeçalho de resposta.
nextPageTokenJsonPath Cadeia de caracteres Opcional. Define o caminho para JSON de token de próxima página.
hasNextFlagJsonPath Cadeia de caracteres Opcional. Define o caminho para o atributo sinalizador HasNextPage.
nextPageTokenResponseHeader Cadeia de caracteres Opcional. Define o nome do cabeçalho do token de próxima página na resposta.
nextPageParaName Cadeia de caracteres Opcional. Determina o nome da próxima página na solicitação.
nextPageRequestHeader Cadeia de caracteres Opcional. Determina o nome do cabeçalho da próxima página na solicitação.
nextPageUrl Cadeia de caracteres Opcional. Determina a URL da próxima página, se ela for diferente da URL de solicitação inicial.
nextPageUrlQueryParameters Cadeia de caracteres Opcional. Determina os parâmetros de consulta da URL da próxima página se ela for diferente da URL da solicitação inicial.

Define a cadeia de caracteres no formato dictionary<string, object> serializado: {'<attr_name>': <val>, '<attr_name>': <val>... }
offsetParaName Cadeia de caracteres Opcional. Define o nome do parâmetro de deslocamento.
pageSizeParaName Cadeia de caracteres Opcional. Define o nome do parâmetro de tamanho da página.
PageSize Integer Define o tamanho da paginação.

Exemplo de código de pollingConfig

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

Implantar seu conector no Microsoft Sentinel e começar 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 em seu workspace do Microsoft Sentinel.

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

    Dica

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

    Encapsule suas coleções de configuração JSON em um modelo do ARM para implantar seu conector. Para garantir que o conector de dados seja implantado no workspace correto, defina o workspace no modelo do ARM, ou selecione o workspace ao implantar o modelo do ARM.

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

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

    3. Na página Implantação personalizada, selecione Criar seu modelo no editor>Carregar arquivo. Navegue até o modelo do ARM local e selecione-o e, em seguida, salve as alterações.

    4. Selecione sua assinatura e grupo de recursos e, em seguida, insira o workspace do Log Analytics no qual você deseja implantar seu conector personalizado.

    5. Selecione Revisar + criar para implantar seu conector personalizado no Microsoft Sentinel.

    6. No Microsoft Sentinel, acesse a página Conectores de dados e pesquise seu novo conector. Configure-o para iniciar a ingestão de dados.

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

  2. Configure seu conector de dados para se conectar à fonte de dados e começar a ingerir dados no Microsoft Sentinel. Você pode se conectar à fonte de dados por meio do portal, como ocorre com conectores de dados prontos para usar, ou por meio da API.

    Quando você usa o portal do Azure para se conectar, os dados do usuário são enviados automaticamente. Ao se conectar por meio de API, você precisará enviar os parâmetros de autenticação necessários na chamada à 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 InstructionStep no elemento connectorUiConfig do arquivo de configuração JSON da CCP. Se você tiver problemas com a conexão da interface do usuário, verifique se você está usando a configuração correta para o tipo de autenticação.

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

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

Desconectar seu conector

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

Use um dos métodos a seguir:

  • 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óximas etapas

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

Para obter mais informações, consulte