Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
La collecte de logs à partir de nombreux appareils et équipements est désormais prise en charge dans Microsoft Sentinel par le Common Event Format (CEF) via AMA, par Syslog via AMA ou par les logs personnalisés via le connecteur de données AMA. Pour plus d’informations, consultez Rechercher votre connecteur de données Microsoft Sentinel.
Important
Il existe une version plus récente de la plateforme de connecteurs sans code (CCP). Pour plus d’informations sur le nouveau CCP, consultez Créer un connecteur sans code (préversion).
Référencez ce document si vous devez gérer ou mettre à jour un connecteur de données en fonction de cette version héritée antérieure du CCP.
Le CCP fournit aux partenaires, aux utilisateurs avancés et aux développeurs la possibilité de créer des connecteurs personnalisés, de les connecter et d’ingérer des données à Microsoft Sentinel. Les connecteurs créés via le CCP peuvent être déployés via l’API, un modèle ARM ou en tant que solution dans le hub de contenu Microsoft Sentinel.
Les connecteurs créés à l’aide de CCP sont entièrement basés sur le SaaS, sans aucune exigence pour les installations de service, et incluent également le suivi de l’état de santé ainsi que la prise en charge complète de Microsoft Sentinel.
Créez votre connecteur de données en définissant des configurations JSON, avec les paramètres de la page du connecteur de données dans Microsoft Sentinel, ainsi que les paramètres d’interrogation qui définissent la façon dont les fonctions de connexion sont définies.
Important
Cette version de Codeless Connector Platform (CCP) est en version préliminaire, mais elle est également considérée comme obsolète. Les Conditions d’utilisation supplémentaires des préversions Microsoft Azure incluent des conditions légales supplémentaires qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou pas encore disponibles dans la version en disponibilité générale.
Procédez comme suit pour créer votre connecteur CCP et vous connecter à votre source de données à partir de Microsoft Sentinel :
- Configurer l’interface utilisateur du connecteur
- Configurer les paramètres d’interrogation du connecteur
- Déployer votre connecteur sur votre espace de travail Microsoft Sentinel
- Connecter Microsoft Sentinel à votre source de données et commencer à ingérer des données
Cet article décrit la syntaxe utilisée dans les configurations et procédures CCP JSON pour déployer votre connecteur via l’API, un modèle ARM ou une solution Microsoft Sentinel.
Conditions préalables
Avant de créer un connecteur, nous vous recommandons de comprendre le comportement de votre source de données et exactement la façon dont Microsoft Sentinel doit se connecter.
Par exemple, vous devez connaître les types d’authentification, de pagination et de points de terminaison d’API requis pour les connexions réussies.
Créer un fichier de configuration JSON de connecteur
Votre connecteur CCP personnalisé comporte deux sections JSON principales nécessaires au déploiement. Renseignez ces zones pour définir la façon dont votre connecteur s’affiche dans le portail Azure et comment il connecte Microsoft Sentinel à votre source de données.
connectorUiConfig
. Définit les éléments visuels et le texte affichés sur la page du connecteur de données dans Microsoft Sentinel. Pour plus d’informations, consultez Configurer l’interface utilisateur de votre connecteur.pollingConfig
. Définit la façon dont Microsoft Sentinel collecte des données à partir de votre source de données. Pour plus d’informations, consultez Configurer les paramètres d’interrogation de votre connecteur.
Ensuite, si vous déployez votre connecteur sans code via ARM, vous encapsulez ces sections dans le modèle ARM pour les connecteurs de données.
Passez en revue d’autres connecteurs de données CCP en tant qu’exemples ou téléchargez l’exemple de modèle ,DataConnector_API_CCP_template.json (aperçu).
Configurer l’interface utilisateur de votre connecteur
Cette section décrit les options de configuration disponibles pour personnaliser l’interface utilisateur de la page connecteur de données.
L’image suivante montre un exemple de page de connecteur de données, mise en surbrillance avec des nombres correspondant à des zones notables de l’interface utilisateur :
- Titre. Titre affiché pour votre connecteur de données.
- Logo. Icône affichée pour votre connecteur de données. La personnalisation de ce paramètre n’est possible que lors du déploiement dans le cadre d’une solution.
- Status. Indique si votre connecteur de données est connecté à Microsoft Sentinel ou non.
- Graphiques de données. Affiche les requêtes pertinentes et la quantité de données ingérées au cours des deux dernières semaines.
- Onglet Instructions. Inclut une section Conditions préalables , avec une liste de validations minimales avant que l’utilisateur puisse activer le connecteur, et instructions, pour guider l’activation de l’utilisateur du connecteur. Cette section peut inclure du texte, des boutons, des formulaires, des tableaux et d’autres widgets courants pour simplifier le processus.
- Onglet Étapes suivantes. Inclut des informations utiles pour comprendre comment rechercher des données dans les journaux des événements, telles que des exemples de requêtes.
Voici les sections et la connectorUiConfig
syntaxe nécessaires pour configurer l’interface utilisateur :
Nom de la propriété | Catégorie | Description |
---|---|---|
disponibilité | { "status": 1, "isPreview": Booléen} |
état : 1 Indique que le connecteur est généralement disponible pour les clients. isPreview Indique s’il faut inclure le suffixe "(Preview)" au nom du connecteur. |
CritèresDeConnectivité | { "type": SentinelKindsV2, "value": APIPolling } |
Objet qui définit comment vérifier si le connecteur est correctement défini. Utilisez les valeurs indiquées ici. |
dataTypes | dataTypes[] | Liste de tous les types de données pour votre connecteur et requête permettant d’extraire l’heure du dernier événement pour chaque type de données. |
descriptionMarkdown | Chaîne | Description du connecteur avec la possibilité d’ajouter le langage Markdown pour l’améliorer. |
graphQueries | graphQueries[] | Requêtes qui présentent l’ingestion des données au cours des deux dernières semaines dans le volet Graphiques de données . Fournissez une requête pour tous les types de données du connecteur de données ou une requête différente pour chaque type de données. |
graphQueriesTableName | Chaîne | Définit le nom de la table Log Analytics à partir de laquelle les données de vos requêtes sont extraites. Le nom de la table peut être n’importe quelle chaîne, mais doit se terminer par _CL . Par exemple : TableName_CL |
instructionsSteps | instructionSteps[] | Tableau de composants de widget qui expliquent comment installer le connecteur, affiché sous l’onglet Instructions . |
métadonnées | métadonnées | Métadonnées affichées sous la description du connecteur. |
autorisations | permissions[] | Informations affichées dans la section Conditions préalables de l’interface utilisateur qui répertorie les autorisations requises pour activer ou désactiver le connecteur. |
éditeur | Chaîne | Il s’agit du texte affiché dans la section Fournisseur . |
sampleQueries | sampleQueries[] | Exemples de requêtes permettant au client de comprendre comment rechercher les données dans le journal des événements, à afficher sous l’onglet Étapes suivantes . |
titre | Chaîne | Titre affiché dans la page du connecteur de données. |
Mettre tous ces morceaux ensemble est compliqué. Utilisez l’outil de validation de l’expérience utilisateur de la page du connecteur pour tester les composants que vous avez réunis.
types de données
Valeur de tableau | Catégorie | Description |
---|---|---|
nom | Chaîne | Description explicite pour le lastDataReceivedQuery , y compris la prise en charge d'une variable. Exemple : {{graphQueriesTableName}} |
requêteDernièresDonnéesReçues | Chaîne | Requête KQL qui retourne une ligne et indique la dernière fois que les données ont été reçues, ou aucune donnée s’il n’y a pas de données pertinentes. Exemple : {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
Définit une requête qui présente l’ingestion des données au cours des deux dernières semaines dans le volet Graphiques de données .
Fournissez une requête pour tous les types de données du connecteur de données ou une requête différente pour chaque type de données.
Valeur de tableau | Catégorie | Description |
---|---|---|
metricName | Chaîne | Nom significatif pour votre graphe. Exemple : Total data received |
légende | Chaîne | Chaîne qui apparaît dans la légende à droite du graphique, y compris une référence de variable. Exemple : {{graphQueriesTableName}} |
baseQuery | Chaîne | Requête qui filtre les événements pertinents, y compris une référence de variable. Par exemple : TableName_CL | where ProviderName == "myprovider" ou {{graphQueriesTableName}} |
instructionSteps
Cette section fournit des paramètres qui définissent l’ensemble d’instructions qui s’affichent sur votre page de connecteur de données dans Microsoft Sentinel.
Propriété de tableau | Catégorie | Description |
---|---|---|
titre | Chaîne | Optionnel. Définit un titre pour vos instructions. |
description | Chaîne | Optionnel. Définit une description explicite pour vos instructions. |
innerSteps | Tableau | Optionnel. Définit un tableau d’étapes d’instruction internes. |
instructions | Tableau d’instructions | Obligatoire. Définit un tableau d’instructions d’un type de paramètre spécifique. |
bottomBorder | Booléen | Optionnel. Quand true est utilisé, ajoute une bordure inférieure à la zone d'instructions de la page du connecteur dans Microsoft Sentinel. |
isComingSoon | Booléen | Optionnel. Lorsqu’il est activé true , ajoute un titre Prochainement sur la page du connecteur dans Microsoft Sentinel. |
instructions
Affiche un groupe d’instructions, avec différentes options en tant que paramètres et la possibilité d’imbriquer davantage d’instructionsSteps dans des groupes.
Paramètre | Array, propriété | Description |
---|---|---|
APIKey | APIKey | Ajoutez des espaces réservés au fichier de configuration JSON de votre connecteur. |
CopyableLabel | CopyableLabel | Affiche un champ de texte avec un bouton de copie à la fin. Lorsque le bouton est sélectionné, la valeur du champ est copiée. |
Message d'information | Message d'information | Définit un message d’informations inline. |
InstructionStepsGroup | InstructionStepsGroup | Affiche un groupe d’instructions, pouvant être développé ou rétractable, dans une section d’instructions distincte. |
InstallAgent | InstallAgent | Affiche un lien vers d’autres parties d’Azure pour répondre à diverses exigences d’installation. |
APIKey
Vous pouvez créer un modèle de fichier de configuration JSON, avec des paramètres d’espaces réservés, à réutiliser sur plusieurs connecteurs, ou même pour créer un connecteur avec des données que vous n’avez pas actuellement.
Pour créer des paramètres d’espace réservé, définissez un tableau supplémentaire nommé userRequestPlaceHoldersInput
dans la section Instructions de votre fichier de configuration CCP JSON , à l’aide de la syntaxe suivante :
"instructions": [
{
"parameters": {
"enable": "true",
"userRequestPlaceHoldersInput": [
{
"displayText": "Organization Name",
"requestObjectKey": "apiEndpoint",
"placeHolderName": "{{placeHolder}}"
}
]
},
"type": "APIKey"
}
]
Le userRequestPlaceHoldersInput
paramètre inclut les attributs suivants :
Nom | Catégorie | Description |
---|---|---|
DisplayText | Chaîne | Définit la valeur d’affichage de la zone de texte, qui est affichée à l’utilisateur lors de la connexion. |
RequestObjectKey | Chaîne | Définit l'ID dans la section de requête de sondageConfig pour remplacer la valeur fictive par la valeur fournie par l'utilisateur. Si vous n’utilisez pas cet attribut, utilisez plutôt l’attribut PollingKeyPaths . |
PollingKeyPaths | Chaîne | Définit un tableau d’objets JsonPath qui dirige l’appel d’API n’importe où dans le modèle pour remplacer une valeur d’espace réservé par une valeur utilisateur. Exemple : "pollingKeyPaths":["$.request.queryParameters.test1"] Si vous n’utilisez pas cet attribut, utilisez plutôt l’attribut RequestObjectKey . |
PlaceHolderName | Chaîne | Définit le nom du paramètre d’espace réservé dans le fichier de modèle JSON. Il peut s’agir de n’importe quelle valeur unique, telle que {{placeHolder}} . |
Étiquette Copiable
Exemple:
Exemple de code :
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Here are some values you'll need to proceed.",
"value": "Workspace is {0} and PrimaryKey is {1}"
},
"type": "CopyableLabel"
}
Valeur de tableau | Catégorie | Description |
---|---|---|
fillWith | ENUM | Optionnel. Tableau de variables d’environnement utilisées pour remplir un espace réservé. Séparez plusieurs espaces réservés par des virgules. Par exemple : {0},{1} Valeurs prises en charge : workspaceId , , workspaceName primaryKey , MicrosoftAwsAccount subscriptionId |
label | Chaîne | Définit le texte de l’étiquette au-dessus d’une zone de texte. |
valeur | Chaîne | Définit la valeur à présenter dans la zone de texte, prend en charge les espaces réservés. |
Lignes | Lignes | Optionnel. Définit les lignes de la zone d’interface utilisateur. Par défaut, définissez sur 1. |
wideLabel | Booléen | Optionnel. Détermine une étiquette large pour les chaînes longues. Par défaut, définissez la false valeur . |
InfoMessage
Voici un exemple de message d’informations inline :
À l'inverse, l'image suivante montre un message d'information non en ligne :
Valeur de tableau | Catégorie | Description |
---|---|---|
texte | Chaîne | Définissez le texte à afficher dans le message. |
visible | Booléen | Détermine si le message est affiché. |
Inline | Booléen | Détermine la façon dont le message d’informations est affiché. - true : (Recommandé) Affiche le message d’informations incorporé dans les instructions. - false : ajoute un arrière-plan bleu. |
InstructionStepsGroup
Voici un exemple de groupe d’instructions extensible :
Valeur de tableau | Catégorie | Description |
---|---|---|
titre | Chaîne | Définit le titre de l’étape d’instruction. |
canCollapseAllSections | Booléen | Optionnel. Détermine si la section est un accordéon pliable ou non. |
noFxPadding | Booléen | Optionnel. Si true , réduit le remplissage de hauteur pour économiser de l’espace. |
expansé | Booléen | Optionnel. Si true , s’affiche comme développé par défaut. |
Pour obtenir un exemple détaillé, consultez le json de configuration pour le connecteur DNS Windows.
InstallAgent
Certains types InstallAgent apparaissent sous la forme d’un bouton, d’autres apparaissent sous forme de lien. Voici des exemples des deux :
Valeurs de tableau | Catégorie | Description |
---|---|---|
linkType | ENUM | Détermine le type de lien, comme l’une des valeurs suivantes : InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall
OpenMicrosoftAzureMonitoring
OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | Chaîne | Obligatoire lors de l’utilisation du linkType OpenPolicyAssignment . Pour les connecteurs basés sur des stratégies, définit le GUID de la définition de stratégie intégrée. |
assignMode | ENUM | Optionnel. Pour les connecteurs basés sur des stratégies, définit le mode d’affectation, comme l’une des valeurs suivantes : Initiative , Policy |
dataCollectionRuleType | ENUM | Optionnel. Pour les connecteurs basés sur DCR, définit le type de règle de collecte de données comme l’un des éléments suivants : SecurityEvent ForwardEvent |
métadonnées
Cette section fournit des métadonnées dans l’interface utilisateur du connecteur de données sous la zone Description .
Valeur de collection | Catégorie | Description |
---|---|---|
kind | Chaîne | Définit le type de modèle ARM que vous créez. Toujours utiliser dataConnector . |
source | Chaîne | Décrit votre source de données à l’aide de la syntaxe suivante : { "kind": chaîne"name": chaîne} |
auteur | Chaîne | Décrit l’auteur du connecteur de données à l’aide de la syntaxe suivante : { "name": chaîne} |
soutien | Chaîne | Décrivez la prise en charge fournie pour le connecteur de données à l’aide de la syntaxe suivante : { "tier": chaîne"name": chaîne de caractères"email": chaîne de caractères"link": Chaîne d’URL} |
autorisations
Valeur de tableau | Catégorie | Description |
---|---|---|
douane | Chaîne | Décrit les autorisations personnalisées requises pour votre connexion de données, dans la syntaxe suivante : { "name": chaîne, "description": chaîne de caractères} Exemple : La valeur douanière s’affiche dans la section Conditions préalables de Microsoft Sentinel avec une icône d’information bleue. Dans l’exemple GitHub, cela correspond à la clé de jeton personnel de l’API GitHub de ligne : vous devez accéder au jeton personnel GitHub... |
licenses | ENUM | Définit les licences requises comme l’une des valeurs suivantes : OfficeIRM ,OfficeATP , Office365 , AadP1P2 , Mcas , Aatp , , Mdatp , , , Mtp IoT Exemple : La valeur des licences s’affiche dans Microsoft Sentinel comme suit : Licence : Azure AD Premium P2 requis |
resourceProvider | resourceProvider | Décrit les conditions préalables pour votre ressource Azure. Exemple : La valeur resourceProvider s’affiche dans la section Conditions préalables de Microsoft Sentinel comme suit : Espace de travail : l’autorisation de lecture et d’écriture est requise. Clés : les autorisations de lecture pour les clés partagées pour l’espace de travail sont requises. |
tenant | tableau de valeurs ENUM Exemple: "tenant": [ "GlobalADmin", "SecurityAdmin" ] |
Définit les autorisations requises, comme une ou plusieurs des valeurs suivantes : "GlobalAdmin" , "SecurityAdmin" , "SecurityReader" , "InformationProtection" Exemple : affiche la valeur du locataire dans Microsoft Sentinel en tant que : Autorisations de locataire : Nécessite Global Administrator ou Security Administrator sur le locataire de l’espace de travail |
fournisseur de ressources
valeur de sous-tableau | Catégorie | Description |
---|---|---|
fournisseur | ENUM | Décrit le fournisseur de ressources, avec l’une des valeurs suivantes : - Microsoft.OperationalInsights/workspaces - Microsoft.OperationalInsights/solutions - Microsoft.OperationalInsights/workspaces/datasources - microsoft.aadiam/diagnosticSettings - Microsoft.OperationalInsights/workspaces/sharedKeys - Microsoft.Authorization/policyAssignments |
providerDisplayName | Chaîne | Élément de liste sous Conditions préalables qui affiche un "x" rouge ou une coche verte lorsque les requiredPermissions sont validés dans la page du connecteur. Exemple "Workspace" |
Texte d'affichage des autorisations | Chaîne | Afficher du texte pour les autorisations Lecture, Écriture ou Lecture et Écriture qui doivent correspondre aux valeurs configurées dans requiredPermissions |
requiredPermissions | { "action": Booléen, "delete": Booléen, "read": Booléen, "write": Booléen} |
Décrit les autorisations minimales requises pour le connecteur. |
étendue | ENUM | Décrit l’étendue du connecteur de données, comme l’une des valeurs suivantes : "Subscription" , "ResourceGroup" , "Workspace" |
exemplesDeRequêtes
valeur du tableau | Catégorie | Description |
---|---|---|
description | Chaîne | Description explicite de l’exemple de requête. Exemple : Top 10 vulnerabilities detected |
requête | Chaîne | Exemple de requête utilisé pour extraire les données du type de données. Exemple : {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10 |
Configurer d’autres options de lien
Pour définir un lien inline à l’aide de Markdown, utilisez l’exemple suivant. Ici, un lien est fourni dans une description d’instruction :
{
"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)"
}
Pour définir un lien en tant que modèle ARM, utilisez l’exemple suivant comme guide :
{
"title": "Azure Resource Manager (ARM) template",
"description": "1. Click the **Deploy to Azure** button below.\n\n\t[]({URL to custom ARM template})"
}
Valider l’expérience utilisateur de la page connecteur de données
Suivez ces étapes pour afficher et valider l’expérience utilisateur du connecteur.
- L’utilitaire de test est accessible par cette URL : https://aka.ms/sentineldataconnectorvalidateurl
- Accéder à Microsoft Sentinel -> Connecteurs de données
- Cliquez sur le bouton « Importer » et sélectionnez un fichier json qui contient uniquement la
connectorUiConfig
section de votre connecteur de données.
Pour plus d’informations sur cet outil de validation, consultez les instructions de génération du connecteur dans notre guide de build GitHub.
Remarque
Étant donné que le paramètre d’instruction APIKey est spécifique au connecteur sans code, supprimez temporairement cette section pour utiliser l’outil de validation ou échouera.
Configurer les paramètres d’interrogation de votre connecteur
Cette section décrit la configuration de la façon dont les données sont interrogées à partir de votre source de données pour un connecteur de données sans code.
Le code suivant montre la syntaxe de la pollingConfig
section du fichier de configuration CCP .
"pollingConfig": {
"auth": {
},
"request": {
},
"response": {
},
"paging": {
}
}
La pollingConfig
section inclut les propriétés suivantes :
Nom | Catégorie | Description |
---|---|---|
Auth | Chaîne | Décrit les propriétés d’authentification pour l’interrogation des données. Pour plus d’informations, consultez la configuration de l’authentification. |
auth.authType | Chaîne | Obligatoire. Définit le type d’authentification, imbriqué à l’intérieur de l’objetauth , comme l’une des valeurs suivantes : Basic , , APIKey OAuth2 |
requête | JSON imbriqué | Obligatoire. Décrit la charge utile de la requête pour interroger les données, telles que le point de terminaison de l’API. Pour plus d’informations, consultez Configuration de requête. |
response | JSON imbriqué | Obligatoire. Décrit l’objet de réponse et le message imbriqué renvoyés par l’API lors de l’interrogation des données. Pour plus d’informations, consultez Configuration de réponse. |
pagination | JSON imbriqué | Optionnel. Décrit la charge utile de la pagination lors de l’interrogation des données. Pour plus d’informations, consultez Configuration de paging. |
Pour plus d’informations, consultez l’exemple de code pollingConfig.
Configuration de l’authentification
La auth
section de la configuration pollingConfig inclut les paramètres suivants, en fonction du type défini dans l’élément authType :
Paramètres authType de base
Nom | Catégorie | Description |
---|---|---|
Nom d’utilisateur | Chaîne | Obligatoire. Définit le nom d’utilisateur. |
Mot de passe | Chaîne | Obligatoire. Définit le mot de passe de l’utilisateur. |
Paramètres d’authType APIKey
Nom | Catégorie | Description |
---|---|---|
APIKeyName | Chaîne | Optionnel. Définit le nom de votre clé API, comme l’une des valeurs suivantes : - XAuthToken - Authorization |
IsAPIKeyInPostPayload | Booléen | Détermine l’emplacement où votre clé API est définie. True : la clé API est définie dans la charge utile de la requête POST False : la clé API est définie dans l’en-tête |
APIKeyIdentifier | Chaîne | Optionnel. Définit le nom de l’identificateur de la clé API. Par exemple, où l’autorisation est définie comme "Authorization": "token <secret>" , ce paramètre est défini comme suit : {APIKeyIdentifier: “token”}) |
Paramètres du type d'authentification OAuth2
La plateforme du connecteur sans code prend en charge l’octroi de code d’autorisation OAuth 2.0.
Le type de code d’autorisation est utilisé par les clients confidentiels et publics afin d'échanger un code d’autorisation contre un jeton d’accès.
Une fois que l’utilisateur est retourné au client via l’URL de redirection, l’application obtient le code d’autorisation de l’URL et l’utilise pour demander un jeton d’accès.
Nom | Catégorie | Description |
---|---|---|
FlowName | Chaîne | Obligatoire. Définit un flux OAuth2. Valeur prise en charge : AuthCode - nécessite un flux d’autorisation |
AccessToken | Chaîne | Optionnel. Définit un jeton d’accès OAuth2, pertinent lorsque le jeton d’accès n’expire pas. |
AccessTokenPrepend | Chaîne | Optionnel. Définit un préfixe pour le jeton d’accès OAuth2. La valeur par défaut est Bearer . |
RefreshToken | Chaîne | Obligatoire pour les types d’authentification OAuth2. Définit le jeton de rafraîchissement OAuth2. |
TokenEndpoint | Chaîne | Obligatoire pour les types d’authentification OAuth2. Définit le point de terminaison du service de jeton OAuth2. |
PointDeFinD'Autorisation | Chaîne | Optionnel. Définit le point de terminaison du service d’autorisation OAuth2. Utilisé uniquement lors de l’intégration ou lors du renouvellement d’un jeton d’actualisation. |
RedirectionEndpoint | Chaîne | Optionnel. Définit un point de terminaison de redirection pendant l’intégration. |
Date et heure d'expiration du token d'accès en UTC | Chaîne | Optionnel. Définit une date d’expiration du jeton d’accès au format UTC. Pertinent pour le moment où le jeton d’accès n’expire pas, et a donc une datetime importante au format UTC, ou lorsque le jeton d’accès a une date d’expiration importante. |
RefreshTokenExpirationDateTimeInUtc | Chaîne | Obligatoire pour les types d’authentification OAuth2. Définit la date d’expiration du jeton d’actualisation au format UTC. |
TokenEndpointHeaders | Dictionnaire<string, objet> | Optionnel. Définit les en-têtes pour l'accès à un point de terminaison du service de jetons OAuth2. Définissez une chaîne au format sérialisé dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
AuthorizationEndpointHeaders | Chaîne de<dictionnaire, objet> | Optionnel. Définit les en-têtes lorsqu'on appelle un point de terminaison du service d’autorisation OAuth2. Utilisé uniquement lors de l’intégration ou lors du renouvellement d’un jeton d’actualisation. Définissez une chaîne au format sérialisé dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
ParamètresDeRequêteDuPointDeTerminaisonD'Autorisation | Chaîne de<dictionnaire, objet> | Optionnel. Définit les paramètres de requête lors de l’appel d’un point de terminaison de service d’autorisation OAuth2. Utilisé uniquement lors de l’intégration ou lors du renouvellement d’un jeton d’actualisation. Définissez une chaîne au format sérialisé dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
TokenEndpointQueryParameters | Chaîne<de caractères, objet> | Optionnel. Définissez les paramètres de requête lors de l’appel du point de terminaison du service de jeton OAuth2. Définissez une chaîne au format sérialisé dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
IsTokenEndpointPostPayloadJson | Booléen | Facultatif, la valeur par défaut est false. Détermine si les paramètres de requête sont au format JSON et définis dans la charge utile POST de la requête. |
IsClientSecretInHeader | Booléen | Facultatif, la valeur par défaut est false. Détermine si les valeurs client_id et client_secret sont définies dans l’en-tête, comme dans le schéma d’authentification de base, au lieu de la charge utile POST. |
RefreshTokenLifetimeinSecAttributeName | Chaîne | Optionnel. Définit le nom de l’attribut à partir de la réponse du point de terminaison de jeton, en spécifiant la durée de vie du jeton d’actualisation, en secondes. |
IsJwtBearerFlow | Booléen | Facultatif, la valeur par défaut est false. Détermine si vous utilisez JWT. |
JwtHeaderInJson | Chaîne de<dictionnaire, objet> | Optionnel. Définissez les en-têtes JWT au format JSON. Définissez une chaîne au format sérialisé dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...} |
JwtClaimsInJson | Chaîne de<dictionnaire, objet> | Optionnel. Définit les revendications JWT au format JSON. Définissez une chaîne au format sérialisé dictionary<string, object> : {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...} |
JwtPem | Chaîne | Optionnel. Définit une clé secrète, au format PEM Pkcs1 : '-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n' Veillez à conserver le code '\r\n' en place. |
RequestTimeoutInSeconds | Nombre entier | Optionnel. Détermine le délai d’expiration en secondes lors de l’appel du point de terminaison de service de jeton. La valeur par défaut est de 180 secondes |
Voici un exemple de la façon dont une configuration OAuth2 peut ressembler :
"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"
},
Paramètres authType de session
Nom | Catégorie | Description |
---|---|---|
QueryParameters | Chaîne de<dictionnaire, objet> | Optionnel. Liste des paramètres de requête, au format sérialisé dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
IsPostPayloadJson | Booléen | Optionnel. Détermine si les paramètres de requête sont au format JSON. |
En-têtes | Dictionnaire<chaîne, objet> | Optionnel. Définit l’en-tête utilisé lors de l’appel du point de terminaison pour obtenir l’ID de session et lors de l’appel de l’API de point de terminaison. Définissez la chaîne au format sérialisé dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
SessionTimeoutInMinutes | Chaîne | Optionnel. Définit un délai d’expiration de session, en minutes. |
SessionIdName | Chaîne | Optionnel. Définit un nom d’ID pour la session. |
SessionLoginRequestUri | Chaîne | Optionnel. Définit un URI de demande de connexion de session. |
Configuration de requête
La request
section de la configuration pollingConfig inclut les paramètres suivants :
Nom | Catégorie | Description |
---|---|---|
apiEndpoint | Chaîne | Obligatoire. Définit le point de terminaison à partir duquel extraire les données. |
httpMethod | Chaîne | Obligatoire. Définit la méthode d’API : GET ou POST |
queryTimeFormat | String, ou UnixTimestamp ou UnixTimestampInMills | Obligatoire. Définit le format utilisé pour définir l’heure de la requête. Cette valeur peut être une chaîne, ou au format UnixTimestamp ou UnixTimestampInMills pour indiquer l’heure de début et de fin de la requête dans UnixTimestamp. |
startTimeAttributeName | Chaîne | Optionnel. Définit le nom de l’attribut qui définit l’heure de début de la requête. |
endTimeAttributeName | Chaîne | Optionnel. Définit le nom de l’attribut qui définit l’heure de fin de la requête. |
queryTimeIntervalAttributeName | Chaîne | Optionnel. Définit le nom de l’attribut qui définit l’intervalle de temps de requête. |
queryTimeIntervalDelimiter | Chaîne | Optionnel. Définit le délimiteur d’intervalle de temps de requête. |
queryWindowInMin | Nombre entier | Optionnel. Définit la fenêtre de requête disponible, en minutes. Valeur minimale : 5 |
queryParameters | Dictionnaire<chaîne, objet> | Optionnel. Définit les paramètres passés dans la requête sur le chemin eventsJsonPaths . Définissez la chaîne au format sérialisé dictionary<string, string> : {'<attr_name>': '<val>', '<attr_name>': '<val>'... } . |
queryParametersTemplate | Chaîne | Optionnel. Définit le modèle de paramètres de requête à utiliser lors du passage des paramètres de requête dans des scénarios avancés. Par exemple : "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" {_QueryWindowStartTime} et {_QueryWindowEndTime} sont uniquement pris en charge dans les paramètres de requête queryParameters et queryParametersTemplate . {_APIKeyName} et {_APIKey} sont uniquement pris en charge dans le queryParametersTemplate paramètre de requête. |
isPostPayloadJson | Booléen | Optionnel. Détermine si la charge utile POST est au format JSON. |
rateLimitQPS | Double | Optionnel. Définit le nombre d’appels ou de requêtes autorisés en une seconde. |
timeoutInSeconds | Nombre entier | Optionnel. Définit le délai d’expiration de la requête, en secondes. |
retryCount | Nombre entier | Optionnel. Définit le nombre de nouvelles tentatives de requête à essayer si nécessaire. |
headers | Chaîne de<dictionnaire, objet> | Optionnel. Définit la valeur d’en-tête de requête, au format sérialisé dictionary<string, object> : {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
Configuration de réponse
La response
section de la configuration pollingConfig inclut les paramètres suivants :
Le code suivant montre un exemple de valeur eventsJsonPaths pour un message de niveau supérieur :
"eventsJsonPaths": [
"$"
]
Configuration de pagination
La paging
section de la configuration pollingConfig inclut les paramètres suivants :
Nom | Catégorie | Description |
---|---|---|
pagingType | Chaîne | Obligatoire. Détermine le type de pagination à utiliser dans les résultats, comme l’une des valeurs suivantes : None , , LinkHeader NextPageToken , , NextPageUrl ,Offset |
linkHeaderTokenJsonPath | Chaîne | Optionnel. Définit le chemin JSON pour lier l’en-tête dans le JSON de réponse, si LinkHeader n’est pas défini dans l’en-tête de réponse. |
nextPageTokenJsonPath | Chaîne | Optionnel. Définit le chemin d’accès à un jeton JSON de la page suivante. |
hasNextFlagJsonPath | Chaîne | Optionnel. Définit le chemin d’accès à l’attribut d’indicateur HasNextPage . |
nextPageTokenResponseHeader | Chaîne | Optionnel. Définit le nom d’en-tête du jeton de page suivant dans la réponse. |
nextPageParaName | Chaîne | Optionnel. Détermine le nom de la page suivante dans la requête. |
nextPageRequestHeader | Chaîne | Optionnel. Détermine le nom d’en-tête de page suivant dans la requête. |
nextPageUrl | Chaîne | Optionnel. Détermine l’URL de la page suivante , si elle est différente de l’URL de la requête initiale. |
nextPageUrlQueryParameters | Chaîne | Optionnel. Détermine les paramètres de requête de l’URL de la page suivante s’il est différent de l’URL de la requête initiale. Définissez la chaîne au format sérialisé dictionary<string, object> : {'<attr_name>': <val>, '<attr_name>': <val>... } |
offsetParaName | Chaîne | Optionnel. Définit le nom du paramètre de décalage. |
pageSizeParaName | Chaîne | Optionnel. Définit le nom du paramètre de taille de page. |
Taille de la Page | Nombre entier | Définit la taille de pagination. |
Exemple de code pollingConfig
Le code suivant montre un exemple de section pollingConfig
du fichier de configuration 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": [
"$"
]
}
}
Déployer votre connecteur dans Microsoft Sentinel et commencer à ingérer des données
Après avoir créé votre fichier de configuration JSON, y compris l’interface utilisateur et la configuration d’interrogation , déployez votre connecteur dans votre espace de travail Microsoft Sentinel.
Utilisez l’une des options suivantes pour déployer votre connecteur de données.
Conseil / Astuce
L’avantage du déploiement via un modèle Azure Resource Manager (ARM) est que plusieurs valeurs sont intégrées au modèle et que vous n’avez pas besoin de les définir manuellement dans un appel d’API.
Mettez vos collections de configuration JSON dans un modèle ARM pour déployer votre connecteur. Pour vous assurer que votre connecteur de données est déployé sur l’espace de travail approprié, veillez à définir l’espace de travail dans le modèle ARM ou à sélectionner l’espace de travail lors du déploiement du modèle ARM.
Préparez un fichier JSON de modèle ARM pour votre connecteur. Par exemple, consultez les fichiers JSON de modèle ARM suivants :
- Connecteur de données dans la solution Slack
- Connecteur de données dans la solution GitHub
Dans le portail Azure, recherchez Déployer un modèle personnalisé.
Dans la page Déploiement personnalisé, sélectionnez Générer votre propre modèle dans lefichier de chargement de l’éditeur>. Accédez à votre modèle ARM local et sélectionnez-le, puis enregistrez vos modifications.
Sélectionnez votre abonnement et votre groupe de ressources, puis entrez l’espace de travail Log Analytics dans lequel vous souhaitez déployer votre connecteur personnalisé.
Sélectionnez Vérifier + créer pour déployer votre connecteur personnalisé sur Microsoft Sentinel.
Dans Microsoft Sentinel, accédez à la page Connecteurs de données , recherchez votre nouveau connecteur. Configurez-le pour commencer à ingérer des données.
Pour plus d’informations, consultez Déployer un modèle local dans la documentation Azure Resource Manager.
Configurez votre connecteur de données pour connecter votre source de données et commencer à ingérer des données dans Microsoft Sentinel. Vous pouvez vous connecter à votre source de données via le portail, comme avec les connecteurs de données prêtes à l’emploi ou via l’API.
Lorsque vous utilisez le portail Azure pour vous connecter, les données utilisateur sont envoyées automatiquement. Lorsque vous vous connectez via l’API, vous devez envoyer les paramètres d’authentification appropriés dans l’appel d’API.
Dans votre page de connecteur de données Microsoft Sentinel, suivez les instructions que vous avez fournies pour vous connecter à votre connecteur de données.
La page du connecteur de données dans Microsoft Sentinel est contrôlée par la configuration InstructionSteps dans l’élément
connectorUiConfig
du fichier de configuration CCP JSON . Si vous rencontrez des problèmes avec la connexion de l’interface utilisateur, vérifiez que vous disposez de la configuration appropriée pour votre type d’authentification.Dans Microsoft Sentinel, accédez à la page Journaux et vérifiez que les journaux de votre source de données sont transférés vers votre espace de travail.
Si vous ne voyez pas les données qui circulent dans Microsoft Sentinel, consultez la documentation de votre source de données et les ressources de dépannage, vérifiez les détails de la configuration et vérifiez la connectivité. Pour plus d’informations, consultez Superviser l’intégrité de vos connecteurs de données.
Déconnecter votre connecteur
Si vous n’avez plus besoin des données de votre connecteur, déconnectez le connecteur pour arrêter le flux de données.
Utilisez l’une des méthodes suivantes :
Portail Azure : dans votre page de connecteur de données Microsoft Sentinel, sélectionnez Déconnecter.
API : Utilisez l’API DISCONNECT pour envoyer un appel PUT avec un corps vide à l’URL suivante :
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
Étapes suivantes
Si vous ne l’avez pas encore fait, partagez votre nouveau connecteur de données sans code avec la communauté Microsoft Sentinel ! Créez une solution pour votre connecteur de données et partagez-la dans la Place de marché Microsoft Sentinel.
Pour plus d'informations, consultez la rubrique