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.
Para criar um conector de dados com o CCF (Codeless Connector Framework), use este documento como um suplemento para os documentos de referência da API REST do Microsoft Sentinel para Definições do Conector de Dados . Especificamente, este documento de referência se expande na seção a seguir:
-
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 Criar um conector sem código.
Definições do conector de dados – Criar ou atualizar
Faça referência à operação Criar ou Atualizar nos documentos da API REST para localizar a versão mais recente da API estável ou de versão prévia. Somente a update operação requer o etag valor.
Método PUT
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectorDefinitions/{{dataConnectorDefinitionName}}?api-version={{apiVersion}}
Parâmetros de URI
Para obter mais informações sobre a versão mais recente da API, consulte Definições do Conector de Dados – Criar ou atualizar parâmetros de URI
| Nome | Descrição |
|---|---|
| dataConnectorDefinitionName | A definição do conector de dados deve ser um nome exclusivo e é igual ao name parâmetro no corpo da solicitação. |
| resourceGroupName | O nome do grupo de recursos, sem distinção entre maiúsculas e minúsculas. |
| subscriptionId | A ID da assinatura de destino. |
| workspaceName | O nome do workspace, não a ID. Padrão Regex: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$ |
| api-version | A versão da API a ser usada para esta operação. |
Corpo da solicitação
O corpo da solicitação para criar uma definição de conector de dados CCF com a API tem a seguinte estrutura:
{
"kind": "Customizable",
"properties": {
"connectorUIConfig": {}
}
}
dataConnectorDefinition tem as seguintes propriedades:
| Nome | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| tipo | Verdade | fio |
Customizable para conector de dados de sondagem de API ou Static de outra forma |
| Propriedades. connectorUiConfig | Verdade | JSON aninhado connectorUiConfig |
As propriedades de configuração da interface do usuário do conector de dados |
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 captura de tela 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.
Cada um dos seguintes elementos da connectorUiConfig seção necessários para configurar a interface do usuário corresponde à parte CustomizableConnectorUiConfig da API.
| Campo | Obrigatório | Tipo | Descrição | Captura de tela de área notável # |
|---|---|---|---|---|
| título | Verdade | cadeia | Título exibido na página do conector de dados | 1 |
| id | cadeia | Define a ID do conector personalizado para uso interno | ||
| logotipo | cadeia | Caminho para o arquivo de imagem no formato SVG. Se nenhum valor estiver configurado, um logotipo padrão será usado. | 2 | |
| Publicador | Verdade | cadeia | O provedor do conector | 3 |
| descriçãoMarkdown | Verdade | cadeia de caracteres em markdown | Uma descrição para o conector com a capacidade de adicionar o idioma markdown para aprimorá-lo. | 4 |
| consultasAmostra | Verdade | JSON aninhado consultasAmostra |
Consultas para o cliente entender como encontrar os dados no log de eventos. | |
| consultas de gráfico | Verdade | JSON aninhado consultas de gráfico |
Consultas que apresentam ingestão de dados nas últimas duas semanas. Forneça uma consulta para todos os tipos de dados do conector de dados ou uma consulta diferente para cada tipo de dados. |
5 |
| graphQueriesTableName | Define o nome da tabela à qual o conector insere dados. Esse nome pode ser usado em outras consultas especificando {{graphQueriesTableName}} espaços reservados graphQueries e lastDataReceivedQuery valores. |
|||
| Dados | Verdade | JSON aninhado Dados |
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. | 6 |
| Critérios de conectividade | Verdade | JSON aninhado Critérios de conectividade |
Um objeto que define como verificar se o conector está conectado. | 7 |
| disponibilidade | JSON aninhado disponibilidade |
Um objeto que define o status de disponibilidade do conector. | ||
| permissões | Verdade | JSON aninhado 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. | oito |
| instructionSteps | Verdade | JSON aninhado instruções |
Uma matriz de partes de widget que explicam como instalar o conector e controles acionáveis exibidos na guia Instruções. | 9 |
| isConnectivityCriteriasMatchSome | booleano | Um booliano que indica se deve usar 'OR'(SOME) ou 'AND' entre itens ConnectivityCriteria. |
critérios de conectividade
| Campo | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| Tipo | Verdade | fio | Uma das duas opções a seguir: HasDataConnectors – esse valor é melhor para conectores de dados de sondagem de API, como o CCF. O conector é considerado conectado com pelo menos uma conexão ativa.isConnectedQuery – esse valor é melhor para outros tipos de conectores de dados. O conector é considerado conectado quando a consulta fornecida retorna dados. |
| Valor | True quando o tipo é isConnectedQuery |
fio | Uma consulta para determinar se os dados são recebidos em um determinado período de tempo. Por exemplo: CommonSecurityLog | where DeviceVendor == \"Vectra Networks\"\n| where DeviceProduct == \"X Series\"\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(7d)" |
tipos de dados
| Valor do array | Tipo | Descrição |
|---|---|---|
| nome | fio | Uma descrição significativa para o, incluindo olastDataReceivedQuery suporte para a graphQueriesTableName 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 resultados. 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.
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}} |
availability
| Campo | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| estado | Integer | O status de disponibilidade do conector. Disponível = 1 Sinalizador de Recurso = 2 Em breve = 3 Interno = 4 |
|
| isPreview | booleano | Um booliano que indica se o conector está no modo de visualização. |
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,string "description":} Exemplo: O valor personalizado é exibido na seção Pré-requisitos do Microsoft Sentinel com um ícone informativo azul. No exemplo do GitHub, esse valor correlaciona-se à chave de token pessoal da API do GitHub de linha: 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. |
| 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 de locatário no Microsoft Sentinel como: Permissões do locatário: requer Global Administrator ou Security Administrator no locatário do workspace |
Importante
A Microsoft recomenda que você use funções com o menor número de permissões. Isto ajuda a melhorar a segurança da sua organização. O Administrador Global é uma função altamente privilegiada que deve ser limitada a cenários de emergência quando não for possível usar uma função existente.
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 exibe uma marca de seleção vermelha "x" ou verde quando os RequiredPermissions são validados 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.
{
"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})"
}
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 e tem a seguinte estrutura:
"instructionSteps": [
{
"title": "",
"description": "",
"instructions": [
{
"type": "",
"parameters": {}
}
],
"innerSteps": {}
}
]
Instruções
Exibe um grupo de instruções, com vários parâmetros e a capacidade de aninhar mais instructionSteps em grupos. Os parâmetros definidos aqui correspondem
| Tipo | Propriedade de Array | Descrição |
|---|---|---|
| OAuthForm | OAuthForm | Conectar-se ao OAuth |
| Caixa de Texto | Caixa de Texto | Isso emparelha com ConnectionToggleButton. Há quatro tipos disponíveis:passwordtextnumberemail |
| ConnectionToggleButton | ConnectionToggleButton | Dispare a implantação do DCR com base nas informações de conexão fornecidas por meio de parâmetros de espaço reservado. Os seguintes parâmetros são compatíveis:name :obrigatóriodisabledisPrimaryconnectLabeldisconnectLabel |
| 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. |
| Lista suspensa | Lista suspensa | Exibe uma lista suspensa de opções para o usuário selecionar. |
| Redução de preço | Redução de preço | Exibe uma seção de texto formatada com Markdown. |
| DataConnectorsGrid | DataConnectorsGrid | Exibe uma grade de conectores de dados. |
| ContextPane | ContextPane | Exibe um painel de informações contextuais. |
| 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. |
OAuthForm
Esse componente requer que o OAuth2 tipo esteja presente na auth propriedade do modelo do conector de dados.
"instructions": [
{
"type": "OAuthForm",
"parameters": {
"clientIdLabel": "Client ID",
"clientSecretLabel": "Client Secret",
"connectButtonLabel": "Connect",
"disconnectButtonLabel": "Disconnect"
}
}
]
Caixa de texto
Aqui estão alguns exemplos do Textbox tipo. Esses exemplos correspondem aos parâmetros usados na seção de exemplo auth na referência de conectores de dados para o Codeless Connector Framework. Para cada um dos quatro tipos, cada um tem label, placeholdere name.
"instructions": [
{
"type": "Textbox",
"parameters": {
{
"label": "User name",
"placeholder": "User name",
"type": "text",
"name": "username"
}
}
},
{
"type": "Textbox",
"parameters": {
"label": "Secret",
"placeholder": "Secret",
"type": "password",
"name": "password"
}
}
]
ConnectionToggleButton
"instructions": [
{
"type": "ConnectionToggleButton",
"parameters": {
"connectLabel": "toggle",
"name": "toggle"
}
}
]
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 | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| fillWith | ENUM | 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 | Verdade | fio | Define o texto do rótulo acima de uma caixa de texto. |
| valor | Verdade | fio | Define o valor a ser apresentado na caixa de texto, suporta espaços reservados. |
| linhas | Linhas | Define as linhas na área de interface do usuário. Por padrão, defina como 1. | |
| wideLabel | booleano | Determina um rótulo largo para cadeias de caracteres longas. Por padrão, defina como false. |
Lista suspensa
{
"parameters": {
"label": "Select an option",
"name": "dropdown",
"options": [
{
"key": "Option 1",
"text": "option1"
},
{
"key": "Option 2",
"text": "option2"
}
],
"placeholder": "Select an option",
"isMultiSelect": false,
"required": true,
"defaultAllSelected": false
},
"type": "Dropdown"
}
| Campo | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| rótulo | Verdade | fio | Define o texto do rótulo acima da lista suspensa. |
| nome | Verdade | fio | Define o nome exclusivo para a lista suspensa. Isso é usado na configuração de sondagem. |
| Opções | Verdade | Matriz | Define a lista de opções para a lista suspensa. |
| espaço reservado | fio | Define o texto do espaço reservado para a lista suspensa. | |
| isMultiSelect | booleano | Determina se várias opções podem ser selecionadas. Por padrão, defina como false. |
|
| obrigatório | booleano | Se true, a lista suspensa será necessária para ser preenchida. |
|
| defaultAllSelected | booleano | Se true, todas as opções serão selecionadas por padrão. |
Markdown
{
"parameters": {
"content": "## This is a Markdown section\n\nYou can use **bold** text, _italic_ text, and even [links](https://www.example.com)."
},
"type": "Markdown"
}
DataConnectorsGrid
{
"type": "DataConnectorsGrid",
"parameters": {
"mapping": [
{
"columnName": "Column 1",
"columnValue": "Value 1"
},
{
"columnName": "Column 2",
"columnValue": "Value 2"
}
],
"menuItems": [
"MyConnector"
]
}
}
| Campo | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| mapeamento | Verdade | Matriz | Define o mapeamento de colunas na grade. |
| menuItems | Matriz | Define os itens de menu para a grade. |
ContextPane
{
"type": "ContextPane",
"parameters": {
"isPrimary": true,
"label": "Add Account",
"title": "Add Account",
"subtitle": "Add Account",
"contextPaneType": "DataConnectorsContextPane",
"instructionSteps": [
{
"instructions": [
{
"type": "Textbox",
"parameters": {
"label": "Snowflake Account Identifier",
"placeholder": "Enter Snowflake Account Identifier",
"type": "text",
"name": "accountId",
"validations": {
"required": true
}
}
},
{
"type": "Textbox",
"parameters": {
"label": "Snowflake PAT",
"placeholder": "Enter Snowflake PAT",
"type": "password",
"name": "apikey",
"validations": {
"required": true
}
}
}
]
}
]
}
}
| Campo | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| título | Verdade | fio | O título do painel de contexto. |
| subtítulo | Verdade | fio | O subtítulo do painel de contexto. |
| contextPaneType | Verdade | fio | O tipo do painel de contexto. |
| instructionSteps | Verdade | Matriz instructionSteps |
As etapas de instrução para o painel de contexto. |
| rótulo | fio | O rótulo do painel de contexto. | |
| isPrimary | booleano | Indica se esse é o painel de contexto primário. |
InfoMessage
Aqui está um exemplo de uma mensagem de informação integrada:
Por outro lado, a imagem a seguir mostra uma mensagem de informação que não está embutida:
| Valor do array | Tipo | Descrição |
|---|---|---|
| Texto | fio | Defina o texto a ser exibido na mensagem. |
| visível | booleano | Determina se a mensagem é exibida. |
| Inline | booleano | 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 | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| título | Verdade | fio | Define o título da etapa de instrução. |
| descrição | fio | Texto descritivo opcional. | |
| podeRecolherTodasAsSeções | booleano | Determina se a seção é um accordion expansível ou não. | |
| noFxPadding | booleano | Se true, reduz o padding vertical para economizar espaço. |
|
| expandido | booleano | 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 aparecem como um link. Aqui estão exemplos de ambos:
| Valores de matriz | Obrigatório | Tipo | Descrição |
|---|---|---|---|
| tipo de link | Verdade | ENUM | Determina o tipo de link, como um dos seguintes valores: InstallAgentOnWindowsVirtualMachineInstallAgentOnWindowsNonAzureInstallAgentOnLinuxVirtualMachineInstallAgentOnLinuxNonAzureOpenSyslogSettingsOpenCustomLogsSettingsOpenWafOpenAzureFirewall
OpenMicrosoftAzureMonitoring
OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
| policyDefinitionGuid | True ao usar OpenPolicyAssignment linkType. |
fio | Para conectores baseados em política, define o GUID da definição de política incorporada. |
| assignMode | ENUM | Para conectores baseados em política, define o modo de atribuição, como um dos seguintes valores: Initiative, Policy |
|
| dataCollectionRuleType | ENUM | Para conectores baseados em DCR, define o tipo de tipo de regra de coleta de dados como SecurityEvent, ou ForwardEvent. |
Definição do conector de dados de exemplo
O exemplo a seguir reúne alguns dos componentes definidos neste artigo como um formato de corpo JSON a ser usado com a API de definição do conector de dados Create Or Update.
Para obter mais exemplos da revisão de connectorUiConfigoutros conectores de dados CCF. Até mesmo conectores que usam o CCF herdado têm exemplos válidos da criação da interface do usuário.
{
"kind": "Customizable",
"properties": {
"connectorUiConfig": {
"title": "Example CCF Data Connector",
"publisher": "My Company",
"descriptionMarkdown": "This is an example of data connector",
"graphQueriesTableName": "ExampleConnectorAlerts_CL",
"graphQueries": [
{
"metricName": "Alerts received",
"legend": "My data connector alerts",
"baseQuery": "{{graphQueriesTableName}}"
},
{
"metricName": "Events received",
"legend": "My data connector events",
"baseQuery": "ASIMFileEventLogs"
}
],
"sampleQueries": [
{
"description": "All alert logs",
"query": "{{graphQueriesTableName}} \n | take 10"
}
],
"dataTypes": [
{
"name": "{{graphQueriesTableName}}",
"lastDataReceivedQuery": "{{graphQueriesTableName}} \n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
},
{
"name": "ASIMFileEventLogs",
"lastDataReceivedQuery": "ASIMFileEventLogs \n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
}
],
"connectivityCriteria": [
{
"type": "HasDataConnectors"
}
],
"permissions": {
"resourceProvider": [
{
"provider": "Microsoft.OperationalInsights/workspaces",
"permissionsDisplayText": "Read and Write permissions are required.",
"providerDisplayName": "Workspace",
"scope": "Workspace",
"requiredPermissions": {
"write": true,
"read": true,
"delete": true
}
},
],
"customs": [
{
"name": "Example Connector API Key",
"description": "The connector API key username and password is required"
}
]
},
"instructionSteps": [
{
"title": "Connect My Connector to Microsoft Sentinel",
"description": "To enable the connector provide the required information below and click on Connect.\n>",
"instructions": [
{
"type": "Textbox",
"parameters": {
"label": "User name",
"placeholder": "User name",
"type": "text",
"name": "username"
}
},
{
"type": "Textbox",
"parameters": {
"label": "Secret",
"placeholder": "Secret",
"type": "password",
"name": "password"
}
},
{
"type": "ConnectionToggleButton",
"parameters": {
"connectLabel": "toggle",
"name": "toggle"
}
}
]
}
]
}
}
}