[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.
connectorUiConfig
. Define os elementos visuais e o texto exibidos na página do conector de dados no Microsoft Sentinel. Para obter mais informações, veja Configurar a interface do usuário do seu conector.pollingConfig
. Define como o Microsoft Sentinel coleta dados de sua fonte de dados. Para obter mais informações, veja Definir as configurações de sondagem do seu conector.
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:
- Título. O título exibido para o conector de dados.
- Logotipo. O ícone exibido para o conector de dados. Personalizar isso só é possível ao implantar como parte de uma solução.
- Status. Indica se o conector de dados está ou não conectado ao Microsoft Sentinel.
- Gráficos de dados. Exibem consultas relevantes e a quantidade de dados ingeridos nas últimas duas semanas.
- 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.
- 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:
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:
Por outro lado, a imagem a seguir mostra uma mensagem de informações que não está 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:
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:
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 |
Configurar outras opções de link
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.
- O utilitário de teste pode ser acessado por essa URL – https://aka.ms/sentineldataconnectorvalidateurl
- Acesse Microsoft Sentinel –> Conectores de Dados
- 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:
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.
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.
Prepare um arquivo JSON de modelo do ARM para seu conector. Por exemplo, veja os seguintes arquivos JSON de modelo do ARM:
- Conector de dados na solução Slack
- Conector de dados na solução do GitHub
No portal do Azure, pesquise Implantar um modelo personalizado.
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.
Selecione sua assinatura e grupo de recursos e, em seguida, insira o workspace do Log Analytics no qual você deseja implantar seu conector personalizado.
Selecione Revisar + criar para implantar seu conector personalizado no Microsoft Sentinel.
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.
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.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