Condividi tramite


[Deprecato] Creare un connettore senza codice legacy per Microsoft Sentinel

Importante

La raccolta di log da molti dispositivi e appliance è ora supportata da Common Event Format (CEF) tramite AMA, syslog tramite AMA o log personalizzati tramite il connettore dati AMA in Microsoft Sentinel. Per altre informazioni, vedere Trovare il connettore dati di Microsoft Sentinel.

Importante

È disponibile una versione più recente di Codeless Connector Platform (CCP). Per altre informazioni sul nuovo CCP, vedere Creare un connettore senza codice (Anteprima).

Fare riferimento a questo documento se è necessario mantenere o aggiornare un connettore dati basato su questa versione precedente e legacy del CCP.

Il CCP offre ai partner, agli utenti avanzati e agli sviluppatori la possibilità di creare connettori personalizzati, connetterli e inserire dati a Microsoft Sentinel. È possibile distribuire i connettori creati tramite CCP con API, un modello di ARM o come soluzione nell'hub dei contenuti di Microsoft Sentinel.

I connettori creati con CCP sono completamente SaaS, senza requisiti per le installazioni di servizi e includono anche il monitoraggio dell'integrità e il supporto completo di Microsoft Sentinel.

Creare il connettore dati definendo le configurazioni JSON, con le impostazioni per l'aspetto della pagina del connettore dati in Microsoft Sentinel insieme alle impostazioni di polling che definiscono le funzioni di connessione.

Importante

Questa versione di Codeless Connector Platform (CCP) è in ANTEPRIMA, ma è considerata anche Legacy. Le condizioni aggiuntive per l'anteprima di Azure includono termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, anteprima o diversamente non ancora disponibili a livello generale.

Usare la procedura seguente per creare il connettore CCP e connettere l'origine dati a Microsoft Sentinel:

  • Configurare l'interfaccia utente del connettore
  • Configurare le impostazioni di polling del connettore
  • Distribuire il connettore nell'area di lavoro di Microsoft Sentinel
  • Connettere Microsoft Sentinel all'origine dati e iniziare l'inserimento di dati

Questo articolo descrive la sintassi usata nelle configurazioni e nelle procedure JSON CCP per la distribuzione del connettore tramite API, un modello di ARM o una soluzione Microsoft Sentinel.

Prerequisiti

Prima di creare un connettore, è consigliabile comprendere il comportamento dell'origine dati e esattamente il modo in cui Microsoft Sentinel dovrà connettersi.

Ad esempio, è necessario conoscere i tipi di autenticazione, impaginazione e endpoint API necessari per le connessioni riuscite.

Creare un file di configurazione JSON del connettore

Il connettore CCP personalizzato include due sezioni JSON principali necessarie per la distribuzione. Compilare queste aree per definire il modo in cui il connettore viene visualizzato nel portale di Azure e come connette Microsoft Sentinel all'origine dati.

Quindi, se si distribuisce il connettore senza codice tramite ARM, si eseguirà il wrapping di queste sezioni nel modello di ARM per i connettori dati.

Esaminare altri connettori dati CCP come esempi o scaricare il modello di esempio DataConnector_API_CCP_template.json (Anteprima).

Configurare l'interfaccia utente del connettore

Questa sezione descrive le opzioni di configurazione disponibili per personalizzare l'interfaccia utente della pagina del connettore dati.

L'immagine seguente mostra una pagina del connettore dati di esempio, evidenziata con numeri che corrispondono alle aree rilevanti dell'interfaccia utente:

Screenshot di una pagina del connettore dati di esempio.

  1. Titolo. Titolo visualizzato per il connettore dati.
  2. Logo. Icona visualizzata per il connettore dati. La personalizzazione di questa opzione è possibile solo quando si esegue la distribuzione come parte di una soluzione.
  3. Stato. Indica se il connettore dati è connesso o meno a Microsoft Sentinel.
  4. Grafici dati. Visualizza le query pertinenti e la quantità di dati inseriti nelle ultime due settimane.
  5. Scheda Istruzioni. Include una sezione Prerequisiti, con un elenco di convalide minime prima che l'utente possa abilitare il connettore e Istruzioni, per guidare l'abilitazione dell'utente del connettore. Questa sezione può includere testo, pulsanti, moduli, tabelle e altri widget comuni per semplificare il processo.
  6. Scheda Passaggi successivi. Include informazioni utili per comprendere come trovare i dati nei log eventi, ad esempio le query di esempio.

Ecco le sezioni connectorUiConfig e la sintassi necessarie per configurare l'interfaccia utente:

