Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
A coleta de logs de muitos aparelhos e dispositivos agora é suportada pelo Common Event Format (CEF), via AMA, Syslog via AMA, ou Custom Logs via conector de dados AMA no Microsoft Sentinel. Para obter mais informações, veja Localizar o conector de dados do Microsoft Sentinel.
Importante
Há uma versão mais recente da Codeless Connector Platform (CCP). Para obter mais informações sobre o novo CCP, consulte Criar um conector sem código (Visualização).
Consulte este documento se precisar manter ou atualizar um conector de dados com base nessa versão mais antiga e herdada da CCP.
A CCP oferece aos parceiros, usuários avançados e desenvolvedores a capacidade de criar conectores personalizados, conectá-los e ingerir dados ao Microsoft Sentinel. Os conectores criados por meio do CCP podem ser implantados via API, um modelo ARM ou como uma solução no hub de conteúdo do Microsoft Sentinel .
Os conectores criados usando CCP são totalmente SaaS, sem quaisquer requisitos para instalações de serviço, e também incluem monitorização de integridade e suporte completo do Microsoft Sentinel.
Crie seu conector de dados definindo configurações JSON, com configurações para a aparência da página do conector de dados no Microsoft Sentinel, juntamente com configurações de sondagem que definem como a conexão funciona.
Importante
Esta versão da Codeless Connector Platform (CCP) está em versão de prévia, mas também é considerada Legacy. Os Termos Suplementares do Azure Preview incluem termos legais adicionais que se aplicam a funcionalidades do Azure que estão em versão beta, pré-visualização ou ainda não disponibilizadas para disponibilidade geral.
Use as seguintes etapas para criar seu conector CCP e conectar-se à sua fonte de dados a partir do Microsoft Sentinel:
- Configurar a interface de utilizador do conector
- Definir as configurações de sondagem do conector
- Implante o conector no espaço de trabalho do Microsoft Sentinel
- Conecte o Microsoft Sentinel à sua fonte de dados e comece a ingerir dados
Este artigo descreve a sintaxe usada nas configurações JSON CCP e procedimentos para implantar seu conector via API, um modelo ARM ou uma solução Microsoft Sentinel.
Pré-requisitos
Antes de criar um conector, recomendamos que você entenda como sua fonte de dados se comporta e exatamente como o Microsoft Sentinel precisará se conectar.
Por exemplo, será necessário saber 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 principais necessárias para implantação. Preencha essas áreas para definir como seu conector é exibido no portal do Azure e como ele conecta o Microsoft Sentinel à sua fonte de dados.
connectorUiConfig. Define os elementos visuais e o texto exibidos na página do conector de dados no Microsoft Sentinel. Para obter mais informações, consulte Configurar a interface de utilizador do conector.pollingConfig. Define como o Microsoft Sentinel coleta dados de sua fonte de dados. Para obter mais informações, consulte Definir as configurações de sondagem do conector.
Em seguida, se você implantar seu conector sem código via ARM, encapsulará essas seções no modelo ARM para conectores de dados.
Reveja outros conectores de dados CCP como exemplos ou baixe o exemplo de modelo, DataConnector_API_CCP_template.json (Pré-visualização).
Configurar a interface do usuário do conector
Esta seção descreve as opções de configuração disponíveis para personalizar a interface do usuário da página do conector de dados.
A imagem a seguir mostra uma página de conector de dados de exemplo, realçada com números que correspondem a áreas notáveis da interface do usuário:
- Título. O título 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.
- Separador de Instruções. Inclui uma seção de Pré-requisitos , com uma lista de validações mínimas antes que o utilizador possa ativar o conector, e Instruções , para orientar o utilizador na ativaçã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 utilizador:
| 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. Utilize os valores aqui indicados. |
| dataTypes | dataTypes[] | Uma lista de todos os tipos de dados para seu conector e uma consulta para buscar a hora do último evento para cada tipo de dados. |
| descriçãoMarkdown | fio | Uma descrição para o conector com a capacidade de adicionar linguagem de marcação para melhorá-lo. |
| graphQueries | graphQueries[] | Consultas que apresentam a ingestão de dados nas últimas duas semanas no painel Gráficos de dados. Forneça uma consulta para todos os tipos de dados do conector de dados ou uma consulta diferente para cada tipo de dados. |
| graphQueriesTableName | fio | Define o nome da tabela do Log Analytics da qual os dados para suas consultas são extraídos. O nome da tabela pode ser qualquer cadeia de caracteres, mas deve terminar em _CL. Por exemplo: TableName_CL |
| instruções Etapas | instructionSteps[] | Um conjunto de partes do widget que explica como instalar o conector, exibido na guia Instruções do. |
| metadados | metadados | Metadados exibidos sob a descrição do conector. |
| Permissões | permissões[] | As informações exibidas na seção Pré-requisitos da interface do usuário que lista as permissões necessárias para habilitar ou desabilitar o conector. |
| editora | fio | Este é o texto mostrado na seção Provedor. |
| exemplosDeConsultas | sampleQueries[] | Consultas de exemplo para o cliente entender como localizar os dados no log de eventos, a serem exibidos na guia Próximas etapas. |
| título | fio | Título exibido na página do conector de dados. |
Juntar todas estas peças é complicado. Use a ferramenta de validação da experiência do usuário da página do conector para testar os componentes que você montou.
Tipos de dados
| Valor do array | Tipo | Descrição |
|---|---|---|
| Nome | fio | Uma descrição significativa para olastDataReceivedQuery, incluindo suporte para uma variável. Exemplo: {{graphQueriesTableName}} |
| lastDataReceivedQuery | fio | Uma consulta KQL que retorna uma linha e indica a última vez que os dados foram recebidos, ou nenhum dado se não houver dados relevantes. Exemplo: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
Define uma consulta que apresenta a ingestão de dados nas últimas duas semanas no painel 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.
| Valor do Array | Tipo | Descrição |
|---|---|---|
| nomeDaMétrica | fio | Um nome significativo para o seu 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, incluindo uma referência variável. Exemplo: TableName_CL | where ProviderName == "myprovider" ou {{graphQueriesTableName}} |
instruçãoPassos
Esta seção fornece parâmetros que definem o conjunto de instruções que aparecem na página do conector de dados no Microsoft Sentinel.
| Propriedade Array | Tipo | Descrição |
|---|---|---|
| título | fio | Opcional. Define um título para as suas instruções. |
| descrição | fio | Opcional. Define uma descrição significativa para as suas instruções. |
| innerSteps | Matriz | Opcional. Define uma matriz de etapas de instrução internas. |
| Instruções | Matriz de instruções | Obrigatório. Define uma matriz de instruções de um tipo de parâmetro específico. |
| bordaInferior | Booleano | Opcional. Quando o true é utilizado, adiciona uma borda inferior à área de instruções na página do conector no Microsoft Sentinel. |
| Em Breve | Booleano | Opcional. Quando true, adiciona um título Em breve na página do conector no Microsoft Sentinel |
Instruções
Exibe um grupo de instruções, com várias opções como parâmetros e a capacidade de aninhar mais instructionSteps em grupos.
| Parâmetro | Propriedade Array | Descrição |
|---|---|---|
| APIKey | APIKey | Adicione marcadores de posição ao ficheiro de configuração JSON do seu conector. |
| EtiquetaCopiável | EtiquetaCopiá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. |
| MensagemInformativa | MensagemInformativa | Define uma mensagem informativa em linha. |
| GrupoDePassosDeInstrução | GrupoDePassosDeInstrução | Exibe um grupo de instruções, opcionalmente expandidas ou dobráveis, em uma seção de instruções separada. |
| InstallAgent | InstallAgent | Exibe um link para outras partes do Azure para cumprir vários requisitos de instalação. |
APIKey
Você pode querer criar um modelo de arquivo de configuração JSON, com parâmetros de espaços reservados, para reutilizar em vários conectores ou até mesmo para criar um conector com dados que você não tem no momento.
Para criar parâmetros de espaço reservado, defina uma matriz adicional denominada userRequestPlaceHoldersInput na seção Instruções no arquivo de configuração JSON do CCP, usando a seguinte sintaxe:
"instructions": [
{
"parameters": {
"enable": "true",
"userRequestPlaceHoldersInput": [
{
"displayText": "Organization Name",
"requestObjectKey": "apiEndpoint",
"placeHolderName": "{{placeHolder}}"
}
]
},
"type": "APIKey"
}
]
O parâmetro userRequestPlaceHoldersInput inclui os seguintes atributos:
| Nome | Tipo | Descrição |
|---|---|---|
| Texto a Exibir | fio | Define o valor de exibição da caixa de texto, que é exibido para o usuário durante a conexão. |
| ChaveDoObjetoDePedido | fio | Define o 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 em vez disso. |
| PollingKeyPaths | fio | Defina uma matriz de objetos JsonPath que direciona a chamada de API para qualquer lugar no modelo, para substituir um valor de marcador de posição por um valor de utilizador. Exemplo: "pollingKeyPaths":["$.request.queryParameters.test1"] Se você não usar esse atributo, use o atributo RequestObjectKey em vez disso. |
| PlaceHolderName | fio | Define-se o nome do parâmetro placeholder no arquivo de modelo JSON. 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 |
|---|---|---|
| preenchimento com | 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 suportados: workspaceId, workspaceName, primaryKey, MicrosoftAwsAccount, subscriptionId |
| rótulo | fio | Define o texto para o rótulo acima de uma caixa de texto. |
| 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 | Booleano | Opcional. Determina um rótulo largo para cadeias de caracteres longas. Por padrão, defina como false. |
Mensagem de Informação
Eis um exemplo de uma mensagem informativa embutida:
Por outro lado, a imagem a seguir mostra uma mensagem informativa não-embutida:
| Valor da matriz | Tipo | Descrição |
|---|---|---|
| texto | fio | Defina o texto a ser exibido na mensagem. |
| visível | Booleano | Determina se a mensagem é exibida. |
| em linha | Booleano | Determina como a mensagem informativa é exibida. - true: (Recomendado) Mostra a mensagem informativa incorporada nas instruções. - false: Adiciona um fundo azul. |
Grupo de Passos de Instrução
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. |
| canCollapseAllSections | Booleano | Opcional. Determina se a seção é um acordeão dobrável ou não. |
| noFxPadding | Booleano | Opcional. Se true, reduz o espaçamento de altura para economizar espaço. |
| expandido | Booleano | Opcional. Se true, mostra como expandido por predefinição. |
Para obter um exemplo detalhado, consulte a configuração JSON para o conector Windows DNS.
InstallAgent
Alguns tipos de do 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: InstallAgentOnWindowsVirtualMachineInstallAgentOnWindowsNonAzureInstallAgentOnLinuxVirtualMachineInstallAgentOnLinuxNonAzureOpenSyslogSettingsOpenCustomLogsSettingsOpenWafOpenAzureFirewall
OpenMicrosoftAzureMonitoring
OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
| policyDefinitionGuid | fio | Necessário quando se utiliza o OpenPolicyAssignment linkType. Para conectores baseados em política, define o GUID da definição de política incorporada. |
| modo de atribuição | ENUM | Opcional. Para conectores baseados em políticas, define o modo de atribuição como um dos seguintes valores: Initiative, Policy |
| TipoDeRegraDeColeçãoDeDados | 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 UI do conector de dados na área Descrição.
| Valor da Coleção | Tipo | Descrição |
|---|---|---|
| tipo | fio | Define o tipo de modelo ARM que você está criando. Utilize sempre dataConnector. |
| fonte | fio | Descreve sua fonte de dados, usando a seguinte sintaxe: {"kind":string"name":string} |
| autor | fio | Descreve o autor do conector de dados, usando a seguinte sintaxe: {"name":string} |
| Suporte | fio | Descreva o suporte fornecido para o conector de dados usando a seguinte sintaxe: {"tier":cadeia de caracteres,"name":string,"email":string,"link":sequência de URL} |
Permissões
| Valor da matriz | Tipo | Descrição |
|---|---|---|
| aduaneira | fio | Descreve as permissões personalizadas necessárias para sua conexão de dados, na seguinte sintaxe: {"name":string,"description":string} Exemplo: O valor aduaneiro é exibido na seção de Pré-requisitos do Microsoft Sentinel com um ícone informativo azul. No exemplo do GitHub, isso se correlaciona com a linha Chave da API pessoal do GitHub: Precisas 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: As licenças valor são exibidas no Microsoft Sentinel como: Licença: Necessária Azure AD Premium P2 |
| fornecedorDeRecursos | fornecedorDeRecursos | Descreve todos os pré-requisitos para seu recurso do Azure. Exemplo: O valor resourceProvider é exibido na seção Pré-requisitos do Microsoft Sentinel como: Espaço de trabalho: é necessária permissão de leitura e gravação. Chaves: são necessárias permissões de leitura para chaves partilhadas no espaço de trabalho. |
| inquilino | matriz de valores ENUM Exemplo: "tenant": ["GlobalADmin","SecurityAdmin"] |
Define as permissões necessárias, como um ou mais dos seguintes valores: "GlobalAdmin", "SecurityAdmin", "SecurityReader", "InformationProtection" Exemplo: exibe o valor do locatário no Microsoft Sentinel como: Permissões de locatário: requer Global Administrator ou Security Administrator no locatário do espaço de trabalho |
provedor de recursos
| valor da submatriz | 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 | fio | Um item de lista sob Pré-requisitos que exibirá um "x" vermelho ou uma marca de verificação verde quando as requiredPermissions forem validadas na página do conector. Exemplo, "Workspace" |
| textoDeExibiçãoDePermissões | fio | Exibir texto para permissões de leitura , gravação , ou leitura e gravação que devem corresponder aos valores configurados em requiredPermissions |
| Permissões obrigatórias | {"action":Boolean,"delete":Boolean,"read":Boolean,"write":Booleano} |
Descreve as permissões mínimas necessárias para o conector. |
| âmbito | ENUM | Descreve o escopo do conector de dados, como um dos seguintes valores: "Subscription", "ResourceGroup", "Workspace" |
exemploConsultas
| Valor do array | Tipo | Descrição |
|---|---|---|
| descrição | fio | Uma descrição detalhada e significativa para a consulta exemplificativa. 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ções:
{
"title": "",
"description": "Make sure to configure the machine's security according to your organization's security policy\n\n\n[Learn more >](https://aka.ms/SecureCEF)"
}
Para definir um link como um modelo ARM, use o seguinte exemplo como guia:
{
"title": "Azure Resource Manager (ARM) template",
"description": "1. Click the **Deploy to Azure** button below.\n\n\t[]({URL to custom ARM template})"
}
Validar a experiência do usuário na página do conector de dados
Siga estes passos para apresentar e validar a experiência do utilizador do conector.
- O utilitário de teste pode ser acessado por este URL - https://aka.ms/sentineldataconnectorvalidateurl
- Ir para Microsoft Sentinel -> Data Connectors
- Clique no botão "importar" e selecione um arquivo json que contenha apenas a seção
connectorUiConfigdo seu conector de dados.
Para obter mais informações sobre essa ferramenta de validação, consulte as instruções Build the connector em nosso guia de construção 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, caso contrário ela falhará.
Definir as configurações de sondagem do conector
Esta seção descreve a configuração de como os dados são pesquisados de sua fonte de dados para um conector de dados sem código.
O código a seguir mostra a sintaxe da secção pollingConfig do ficheiro 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 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 |
| pedido | JSON aninhado | Obrigatório. Descreve a carga útil da solicitação para interrogar os dados, como, por exemplo, o ponto de extremidade da API. Para obter mais informações, consulte Configuração de solicitação. |
| resposta | JSON aninhado | Obrigatório. Descreve o objeto de resposta e a mensagem aninhada retornada da API ao sondar os dados. Para obter mais informações, consulte Configuração de resposta. |
| paginação | JSON aninhado | Opcional. Descreve a carga útil de paginação ao consultar os dados. Para obter mais informações, consulte Configuração de paginação. |
Para mais informações, consulte o 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 que está definido no elemento authType:
Parâmetros de autenticação básica (authType)
| Nome | Tipo | Descrição |
|---|---|---|
| Nome de utilizador | fio | Obrigatório. Define o nome do usuário. |
| Palavra-passe | fio | Obrigatório. Define a senha do usuário. |
APIKey authType parâmetros
| Nome | Tipo | Descrição |
|---|---|---|
| APIKeyName | fio | Opcional. Define o nome da sua chave de API, como um dos seguintes valores: - XAuthToken - Authorization |
| IsAPIKeyInPostPayload | Booleano | Determina onde sua chave de API é definida. True: A chave da API é definida na carga útil da solicitação POST False: a chave da API é definida no cabeçalho |
| APIKeyIdentifier | fio | Opcional. Define o nome do identificador para a chave da API. Por exemplo, quando a autorização é definida como "Authorization": "token <secret>", este parâmetro é definido como: {APIKeyIdentifier: “token”}) |
Parâmetros de tipo de autenticação OAuth2
A Codeless Connector Platform suporta concessão de código de autorização OAuth 2.0.
O tipo de concessão de Código de Autorização é usado por clientes confidenciais e públicos para trocar um código de autorização por um token de acesso.
Depois que o usuário retornar ao cliente por meio da URL de redirecionamento, o aplicativo obterá o código de autorização da URL e o usará para solicitar um token de acesso.
| Nome | Tipo | Descrição |
|---|---|---|
| FlowName | fio | Obrigatório. Define um fluxo OAuth2. Valor suportado: 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 de token de acesso OAuth2. A predefinição é Bearer. |
| Token de Atualização | fio | Obrigatório para os tipos de autenticação OAuth2. Define o token de atualização OAuth2. |
| TokenEndpoint | fio | Obrigatório para os tipos de autenticação OAuth2. Define o ponto de extremidade do serviço de token OAuth2. |
| AuthorizationEndpoint | fio | Opcional. Define o ponto de extremidade do serviço de autorização OAuth2. Usado apenas durante a integração ou ao renovar um token de atualização. |
| RedirectionEndpoint | fio | Opcional. Define um ponto de extremidade de redirecionamento durante a integração inicial. |
| AccessTokenExpirationDateTimeInUtc | fio | Opcional. Define uma data/hora de expiração do token de acesso, no formato UTC. Relevante para quando o token de acesso não expira e, portanto, tem uma data/hora grande no UTC, ou quando o token de acesso tem uma data/hora de expiração grande. |
| RefreshTokenExpirationDateTimeInUtc | fio | Obrigatório para os tipos de autenticação OAuth2. Define a data/hora de expiração do token de atualização no formato UTC. |
| TokenEndpointHeaders | Dicionário<cadeia de caracteres, objeto> | Opcional. Define os cabeçalhos ao chamar um endpoint de serviço de token OAuth2. Defina 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 OAuth2. Usado apenas durante a integração ou ao renovar um token de atualização. Defina uma cadeia de caracteres no formato dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
| ParâmetrosDeConsultaDoPontoDeAutorização | Dicionário<cadeia de caracteres, objeto> | Opcional. Define parâmetros de consulta ao chamar um ponto de extremidade de serviço de autorização OAuth2. Usado apenas durante a integração ou ao renovar um token de atualização. Defina uma cadeia de caracteres no formato dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
| TokenEndpointQueryParameters | Dicionário<cadeia de caracteres, objeto> | Opcional. Defina os parâmetros de consulta ao chamar o endpoint do serviço de token OAuth2. Defina uma cadeia de caracteres no formato dictionary<string, object> serializado: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
| IsTokenEndpointPostPayloadJson | Booleano | Opcional, o padrão é false. Determina se os parâmetros de consulta estão no formato JSON e definidos na carga útil POST da solicitação. |
| IsClientSecretInHeader | Booleano | 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ásica, em vez de na carga útil POST. |
| RefreshTokenLifetimeinSecAttributeName | fio | Opcional. Define o nome do atributo a partir da resposta do ponto de extremidade do token, especificando o tempo de vida do token de atualização, em segundos. |
| IsJwtBearerFlow | Booleano | Opcional, o padrão é false. Determina se você está usando JWT. |
| JwtHeaderInJson | Dicionário<cadeia de caracteres, objeto> | Opcional. Defina os cabeçalhos JWT no formato JSON. Defina 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 declarações JWT no formato JSON. Defina uma cadeia de caracteres no formato 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' no seu lugar original. |
| TempoLimiteDeRequisiçãoEmSegundos | Número inteiro | Opcional. Define 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 parecer:
"pollingConfig": {
"auth": {
"authType": "OAuth2",
"authorizationEndpoint": "https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent",
"redirectionEndpoint": "https://portal.azure.com/TokenAuthorize",
"tokenEndpoint": "https://oauth2.googleapis.com/token",
"authorizationEndpointQueryParameters": {},
"tokenEndpointHeaders": {
"Accept": "application/json"
},
"TokenEndpointQueryParameters": {},
"isClientSecretInHeader": false,
"scope": "https://www.googleapis.com/auth/admin.reports.audit.readonly",
"grantType": "authorization_code",
"contentType": "application/x-www-form-urlencoded",
"FlowName": "AuthCode"
},
Parâmetros do tipo de autenticação da sessão
| Nome | Tipo | Descrição |
|---|---|---|
| QueryParameters | Dicionário<cadeia de caracteres, objeto> | Opcional. Uma lista de parâmetros de consulta, no formato dictionary<string, string> serializado: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
| IsPostPayloadJson | Booleano | 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. Defina a cadeia de caracteres no formato dictionary<string, string> serializado: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
| SessionTimeoutInMinutes | fio | Opcional. Define um tempo limite de 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 login de sessão. |
Solicitar configuração
A seção request da configuração pollingConfig inclui os seguintes parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
| apiEndpoint | fio | Obrigatório. Define o ponto de extremidade do qual extrair dados. |
| httpMethod | fio | Obrigatório. Define o método API: GET ou POST |
| queryTimeFormat | String, ou UnixTimestamp ou UnixTimestampInMills | Obrigatório. Define o formato usado para definir o tempo de consulta. Este valor pode ser uma string, ou estar no formato UnixTimestamp ou no formato 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. |
| janelaDeConsultaEmMinutos | Número inteiro | Opcional. Define a janela de consulta disponível, em minutos. Valor mínimo: 5 |
| parâmetrosDeConsulta | Dicionário<cadeia de caracteres, objeto> | Opcional. Define os parâmetros passados na consulta no caminho eventsJsonPaths. Defina a cadeia de caracteres no formato 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ó são suportados nos parâmetros de solicitação queryParameters e queryParametersTemplate. {_APIKeyName} e {_APIKey} só são suportados no parâmetro queryParametersTemplate request. |
| isPostPayloadJson | Booleano | Opcional. Determina se a carga POST está no formato JSON. |
| rateLimitQPS | Duplo | Opcional. Define o número de chamadas ou consultas permitidas em um segundo. |
| tempoLimiteEmSegundos | Número inteiro | Opcional. Define o tempo limite da solicitação, em segundos. |
| retryCount | Número inteiro | Opcional. Define o número de novas tentativas de solicitação a serem tentadas, se necessário. |
| cabeçalhos | 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 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 pollingConfig inclui os seguintes parâmetros:
| Nome | Tipo | Descrição |
|---|---|---|
| tipoDePaginação | fio | Obrigatório. Determina o tipo de paginação a ser usado nos 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 ficheiro JSON com o token da próxima página. |
| temNextFlagJsonPath | fio | Opcional. Define o caminho para o atributo HasNextPage flag. |
| cabeçalhoDeRespostaTokenPáginaSeguinte | fio | Opcional. Define o nome do cabeçalho do token próxima página na resposta. |
| nextPageParaName | fio | Opcional. Determina o nome da próxima página na solicitação. |
| nextPageRequestHeader | fio | Opcional. Determina a próxima página nome do cabeçalho na solicitação. |
| nextPageUrl | fio | Opcional. Determina a próxima página URL, se for diferente da URL de solicitação inicial. |
| parâmetrosDaConsultaDaUrlDaPróximaPágina | fio | Opcional. Determina os parâmetros de consulta da URL da próxima página se esta for diferente da URL da solicitação inicial. Defina a cadeia de caracteres no formato dictionary<string, object> serializado: {'<attr_name>': <val>, '<attr_name>': <val>... } |
| offsetParaName | fio | Opcional. Define o nome do parâmetro offset. |
| 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 do 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": [
"$"
]
}
}
Implante seu conector no Microsoft Sentinel e comece a ingerir dados
Depois de criar o arquivo de configuração JSON , incluindo tanto a configuração da interface do usuário quanto a configuração de sondagem , implante o conector no espaço de trabalho do Microsoft Sentinel.
Use uma das seguintes opções para implantar seu conector de dados.
Tip
A vantagem de implantar por meio de um modelo do Azure Resource Manager (ARM) é que vários valores são incorporados ao modelo e você não precisa defini-los manualmente em uma chamada de API.
Envolva suas coleções de configuração JSON em um modelo ARM para implantar seu conector. Para garantir que seu conector de dados seja implantado no espaço de trabalho correto, certifique-se de definir o espaço de trabalho no modelo ARM ou selecionar o espaço de trabalho ao implantar o modelo ARM.
Prepare um de arquivo JSON de modelo ARM para seu conector. Por exemplo, consulte os seguintes arquivos JSON de modelo ARM:
No portal do Azure, procure Implementar um modelo personalizado.
Na página de implantação personalizada, selecione Criar seu próprio modelo no editor>Carregar arquivo. Procure e selecione seu modelo ARM local e salve as alterações.
Selecione sua assinatura e grupo de recursos e insira o espaço de trabalho do Log Analytics onde você deseja implantar seu conector personalizado.
Selecione Revisar + criar para implementar o seu conector personalizado no Microsoft Sentinel.
No Microsoft Sentinel, vá para a página Conectores de dados, procure o 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 a fonte de dados e começar a ingerir dados no Microsoft Sentinel. Você pode se conectar à sua fonte de dados através do portal, como com conectores de dados prontos para uso, ou via API.
Quando você usa o portal do Azure para se conectar, os dados do usuário são enviados automaticamente. Ao se conectar via API, você precisará enviar os parâmetros de autenticação relevantes na chamada de API.
Na página do conector de dados do Microsoft Sentinel, siga as instruções fornecidas para se conectar ao conector de dados.
A página do conector de dados no Microsoft Sentinel é controlada pela configuração InstructionSteps no elemento
connectorUiConfigdo arquivo de configuração JSON do CCP. Se você tiver problemas com a conexão da interface do usuário, verifique se você tem a configuração correta para o tipo de autenticação.No Microsoft Sentinel, vá para a página de Logs e verifique se vê os logs da fonte de dados a fluírem para o seu espaço de trabalho.
Se você não vir dados fluindo para o Microsoft Sentinel, verifique a documentação da fonte de dados e os recursos de solução de problemas, verifique os detalhes de configuração e verifique a conectividade. Para obter mais informações, consulte Monitorar a integridade dos conectores de dados.
Desconecte o conector
Se você não precisar mais dos dados do conector, desconecte o conector para interromper o fluxo de dados.
Use um dos seguintes métodos:
Portal do Azure: Na página do conector de dados do Microsoft Sentinel, selecione Desconectar.
API: Use a DISCONNECT API para fazer uma chamada PUT com um corpo vazio para a seguinte URL:
https://management.azure.com /subscriptions/{{SUB}}/resourceGroups/{{RG}}/providers/Microsoft.OperationalInsights/workspaces/{{WS-NAME}}/providers/Microsoft.SecurityInsights/dataConnectors/{{Connector_Id}}/disconnect?api-version=2021-03-01-preview
Próximos passos
Se ainda não o fez, partilhe o seu novo conector de dados sem código com a comunidade Microsoft Sentinel! Crie uma solução para o seu conector de dados e partilhe-a no Microsoft Sentinel Marketplace.
Para obter mais informações, consulte