Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
A coleta de logs de muitos aparelhos e dispositivos agora é suportada no Microsoft Sentinel através de três métodos: o Formato Comum de Evento (CEF) via conector de dados AMA, Syslog via conector de dados AMA, ou Logs Personalizados via conector de dados AMA. Para obter mais informações, consulte Encontrar seu conector de dados do Microsoft Sentinel.
Importante
Há uma versão mais recente da CCP (Codeless Connector Platform). Para obter mais informações sobre o novoCCP, 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.
O CCP fornece 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 por meio de API, um modelo do ARM ou como uma solução no hub de conteúdo do Microsoft Sentinel .
Os conectores criados usando o CCP são totalmente SaaS, sem requisitos para 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 de como a página do conector de dados no Microsoft Sentinel é exibida junto com as configurações de sondagem que definem como a conexão funciona.
Importante
Esta versão do CCP (Codeless Connector Platform) está em VERSÃO PRÉVIA, mas também é considerada Herdado. 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 os seguintes passos para criar seu conector CCP e conectar-se à fonte de dados do Microsoft Sentinel:
- Configurar a interface do usuário do conector
- Definir as configurações de sondagem do conector
- Implemente seu conector na área de trabalho do Microsoft Sentinel
- Conectar o Microsoft Sentinel à fonte de dados e começar a ingerir dados
Este artigo descreve a sintaxe usada nas configurações e procedimentos JSON do CCP para implantar seu conector por meio da API, de um modelo do ARM ou de uma solução do 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á entender os tipos de autenticação, paginação e endpoints 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 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, 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 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 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 do conector de dados de exemplo, realçada com números que correspondem a áreas notáveis da interface do usuário:
- Título. O título que é exibido para o conector de dados.
- logo. O ícone exibido para o conector de dados. Personalizar isso só é possível ao implantar como parte de uma solução.
- Estado. Indica se o conector de dados está ou não conectado ao Microsoft Sentinel.
- Gráficos de dados. Exibe consultas relevantes e a quantidade de dados ingeridos nas últimas duas semanas.
- guia de 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 as Instruções, para orientar a habilitaçã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.
- Aba Próximas etapas. Inclui informações úteis para entender como encontrar dados nos logs de eventos, tais como consultas de exemplo.
Aqui estão as seções connectorUiConfig e a sintaxe necessárias para configurar a interface do usuário:
| Nome da propriedade | Tipo | Descrição |
|---|---|---|
| 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. |
| Critérios de conectividade | {"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. |
| descriçãoMarkdown | fio | Uma descrição para o conector com a capacidade de adicionar o idioma markdown para aprimorá-lo. |
| consultas de gráfico | graphQueries[] | Consultas que apresentam ingestão de dados nas últimas duas semanas no painel de 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 | fio | Define o nome da tabela do Log Analytics da qual os dados de 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 | instructionSteps[] | Uma matriz de partes de widget que explicam como instalar o conector, exibida na guia instruções. |
| metadados | metadados | Metadados exibidos na descrição do conector. |
| permissões | permissões[] | As informações exibidas na seção Pré-requisitos da interface do usuário são as que listam as permissões necessárias para habilitar ou desabilitar o conector. |
| Publicador | fio | ** Este é o texto mostrado na seção provedor. |
| consultasAmostra | sampleQueries[] | Consultas de exemplo para o cliente entender como localizar os dados no log de eventos, a serem exibidas na guia Próximas etapas. |
| título | fio | 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.
tipos de dados
| Valor do array | Tipo | Descrição |
|---|---|---|
| nome | fio | Uma descrição significativa para olastDataReceivedQuery, incluindo o suporte para uma variável. Exemplo: {{graphQueriesTableName}} |
| lastDataReceivedQuery | fio | 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
Defina uma consulta que apresente a ingestão de dados nas últimas duas semanas no painel de gráficos de dados do .
Forneça uma consulta para todos os tipos de dados do conector de dados ou uma consulta diferente para cada tipo de dados.
| Valor do array | Tipo | Descrição |
|---|---|---|
| nomeDaMétrica | fio | Um nome significativo para o gráfico. Exemplo: Total data received |
| legenda | fio | A cadeia de caracteres que aparece na legenda à direita do gráfico, incluindo uma referência de variável. Exemplo: {{graphQueriesTableName}} |
| baseQuery | fio | A consulta que filtra eventos relevantes e que inclui uma referência à 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 aparecem na página do conector de dados no Microsoft Sentinel.
Instruções
Exibe um grupo de instruções, com várias opções de parâmetros e a capacidade de aninhar mais etapas de instrução em grupos.
| Parâmetro | Propriedade de Array | Descrição |
|---|---|---|
| APIKey | APIKey | Adicione marcadores de posição ao arquivo de configuração JSON do conector. |
| RótuloCopiável | RótuloCopiável | 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ção embutida. |
| GrupoDeEtapasDeInstrução | GrupoDeEtapasDeInstrução | Exibe um grupo de instruções, opcionalmente expandido ou recolhível, 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
Talvez você queira criar um modelo de arquivo de configuração JSON, com parâmetros de espaços reservados, para reutilizar vários conectores ou até mesmo criar um conector com dados que você não tem no momento.
Para criar parâmetros de espaço reservado, defina uma matriz adicional chamada userRequestPlaceHoldersInput na seção instruções do arquivo de configuração do CCP JSON 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 |
|---|---|---|
| TextoExibido | fio | Define o valor de exibição da caixa de texto, que é exibido ao usuário ao se conectar. |
| RequestObjectKey | fio | Define o ID na seção de requisição do pollingConfig para substituir o valor do placeholder pelo valor fornecido pelo usuário. Se você não usar esse atributo, use o atributo PollingKeyPaths. |
| PollingKeyPaths | fio | Define uma matriz de objetos JsonPath que direciona a chamada à 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 atributo RequestObjectKey. |
| PlaceHolderName | fio | Define o nome do parâmetro de espaço reservado no arquivo de modelo JSON. Isso pode ser qualquer valor exclusivo, como {{placeHolder}}. |
RótuloCopiável
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 do array | Tipo | Descrição |
|---|---|---|
| fillWith | ENUM | Opcional. Matriz de variáveis de ambiente usadas para preencher um espaço reservado. Separe vários marcadores de posição com vírgulas. Por exemplo: {0},{1} Valores com suporte: workspaceId, workspaceName, primaryKey, MicrosoftAwsAccount, subscriptionId |
| rótulo | fio | Define o texto do rótulo acima de uma caixa de texto. |
| o valor | fio | 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 | Booliano | Opcional. Determina um rótulo largo para cadeias de caracteres longas. Por padrão, defina como false. |
InfoMessage
Aqui está um exemplo de uma mensagem de informação integrada:
Por outro lado, a imagem a seguir mostra uma mensagem de informações não embutida.
| Valor do array | Tipo | Descrição |
|---|---|---|
| Texto | fio | Defina o texto a ser exibido na mensagem. |
| visível | Booliano | Determina se a mensagem é exibida. |
| inline | Booliano | Determina como a mensagem de informações é exibida. - true: (Recomendado) mostra a mensagem de informações inserida nas instruções. - false: adiciona um plano de fundo azul. |
InstructionStepsGroup
Aqui está um exemplo de um grupo de instruções expansível:
| Valor do array | Tipo | Descrição |
|---|---|---|
| título | fio | Define o título da etapa de instrução. |
| podeRecolherTodasAsSeções | Booliano | Opcional. Determina se a seção é um accordion expansível ou não. |
| noFxPadding | Booliano | Opcional. Se true, reduz o padding vertical para economizar espaço. |
| expandido | Booliano | Opcional. Se true, será exibido como expandido por padrão. |
Para um exemplo detalhado, consulte o JSON de configuração do conector DNS do Windows .
Agente de Instalação
Alguns tipos InstallAgent aparecem como um botão, outros aparecerão como um link. Aqui estão exemplos de ambos:
| Valores de matriz | Tipo | Descrição |
|---|---|---|
| tipo de link | ENUM | Determina o tipo de link, como um dos seguintes valores: InstallAgentOnWindowsVirtualMachineInstallAgentOnWindowsNonAzureInstallAgentOnLinuxVirtualMachineInstallAgentOnLinuxNonAzureOpenSyslogSettingsOpenCustomLogsSettingsOpenWafOpenAzureFirewall
OpenMicrosoftAzureMonitoring
OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
| policyDefinitionGuid | fio | Necessário ao usar o OpenPolicyAssignment linkType. Para conectores baseados em política, define o GUID da definição de política incorporada. |
| 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 |
metadados
Esta seção fornece metadados na área de Descrição na interface do usuário do conector de dados.
| Valor da coleção | Tipo | Descrição |
|---|---|---|
| amável | fio | Define o tipo de modelo do ARM que você está criando. Sempre use dataConnector. |
| fonte | fio | Descreve sua fonte de dados usando a seguinte sintaxe: {string "kind":cadeia de caracteres "name":} |
| autor | fio | Descreve o autor do conector de dados usando a seguinte sintaxe: {string "name":} |
| suporte | fio | Descreva o suporte fornecido para o conector de dados usando a seguinte sintaxe: {"tier":cadeia de caracteres,"name":cadeia de caracteres,"email":cadeia de caracteres,cadeia de caracteres de URL "link":} |
permissões
| Valor da matriz | Tipo | Descrição |
|---|---|---|
| alfândega | fio | Descreve as permissões personalizadas necessárias para sua conexão de dados, na seguinte sintaxe: {"name":cadeia de caracteres,cadeia de caracteres "description":} Exemplo: O valor personalizado é exibido na seção Pré-requisitos do Microsoft Sentinel com um ícone informativo azul. No exemplo do GitHub, isso se correlaciona à linha chave de token pessoal da API do GitHub: você precisa ter 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 das licenças é exibido no Microsoft Sentinel como: Licença : Azure AD Premium P2 obrigatório |
| provedorDeRecursos | provedorDeRecursos | Descreve os pré-requisitos do seu recurso do Azure. Exemplo: o valor do resourceProvider é exibido na seção de Pré-requisitos do Microsoft Sentinel como: Workspace: a permissão de leitura e gravação é necessária. Chaves: são necessárias permissões de leitura para chaves compartilhadas do workspace. |
| locatário | 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 de locatário no Microsoft Sentinel como: Permissões do locatário: requer Global Administrator ou Security Administrator no locatário do workspace |
fornecedor de recursos
| valor de sub-array | Tipo | Descrição |
|---|---|---|
| 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 |
| nomeExibicaoFornecedor | fio | Um item de lista em pré-requisitos que exibirá um "x" vermelho ou uma marca de seleção verde quando as requiredPermissions forem validadas na página do conector. Exemplo, "Workspace" |
| textoDeExibicaoDePermissoes | fio | Exibir texto para leitura, gravação ou leitura e gravação que devem corresponder aos valores configurados em requiredPermissions |
| permissõesRequeridas | {"action":
, booleano"delete":
, booleano"read":
, booleano"write":booleano} |
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 | fio | Uma descrição detalhada para a consulta exemplo. Exemplo: Top 10 vulnerabilities detected |
| consulta | fio | Consulta de exemplo usada para buscar os dados do tipo de dado. 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 um guia:
{
"title": "Azure Resource Manager (ARM) template",
"description": "1. Click the **Deploy to Azure** button below.\n\n\t[]({URL to custom ARM template})"
}
Validar a experiência do usuário na 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
- Ir para o Microsoft Sentinel –> Conectores de Dados
- Clique no botão "importar" e selecione um arquivo json que contém apenas a seção
connectorUiConfigdo conector de dados.
Para obter mais informações sobre essa ferramenta de validação, consulte as instruções na seção Criar o conector em nosso guia de build no 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 falhará.
Definir as configurações de sondagem do 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 do CCP.
"pollingConfig": {
"auth": {
},
"request": {
},
"response": {
},
"paging": {
}
}
A seção pollingConfig inclui as seguintes propriedades:
| Nome | Tipo | Descrição |
|---|---|---|
| autenticação | fio | Descreve as propriedades de autenticação para sondar os dados. Para obter mais informações, consulte a configuração de autenticação . |
| auth.authType | fio | Obrigatório. Define o tipo de autenticação, aninhado dentro do objeto auth, como um dos seguintes valores: Basic, APIKey, OAuth2 |
| solicitação | JSON aninhado | Obrigatório. Descreve o conteúdo da solicitação para consultar os dados, como o endpoint da API. Para mais informações, confira 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 mais informações, confira configuração de resposta. |
| paging | JSON aninhado | Opcional. Descreve o conteúdo de paginação ao sondar os dados. Para obter mais informações, confira configuração de paginação. |
Para obter mais informações, consulte Exemplo de código pollingConfig.
configuração de autenticação
A seção auth da configuração pollingConfig inclui os seguintes parâmetros, dependendo do tipo definido no elemento authType.
Parâmetros básicos do authType
| Nome | Tipo | Descrição |
|---|---|---|
| Nome de usuário | fio | Obrigatório. Define o nome de usuário. |
| Senha | fio | Obrigatório. Define a senha do usuário. |
Parâmetros authType de APIKey
| Nome | Tipo | Descrição |
|---|---|---|
| APIKeyName | fio | Opcional. Define o nome da chave de API como um dos seguintes valores: - XAuthToken - Authorization |
| IsAPIKeyInPostPayload | Booliano | Determina onde a 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 | fio | Opcional. Define o nome do identificador para a chave de API. Por exemplo, em que a autorização é definida como "Authorization": "token <secret>", esse parâmetro é definido como: {APIKeyIdentifier: “token”}) |
Parâmetros do AuthType OAuth2
A Plataforma Codeless Connector dá suporte ao grant 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 | fio | Obrigatório. Define um fluxo OAuth2. Valor com suporte: AuthCode – requer um fluxo de autorização |
| AccessToken | fio | Opcional. Define um token de acesso OAuth2, relevante quando o token de acesso não expira. |
| AccessTokenPrepend | fio | Opcional. Define um prefixo para o token de acesso OAuth2. O padrão é Bearer. |
| TokenDeAtualização | fio | Obrigatório para tipos de autenticação OAuth2. Define o token de atualização OAuth2. |
| TokenEndpoint | fio | Obrigatório para tipos de autenticação OAuth2. Define o ponto de extremidade do serviço de token OAuth2. |
| Ponto de Autorização | fio | Opcional. Define o endpoint do serviço de autorização OAuth2. Usado somente durante a integração ou ao renovar um token de atualização. |
| RedirectionEndpoint | fio | Opcional. Define um ponto de extremidade de redirecionamento durante a integração. |
| AccessTokenExpirationDateTimeInUtc | fio | Opcional. Define uma data e hora de expiração 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 uma data de validade grande. |
| refreshTokenExpirationDateTimeInUtc | fio | Obrigatório para tipos de autenticação OAuth2. Define a data e hora de expiração do token de atualização no formato UTC. |
| TokenEndpointHeaders | Dicionário<string, objeto> | Opcional. Define os cabeçalhos ao chamar um ponto de extremidade do serviço de token OAuth2. Defina uma string no formato de dictionary<string, string> serializado: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
| AuthorizationEndpointHeaders | Dicionário<string, objeto> | Opcional. Define os cabeçalhos ao chamar um endpoint de serviço de autorização OAuth2. Usado somente durante a integração ou ao renovar um token de atualização. Defina uma string no formato de dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
| ParâmetrosDeConsultaDoPontoDeAutorização | Dicionário<string, objeto> | Opcional. Define parâmetros de consulta ao chamar um ponto de extremidade de serviço de autorização OAuth2. Usado somente durante a integração ou ao renovar um token de atualização. Defina uma string no formato de dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
| TokenEndpointQueryParameters | Dicionário<string, objeto> | Opcional. Defina parâmetros de consulta ao chamar o endpoint do serviço de token OAuth2. Defina uma string no formato de dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
| IsTokenEndpointPostPayloadJson | Booliano | Opcional, o padrão é false. Determina se os parâmetros de consulta estão no formato JSON e definidos no conteúdo POST da solicitação. |
| isClientSecretInHeader | Booliano | Opcional, o padrão é false. Determina se os valores client_id e client_secret são definidos no cabeçalho, como é feito no esquema de autenticação Básico, em vez de no conteúdo POST. |
| RefreshTokenLifetimeinSecAttributeName | fio | Opcional. Define-se 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 | Booliano | Opcional, o padrão é false. Determina se você está usando o JWT. |
| JwtHeaderInJson | Dicionário<string, objeto> | Opcional. Defina os cabeçalhos JWT no formato JSON. Defina uma string no formato de dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...} |
| JwtClaimsInJson | Dicionário<string, objeto> | Opcional. Define declarações JWT no formato JSON. Defina uma string no formato de dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...} |
| JwtPem | fio | 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 código '\r\n' em vigor. |
| TempoDeSolicitaçãoEmSegundos | Número Inteiro | Opcional. Determina o tempo limite em segundos ao chamar o endpoint do serviço de token. O padrão é 180 segundos |
Aqui está um exemplo de como uma configuração 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 do "authType" da sessão
| Nome | Tipo | Descrição |
|---|---|---|
| QueryParameters | Dicionário<string, objeto> | Opcional. Uma lista de parâmetros de consulta, no formato dictionary<string, string> serializado: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
| IsPostPayloadJson | Booliano | Opcional. Determina se os parâmetros de consulta estão no formato JSON. |
| cabeçalhos | Dicionário<string, 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 de dictionary<string, string> serializado: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
| TempoLimiteSessaoEmMinutos | fio | Opcional. Define um tempo limite da sessão, em minutos. |
| SessionIdName | fio | Opcional. Define um nome de ID para a sessão. |
| SessionLoginRequestUri | fio | Opcional. Define um URI de solicitação de logon de sessão. |
Configuração de solicitação
A seção request da configuração do pollingConfig inclui os seguintes parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
| apiEndpoint | fio | Obrigatório. Define o ponto de extremidade do qual obter dados. |
| httpMethod | fio | Obrigatório. Define o método de API: GET ou POST |
| queryTimeFormat | Texto, ou UnixTimestamp ou UnixTimestampInMills | Obrigatório. Define o formato usado para definir o tempo de consulta. Esse 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 | fio | Opcional. Define o nome do atributo que define a hora de início da consulta. |
| endTimeAttributeName | fio | Opcional. Define o nome do atributo que define a hora de término da consulta. |
| queryTimeIntervalAttributeName | fio | Opcional. Define o nome do atributo que define o intervalo de tempo da consulta. |
| queryTimeIntervalDelimiter | fio | 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 |
| parametrosDeConsulta | Dicionário<string, objeto> | Opcional. Define os parâmetros passados na consulta no caminho eventsJsonPaths. Defina a cadeia de caracteres no formato de dictionary<string, string> serializado: {'<attr_name>': '<val>', '<attr_name>': '<val>'... }. |
| queryParametersTemplate | fio | 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ó têm suporte nos parâmetros de solicitação queryParameters e queryParametersTemplate. {_APIKeyName} e {_APIKey} só têm suporte no parâmetro de solicitação queryParametersTemplate. |
| isPostPayloadJson | Booliano | Opcional. Determina se o conteúdo POST está no formato JSON. |
| rateLimitQPS | Duplo | Opcional. Define o número de chamadas ou consultas permitidas em um segundo. |
| tempoLimiteEmSegundos | Número Inteiro | Opcional. Define o tempo limite da solicitação, em segundos. |
| retryCount | Número Inteiro | Opcional. Define o número de tentativas de solicitação, caso necessário. |
| ** Cabeçalhos | Dicionário<string, objeto> | Opcional. Define o valor do cabeçalho da solicitação, no formato de dictionary<string, object> serializado: {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
Configuração de resposta
A seção response da configuração do 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 do pollingConfig inclui os seguintes parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
| pagingType | fio | Obrigatório. Determina o tipo de paginação a ser usado em resultados, como um dos seguintes valores: None, LinkHeader, NextPageToken, NextPageUrl, Offset |
| linkHeaderTokenJsonPath | fio | 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 | fio | Opcional. Define o caminho para um token JSON de próxima página. |
| hasNextFlagJsonPath | fio | Opcional. Define o caminho para o atributo de sinalizador HasNextPage. |
| cabeçalhoDeRespostaDeTokenDePróximaPágina | fio | Opcional. Define o nome do cabeçalho do token de próxima página na resposta. |
| nextPageParaName | fio | Opcional. Determina o nome da próxima página na solicitação. |
| nextPageRequestHeader | fio | Opcional. Determina o nome do cabeçalho na próxima página da solicitação. |
| urlProximaPagina | fio | Opcional. Determina a próxima página URL, se ela for diferente da URL de solicitação inicial. |
| nextPageUrlQueryParameters | fio | Opcional. Determina os parâmetros de consulta da URL da próxima página se eles forem diferentes da URL da solicitação inicial. Defina a cadeia de caracteres no formato de dictionary<string, object> serializado: {'<attr_name>': <val>, '<attr_name>': <val>... } |
| offsetParaName | fio | Opcional. Define o nome do parâmetro de deslocamento. |
| pageSizeParaName | fio | 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 código pollingConfig
O código a seguir mostra um exemplo da seção pollingConfig no arquivo de configuração do 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 seu arquivo de configuração JSON , incluindo tanto a interface do usuário quanto a configuração de sondagem , implante o conector no workspace no Microsoft Sentinel.
Use uma das opções a seguir para implantar o conector de dados.
Dica
A vantagem de implantar por meio de um modelo do ARM (Azure Resource Manager) é que vários valores são internos para o modelo e você não precisa defini-los manualmente em uma chamada à API.
- Implantar usando modelo ARM
- implantar via API
Embrulhe 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 o seu conector. Por exemplo, consulte 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 Implante um modelo personalizado.
Na página de implantação personalizada , selecione Criar seu próprio modelo no editor>Carregar arquivo. Navegue até o modelo ARM local e salve suas 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, 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.
Configure o conector de dados para conectar sua fonte de dados e começar a ingerir dados no Microsoft Sentinel. Você pode se conectar à fonte de dados por meio do portal, como com conectores de dados prontos para uso 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 da API, você precisará enviar os parâmetros de autenticação relevantes 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 de InstructionSteps no elemento
connectorUiConfigdo arquivo de configuração CCP JSON. Se você tiver problemas com a conexão de interface do usuário, verifique se você tem a configuração correta para o tipo de autenticação.No Microsoft Sentinel, vá para a página Logs e verifique se você consegue ver os logs da fonte de dados fluindo para seu workspace.
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 da configuração e verifique a conectividade. Para obter mais informações, confira Monitorar a integridade dos seus conectores de dados.
Desconecte seu conector
Se você não precisar mais dos dados do conector, desconecte o conector para interromper o fluxo de dados.
Use um dos seguintes métodos:
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
Caso ainda não tenha compartilhado seu novo conector de dados sem código com a comunidade do Microsoft Sentinel! Crie uma solução para o conector de dados e compartilhe-a no Microsoft Sentinel Marketplace.
Para obter mais informações, consulte