Nome proprietà Type Descrizione
availability {
"status": 1,
"isPreview": Booleano
}

stato: 1 indica che il connettore è disponibile a livello generale per i clienti.
isPreview Indica se includere (Anteprima) il suffisso al nome del connettore.
connectivityCriteria {
"type": SentinelKindsV2,
"value": APIPolling
}
Oggetto che definisce come verificare se il connettore è definito correttamente. Usare i valori indicati qui.
dataTypes dataTypes[] Elenco di tutti i tipi di dati per il connettore e una query per recuperare l'ora dell'ultimo evento per ogni tipo di dati.
descriptionMarkdown String Descrizione per il connettore con la possibilità di aggiungere il linguaggio markdown per migliorarlo.
graphQueries graphQueries[] Query che presentano l'inserimento dati nelle ultime due settimane nel riquadro Grafici dati.

Specificare una query per tutti i tipi di dati del connettore dati o una query differente per ogni tipo di dati.
graphQueriesTableName String Definisce il nome della tabella di Log Analytics da cui vengono estratti i dati per le query.

Il nome della tabella può essere qualsiasi stringa, ma deve terminare in _CL. Ad esempio: TableName_CL
instructionsSteps instructionSteps[] Array di parti del widget che spiegano come installare il connettore, visualizzata nella scheda Istruzioni.
metadata metadata Metadati visualizzati sotto la descrizione del connettore.
autorizzazioni autorizzazioni[] Le informazioni visualizzate nella sezione Prerequisiti dell'interfaccia utente in cui sono elencate le autorizzazioni necessarie per abilitare o disabilitare il connettore.
publisher String Questo è il testo illustrato nella sezione Provider.
sampleQueries sampleQueries[] Query di esempio per il cliente per comprendere come trovare i dati nel registro eventi da visualizzare nella scheda Passaggi successivi.
title String Titolo visualizzato nella pagina del connettore dati.

Mettere insieme tutti questi pezzi è complicato. Usare lo strumento di convalida dell'esperienza utente della pagina del connettore per testare i componenti inseriti.

dataTypes

Valore array Tipo Descrizione
name string Descrizione significativa per lastDataReceivedQuery, incluso il supporto per una variabile.

Esempio: {{graphQueriesTableName}}
lastDataReceivedQuery String Una query KQL che restituisce una riga e indica l'ultima volta che sono stati ricevuti i dati o nessun dato se non sono presenti dati pertinenti.

Esempio: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)

graphQueries

Definisce una query che presenta l'inserimento dati nelle ultime due settimane nel riquadro Grafici dati.

Specificare una query per tutti i tipi di dati del connettore dati o una query differente per ogni tipo di dati.

Valore array Tipo Descrizione
metricName String Nome significativo per il grafico.

Esempio: Total data received
legenda String Stringa visualizzata nella legenda a destra del grafico, incluso un riferimento a una variabile.

Esempio: {{graphQueriesTableName}}
baseQuery String Query che filtra gli eventi pertinenti, incluso un riferimento a una variabile.

Ad esempio: TableName_CL | where ProviderName == "myprovider" o {{graphQueriesTableName}}

instructionSteps

Questa sezione fornisce parametri che definiscono il set di istruzioni visualizzate nella pagina del connettore dati in Microsoft Sentinel.

Array, proprietà Tipo Descrizione
title String Facoltativo. Definisce un titolo per le istruzioni.
description Stringa Facoltativo. Definisce una descrizione significativa per le istruzioni.
innerSteps Matrice Facoltativo. Definisce un array di passaggi interni dell'istruzione.
istruzioni Array di istruzioni Obbligatorio. Definisce un array di istruzioni di un tipo di parametro specifico.
bottomBorder Booleano Facoltativo. Quando true, aggiunge un bordo inferiore all'area delle istruzioni nella pagina del connettore in Microsoft Sentinel
isComingSoon Booleano Facoltativo. Quando true, aggiunge un titolo Presto disponibile nella pagina del connettore in Microsoft Sentinel

istruzioni

Visualizza un gruppo di istruzioni, con varie opzioni come parametri e la possibilità di annidare più instructionSteps in gruppi.

Parametro Proprietà Array Descrizione
APIKey APIKey Aggiungere segnaposto al file di configurazione JSON del connettore.
CopyableLabel CopyableLabel Mostra un campo di testo con un pulsante di copia alla fine. Quando il pulsante è selezionato, il valore del campo viene copiato.
InfoMessage InfoMessage Definisce un messaggio informativo inline.
InstructionStepsGroup InstructionStepsGroup Visualizza un gruppo di istruzioni, facoltativamente espanso o comprimibile, in una sezione separata delle istruzioni.
InstallAgent InstallAgent Visualizza un link ad altre parti di Azure per soddisfare vari requisiti di installazione.

APIKey

È possibile creare un modello di file di configurazione JSON, con parametri segnaposto, riutilizzarli in più connettori o anche creare un connettore con dati attualmente non disponibili.

Per creare parametri segnaposto, definire un array aggiuntivo denominato userRequestPlaceHoldersInput nella sezione Istruzioni del file di configurazione JSON CCP usando la sintassi seguente:

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

Il parametro userRequestPlaceHoldersInput include gli attributi seguenti:

Nome Tipo Descrizione
DisplayText String Definisce il valore di visualizzazione della casella di testo visualizzato all'utente durante la connessione.
RequestObjectKey String Definisce l'ID nella sezione della richiesta di pollingConfig per sostituire il valore segnaposto con il valore specificato dall'utente.

Se non si usa questo attributo, usare invece l'attributo PollingKeyPaths.
PollingKeyPaths String Definisce un array di oggetti JsonPath che indirizza la chiamata API a qualsiasi punto del modello, per sostituire un valore segnaposto con un valore utente.

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

Se non si usa questo attributo, usare invece l'attributo RequestObjectKey.
PlaceHolderName String Definisce il nome del parametro segnaposto nel file modello JSON. Può trattarsi di qualsiasi valore univoco, ad esempio {{placeHolder}}.

CopyableLabel

Esempio:

Screenshot di un pulsante copia valore in un campo.

Codice di esempio:

{
    "parameters": {
        "fillWith": [
            "WorkspaceId",
            "PrimaryKey"
            ],
        "label": "Here are some values you'll need to proceed.",
        "value": "Workspace is {0} and PrimaryKey is {1}"
    },
    "type": "CopyableLabel"
}
Valore array Tipo Descrizione
fillWith ENUM Facoltativo. Matrice di variabili di ambiente usate per popolare un segnaposto. Separare più segnaposto con virgole. Ad esempio: {0},{1}

Valori supportati: workspaceId, workspaceName, primaryKey, MicrosoftAwsAccount, subscriptionId
label String Definisce il testo per l'etichetta sopra una casella di testo.
value String Definisce il valore da presentare nella casella di testo, supporta i segnaposto.
rows Righe Facoltativo. Definisce le righe nell'area dell'interfaccia utente. Per impostazione predefinita, impostare su 1.
wideLabel Booleano Facoltativo. Determina un'etichetta wide per stringhe lunghe. Per impostazione predefinita, impostare su false.

InfoMessage

Ecco un esempio di messaggio informativo inline:

Screenshot di un messaggio informativo inline.

Al contrario, l'immagine seguente mostra un messaggio informativo non-inline:

Screenshot di un messaggio informativo non inline.

Valore array Tipo Descrizione
Testo String Definire il testo da visualizzare nella finestra di messaggio.
visibile Booleano Determina se il messaggio viene visualizzato.
inline Booleano Determina la modalità di visualizzazione del messaggio informativo.

- true: (Scelta consigliata) Mostra il messaggio informativo incorporato nelle istruzioni.
- false: aggiunge uno sfondo blu.

InstructionStepsGroup

Di seguito è riportato un esempio di gruppo di istruzioni espandibile:

Screenshot di un gruppo di istruzioni aggiuntivo espandibile.

Valore array Tipo Descrizione
title String Definisce il titolo per il passaggio dell'istruzione.
canCollapseAllSections Booleano Facoltativo. Determina se la sezione è o meno una fisarmonica comprimibile.
noFxPadding Booleano Facoltativo. Se true, riduce la spaziatura interna dell'altezza per risparmiare spazio.
esteso Booleano Facoltativo. Se true, viene visualizzato come espanso per impostazione predefinita.

Per un esempio dettagliato, vedere il codice JSON di configurazione per il connettore DNS Windows.

InstallAgent

Alcuni tipi InstallAgent vengono visualizzati come pulsante, altri verranno visualizzati come link. Ecco alcuni esempi di entrambi:

Screenshot di un link aggiunto come pulsante.

Screenshot di un link aggiunto come testo inline.

Valori di matrice Tipo Descrizione
linkType ENUM Determina il tipo di link, come uno dei valori seguenti:

InstallAgentOnWindowsVirtualMachine
InstallAgentOnWindowsNonAzure
InstallAgentOnLinuxVirtualMachine
InstallAgentOnLinuxNonAzure
OpenSyslogSettings
OpenCustomLogsSettings
OpenWaf
OpenAzureFirewall OpenMicrosoftAzureMonitoring
OpenFrontDoors
OpenCdnProfile
AutomaticDeploymentCEF
OpenAzureInformationProtection
OpenAzureActivityLog
OpenIotPricingModel
OpenPolicyAssignment
OpenAllAssignmentsBlade
OpenCreateDataCollectionRule
policyDefinitionGuid String Obbligatorio quando si usa il linkType OpenPolicyAssignment. Per i connettori basati su criteri, definisce il GUID della definizione di criteri predefinita.
assignMode ENUM Facoltativo. Per i connettori basati su criteri, definisce la modalità di assegnazione, come uno dei valori seguenti: Initiative, Policy
dataCollectionRuleType ENUM Facoltativo. Per i connettori basati su DCR, definisce il tipo di regola di raccolta dati come uno dei seguenti: SecurityEvent, ForwardEvent

metadata

Questa sezione fornisce i metadati nell'interfaccia utente del connettore dati nell'area Descrizione.

Valore raccolta Tipo Descrizione
kind String Definisce il tipo di modello di ARM che si sta creando. Usare sempre dataConnector.
source String Descrive l'origine dati usando la sintassi seguente:
{
"kind":stringa
"name":stringa
}
autore String Descrive l'autore del connettore dati usando la sintassi seguente:
{
"name":stringa
}
support String Descrivere il supporto fornito per il connettore dati usando la sintassi seguente:
{
"tier":stringa,
"name":stringa,
"email":stringa,
"link":Stringa URL
}

autorizzazioni

Valore array Tipo Descrizione
dogana String Descrive le autorizzazioni personalizzate necessarie per la connessione dati, nella sintassi seguente:
{
"name":string,
"description":stringa
}

Esempio: il valore doganale viene visualizzato nella sezione Prerequisiti di Microsoft Sentinel con un'icona informativa blu. Nell'esempio di GitHub questo è correlato alla riga Chiave del token personale dell'API GitHub: è necessario accedere al token personale di GitHub...
licenze ENUM Definisce le licenze necessarie, come uno dei valori seguenti: OfficeIRM,OfficeATP, Office365, AadP1P2 Aatp Mcas, Mdatp, Mtp, IoT

Esempio: il valore licenze viene visualizzato in Microsoft Sentinel come Licenza: Obbligatoria Azure AD Premium P2
resourceProvider resourceProvider Descrive tutti i prerequisiti per la risorsa di Azure.

Esempio: il valore resourceProvider viene visualizzato nella sezione Prerequisiti di Microsoft Sentinel come:
Area di lavoro: è necessaria l'autorizzazione di lettura e scrittura.
Chiavi: sono necessarie le autorizzazioni di lettura per le chiavi condivise per l'area di lavoro.
tenant array di valori ENUM
Esempio:

"tenant": [
"GlobalADmin",
"SecurityAdmin"
]
Definisce le autorizzazioni necessarie, come uno o più dei valori seguenti: "GlobalAdmin", "SecurityAdmin", "SecurityReader", "InformationProtection"

Esempio: visualizza il valore del tenant in Microsoft Sentinel come: Autorizzazioni tenant: Richiede Global Administrator o Security Administrator nel tenant dell'area di lavoro

resourceProvider

valore della array secondaria Tipo Descrizione
provider ENUM Descrive il provider di risorse, con uno dei valori seguenti:
- Microsoft.OperationalInsights/workspaces
- Microsoft.OperationalInsights/solutions
- Microsoft.OperationalInsights/workspaces/datasources
- microsoft.aadiam/diagnosticSettings
- Microsoft.OperationalInsights/workspaces/sharedKeys
- Microsoft.Authorization/policyAssignments
providerDisplayName String Voce di elenco in Prerequisiti che visualizzerà un segno di spunta rosso "x" o verde quando le requiredPermissions sono convalidate nella pagina del connettore. Esempio, "Workspace"
permissionsDisplayText String Visualizzare il testo per le autorizzazioni Lettura, Scrittura o Lettura e scrittura che devono corrispondere ai valori configurati in requiredPermissions
requiredPermissions {
"action":Booleano,
"delete":Booleano,
"read":Booleano,
"write":Booleano
}
Descrive le autorizzazioni minime necessarie per il connettore.
ambito ENUM Descrive l'ambito del connettore dati, come uno dei valori seguenti: "Subscription", "ResourceGroup", "Workspace"

sampleQueries

valore array Tipo Descrizione
description Stringa Descrizione significativa per la query di esempio.

Esempio: Top 10 vulnerabilities detected
query String Query di esempio usata per recuperare i dati del tipo di dati.

Esempio: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10

Per definire un link inline usando markdown, usare l'esempio seguente. Di seguito è riportato un link in una descrizione dell'istruzione:

{
   "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)"
}

Per definire un link come modello di ARM, usare l'esempio seguente come guida:

{
   "title": "Azure Resource Manager (ARM) template",
   "description": "1. Click the **Deploy to Azure** button below.\n\n\t[![Deploy To Azure](https://aka.ms/deploytoazurebutton)]({URL to custom ARM template})"
}

Convalidare l'esperienza utente della pagina del connettore dati

Seguire questa procedura per eseguire il rendering e convalidare l'esperienza utente del connettore.

  1. È possibile accedere all'utilità di test tramite questo URL: https://aka.ms/sentineldataconnectorvalidateurl
  2. Andare a Microsoft Sentinel -> Connettori dati
  3. Fare clic sul pulsante "importa" e selezionare un file JSON che contiene solo la sezione connectorUiConfig del connettore dati.

Per altre informazioni su questo strumento di convalida, vedere le istruzioni per compilare il connettore nella guida alla compilazione di GitHub.

Nota

Poiché il parametro dell'istruzione APIKey è specifico del connettore senza codice, rimuovere temporaneamente questa sezione per usare lo strumento di convalida o non riuscirà.

Configurare le impostazioni di polling del connettore

Questa sezione descrive la configurazione per il polling dei dati dall'origine dati per un connettore dati senza codice.

Il codice seguente illustra la sintassi della sezione pollingConfig del file di configurazione CCP.

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

La sezione pollingConfig include le proprietà seguenti:

Nome Tipo Descrizione
aut String Descrive le proprietà di autenticazione per il polling dei dati. Per altre informazioni, vedere le Configurazione dell'autenticazione.
auth.authType String Obbligatorio. Definisce il tipo di autenticazione, annidata all'interno dell'oggetto auth, come uno dei valori seguenti: Basic, APIKey, OAuth2
request JSON annidato Obbligatorio. Descrive il payload della richiesta per il polling dei dati, ad esempio l'endpoint API. Per altre informazioni, vedere Configurazione della richiesta.
risposta JSON annidato Obbligatorio. Descrive l'oggetto risposta e il messaggio annidato restituito dall'API durante il polling dei dati. Per altre informazioni, vedere Configurazione della risposta.
paging JSON annidato Facoltativo. Descrive il payload di paginazione durante il polling dei dati. Per altre informazioni, vedere Configurazione del paging.

Per altre informazioni, vedere Codice pollingConfig di esempio.

Configurazione dell'autenticazione

La sezione auth della configurazione pollingConfig include i parametri seguenti, a seconda del tipo definito nell'elemento authType:

Parametri authType di base

Nome Tipo Descrizione
Nome utente String Obbligatorio. Definisce il nome utente.
Password String Obbligatorio. Definisce la password utente.

Parametri APIKey authType

Nome Tipo Descrizione
APIKeyName String Facoltativo. Definisce il nome della chiave API, come uno dei valori seguenti:

- XAuthToken
- Authorization
IsAPIKeyInPostPayload Booleano Determina la posizione in cui è definita la chiave API.

True: la chiave API è definita nel payload della richiesta POST
False: la chiave API è definita nell'intestazione
APIKeyIdentifier String Facoltativo. Definisce il nome dell'identificatore per la chiave API.

Ad esempio, dove l'autorizzazione è definita come "Authorization": "token <secret>", questo parametro viene definito come : {APIKeyIdentifier: “token”})

Parametri OAuth2 authType

La piattaforma del connettore Codeless supporta la concessione del codice di autorizzazione OAuth 2.0.

Il tipo di concessione del codice di autorizzazione viene usato dai client riservati e pubblici per scambiare un codice di autorizzazione per un token di accesso.

Dopo che l'utente torna al client tramite l'URL di reindirizzamento, l'applicazione otterrà il codice di autorizzazione dall'URL e lo userà per richiedere un token di accesso.

Nome Tipo Descrizione
FlowName String Obbligatorio. Definisce un flusso OAuth2.

Valore supportato: AuthCode - richiede un flusso di autorizzazione
AccessToken String Facoltativo. Definisce un token di accesso OAuth2, rilevante quando il token di accesso non scade.
AccessTokenPrepend String Facoltativo. Definisce un token di accesso OAuth2 anteporto. Il valore predefinito è Bearer.
RefreshToken String Obbligatorio per i tipi di autenticazione OAuth2. Definisce il token di aggiornamento OAuth2.
TokenEndpoint String Obbligatorio per i tipi di autenticazione OAuth2. Definisce l'endpoint del servizio token OAuth2.
AuthorizationEndpoint String Facoltativo. Definisce l'endpoint del servizio di autorizzazione OAuth2. Usato solo durante l'onboarding o quando si rinnova un token di aggiornamento.
RedirectionEndpoint String Facoltativo. Definisce un endpoint di reindirizzamento durante l'onboarding.
AccessTokenExpirationDateTimeInUtc String Facoltativo. Definisce un valore datetime di scadenza del token di accesso, in formato UTC. Rilevante per quando il token di accesso non scade e pertanto ha un valore datetime elevato in formato UTC o quando il token di accesso ha una data/ora di scadenza elevata.
RefreshTokenExpirationDateTimeInUtc String Obbligatorio per i tipi di autenticazione OAuth2. Definisce il valore datetime di scadenza del token di aggiornamento in formato UTC.
TokenEndpointHeaders Dizionario<stringa,oggetto> Facoltativo. Definisce le intestazioni quando si chiama un endpoint del servizio token OAuth2.

Definire una stringa nel formato serializzato dictionary<string, string>: {'<attr_name>': '<val>', '<attr_name>': '<val>'... }
AuthorizationEndpointHeaders Dizionario<stringa,oggetto> Facoltativo. Definisce le intestazioni quando si chiama un endpoint del servizio di autorizzazione OAuth2. Usato solo durante l'onboarding o quando si rinnova un token di aggiornamento.

Definire una stringa nel formato serializzato dictionary<string, object>: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
AuthorizationEndpointQueryParameters Dizionario<stringa,oggetto> Facoltativo. Definisce i parametri di query quando si chiama un endpoint del servizio di autorizzazione OAuth2. Usato solo durante l'onboarding o quando si rinnova un token di aggiornamento.

Definire una stringa nel formato serializzato dictionary<string, object>: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
TokenEndpointQueryParameters Dizionario<stringa,oggetto> Facoltativo. Definire i parametri di query quando si chiama l'endpoint del servizio token OAuth2.

Definire una stringa nel formato serializzato dictionary<string, object>: {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... }
IsTokenEndpointPostPayloadJson Booleano Facoltativa, l'impostazione predefinita è false. Determina se i parametri di query sono in formato JSON e impostati nel payload POST della richiesta.
IsClientSecretInHeader Booleano Facoltativa, l'impostazione predefinita è false. Determina se i valori client_id e client_secret vengono definiti nell'intestazione, come avviene nello schema di autenticazione di base, anziché nel payload POST.
RefreshTokenLifetimeinSecAttributeName String Facoltativo. Definisce il nome dell'attributo dalla risposta dell'endpoint del token, specificando la durata del token di aggiornamento, in secondi.
IsJwtBearerFlow Booleano Facoltativa, l'impostazione predefinita è false. Determina se si usa JWT.
JwtHeaderInJson Dizionario<stringa,oggetto> Facoltativo. Definire le intestazioni JWT in formato JSON.

Definire una stringa nel formato serializzato dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...}
JwtClaimsInJson Dizionario<stringa,oggetto> Facoltativo. Definisce le attestazioni JWT in formato JSON.

Definire una stringa nel formato serializzato dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...}
JwtPem String Facoltativo. Definisce una chiave privata in formato PEM Pkcs1: '-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n'

Assicurarsi di mantenere il '\r\n' codice sul posto.
RequestTimeoutInSeconds Intero Facoltativo. Determina il timeout in secondi quando si chiama l'endpoint del servizio token. Il valore predefinito è 180 secondi

Di seguito è riportato un esempio dell'aspetto di una configurazione OAuth2:

"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"
    },

Parametri session authType

Nome Tipo Descrizione
QueryParameters Dizionario<stringa,oggetto> Facoltativo. Elenco di parametri di query, nel formato serializzato dictionary<string, string> :

{'<attr_name>': '<val>', '<attr_name>': '<val>'... }
IsPostPayloadJson Booleano Facoltativo. Determina se i parametri di query sono in formato JSON.
Intestazioni Dizionario<stringa,oggetto> Facoltativo. Definisce l'intestazione usata quando si chiama l'endpoint per ottenere l'ID sessione e quando si chiama l'API dell'endpoint.

Definire la stringa nel formato serializzato dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }
SessionTimeoutInMinutes String Facoltativo. Definisce un timeout di sessione, espresso in minuti.
SessionIdName String Facoltativo. Definisce un nome ID per la sessione.
SessionLoginRequestUri String Facoltativo. Definisce un URI della richiesta di accesso di sessione.

Richiedere la configurazione

La sezione request della configurazione pollingConfig include i parametri seguenti:

Nome Tipo Descrizione
apiEndpoint String Obbligatorio. Definisce l'endpoint da cui eseguire il pull dei dati.
httpMethod String Obbligatorio. Definisce il metodo API: GET o POST
queryTimeFormat String o UnixTimestamp o UnixTimestampInMills Obbligatorio. Definisce il formato usato per definire l'ora della query.

Questo valore può essere una stringa o in formato UnixTimestamp o UnixTimestampInMills per indicare l'ora di inizio e di fine della query in UnixTimestamp.
startTimeAttributeName String Facoltativo. Definisce il nome dell'attributo che definisce l'ora di inizio della query.
endTimeAttributeName String Facoltativo. Definisce il nome dell'attributo che definisce l'ora di fine della query.
queryTimeIntervalAttributeName String Facoltativo. Definisce il nome dell'attributo che definisce l'intervallo di tempo della query.
queryTimeIntervalDelimiter String Facoltativo. Definisce il delimitatore dell'intervallo di tempo della query.
queryWindowInMin Intero Facoltativo. Definisce la finestra di query disponibile, espressa in minuti.

Valore minimo: 5
queryParameters Dizionario<stringa,oggetto> Facoltativo. Definisce i parametri passati nella query nel percorso eventsJsonPaths.

Definire la stringa nel formato serializzato dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... }.
queryParametersTemplate String Facoltativo. Definisce il modello di parametri di query da usare quando si passano parametri di query in scenari avanzati.

Ad esempio: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}"

{_QueryWindowStartTime} e {_QueryWindowEndTime} sono supportati solo nei parametri di richiesta queryParameters e queryParametersTemplate.

{_APIKeyName} e {_APIKey} sono supportati solo nel parametro di richiesta queryParametersTemplate.
isPostPayloadJson Booleano Facoltativo. Determina se il payload POST è in formato JSON.
rateLimitQPS Double Facoltativo. Definisce il numero di chiamate o query consentite in un secondo.
timeoutInSeconds Intero Facoltativo. Definisce il timeout della richiesta, espresso in secondi.
retryCount Intero Facoltativo. Definisce il numero di tentativi di richiesta da provare, se necessario.
headers Dizionario<stringa,oggetto> Facoltativo. Definisce il valore dell'intestazione della richiesta nel formato serializzato dictionary<string, object> : {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... }

Configurazione della risposta

La sezione response della configurazione pollingConfig include i parametri seguenti:

Nome Tipo Descrizione
eventsJsonPaths Elenco di stringhe Obbligatorio. Definisce il percorso del messaggio nel codice JSON della risposta.

Un'espressione di percorso JSON specifica un percorso di un elemento o un set di elementi in una struttura JSON
successStatusJsonPath String Facoltativo. Definisce il percorso del messaggio di operazione riuscita nel codice JSON della risposta.
successStatusValue String Facoltativo. Definisce il percorso del valore del messaggio di operazione riuscita nel codice JSON della risposta
isGzipCompressed Booleano Facoltativo. Determina se la risposta è compressa in un file gzip.

Il codice seguente mostra un esempio del valore eventsJsonPaths per un messaggio di primo livello:

"eventsJsonPaths": [
              "$"
            ]

Configurazione del paging

La sezione paging della configurazione pollingConfig include i parametri seguenti:

Nome Tipo Descrizione
pagingType String Obbligatorio. Determina il tipo di paging da usare nei risultati, come uno dei valori seguenti: None, LinkHeader NextPageToken, NextPageUrl Offset
linkHeaderTokenJsonPath String Facoltativo. Definisce il percorso JSON per collegare l'intestazione nel codice JSON della risposta, se LinkHeader non è definito nell'intestazione della risposta.
nextPageTokenJsonPath String Facoltativo. Definisce il percorso di un token di pagina successivo JSON.
hasNextFlagJsonPath String Facoltativo. Definisce il percorso dell'attributo flag HasNextPage.
nextPageTokenResponseHeader String Facoltativo. Definisce il nome dell'intestazione del token della pagina successiva nella risposta.
nextPageParaName String Facoltativo. Determina il nome della pagina successiva nella richiesta.
nextPageRequestHeader String Facoltativo. Determina il nome dell'intestazione della pagina successiva nella richiesta.
nextPageUrl String Facoltativo. Determina l'URL della pagina successiva, se è diverso dall'URL della richiesta iniziale.
nextPageUrlQueryParameters String Facoltativo. Determina i parametri di query dell'URL della pagina successiva se è diverso dall'URL della richiesta iniziale.

Definire la stringa nel formato serializzato dictionary<string, object> : {'<attr_name>': <val>, '<attr_name>': <val>... }
offsetParaName String Facoltativo. Definisce il nome del parametro offset.
pageSizeParaName String Facoltativo. Definisce il nome del parametro dimensioni pagina.
PageSize Intero Definisce le dimensioni del paging.

Codice pollingConfig di esempio

Il codice seguente illustra un esempio della sezione pollingConfig del file di configurazione 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": [
          "$"
        ]
     }
}

Distribuire il connettore in Microsoft Sentinel e avviare l'inserimento di dati

Dopo aver creato il file di configurazione JSON, inclusa l'interfaccia utente e la configurazione di polling, distribuire il connettore nell'area di lavoro di Microsoft Sentinel.

  1. Usare una delle opzioni seguenti per distribuire il connettore dati.

    Suggerimento

    Il vantaggio della distribuzione tramite un modello di Azure Resource Manager (ARM) è che diversi valori sono incorporati nel modello e non è necessario definirli manualmente in una chiamata API.

    Eseguire il wrapping delle raccolte di configurazioni JSON in un modello di ARM per distribuire il connettore. Per assicurarsi che il connettore dati venga distribuito nell'area di lavoro corretta, assicurarsi di definire l'area di lavoro nel modello di ARM o di selezionare l'area di lavoro durante la distribuzione del modello di ARM.

    1. Preparare un file JSON del modello di ARM per il connettore. Ad esempio, vedere i file JSON del modello di ARM seguenti:

    2. Nel portale di Azure cercare Distribuire un modello personalizzato.

    3. Nel riquadro Distribuzione personalizzata, selezionare Compila un modello personalizzato nell'editor>Carica file. Andare a e selezionare il modello di ARM locale e quindi salvare le modifiche.

    4. Selezionare la sottoscrizione e il gruppo di risorse e quindi immettere l'area di lavoro Log Analytics in cui si desidera distribuire il connettore personalizzato.

    5. Selezionare Rivedi + crea per distribuire il connettore personalizzato in Microsoft Sentinel.

    6. In Microsoft Sentinel andare alla pagina Connettori dati e cercare il nuovo connettore. Configurarlo per avviare l'inserimento dei dati.

    Per altre informazioni, vedere Distribuire un modello locale nella documentazione di Azure Resource Manager.

  2. Configurare il connettore dati per connettere l'origine dati e avviare l'inserimento di dati in Microsoft Sentinel. È possibile connettersi all'origine dati tramite il portale, come con i connettori dati predefiniti o tramite l'API.

    Quando si usa il portale di Azure per connettersi, i dati utente vengono inviati automaticamente. Quando ci si connette tramite API, è necessario inviare i parametri di autenticazione pertinenti nella chiamata API.

    Nella pagina del connettore dati di Microsoft Sentinel seguire le istruzioni fornite per connettersi al connettore dati.

    La pagina del connettore dati in Microsoft Sentinel è controllata dalla configurazione InstructionSteps nell'elemento connectorUiConfig del file di configurazione JSON CCP. Se si verificano problemi con la connessione all'interfaccia utente, assicurarsi di avere la configurazione corretta per il tipo di autenticazione.

  3. In Microsoft Sentinel andare alla pagina Log e verificare di visualizzare i log dall'origine dati che passano all'area di lavoro.

Se non viene visualizzato il flusso di dati in Microsoft Sentinel, controllare la documentazione dell'origine dati e le risorse per la risoluzione dei problemi, controllare i dettagli della configurazione e controllare la connettività. Per altre informazioni, vedere Monitorare l'integrità dei connettori dati.

Disconnettere il connettore

Se i dati del connettore non sono più necessari, disconnettere il connettore per arrestare il flusso di dati.

Usa uno dei seguenti metodi:

  • Portale di Azure: nella pagina del connettore dati Microsoft Sentinel selezionare Disconnetti.

  • API: usare l'API DISCONNECT per inviare una chiamata PUT con un corpo vuoto all'URL seguente:

    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
    

Passaggi successivi

Se non è ancora stato fatto, condividere il nuovo connettore dati senza codice con la community di Microsoft Sentinel!! Creare una soluzione per il connettore dati e condividerla in Microsoft Sentinel Marketplace.

Per ulteriori informazioni, vedere,