Skip to content

Commit 661bb75

Browse files
authored
Merge pull request #287237 from austinmccollum/main
updating CCP docs
2 parents 5919daa + 43f5b35 commit 661bb75

File tree

5 files changed

+214
-39
lines changed

5 files changed

+214
-39
lines changed

articles/sentinel/TOC.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1117,8 +1117,10 @@
11171117
href: dns-ama-fields.md
11181118
- name: Data connector definitions API reference
11191119
href: data-connector-ui-definitions-reference.md
1120-
- name: Data connectors API reference
1120+
- name: RestApiPoller data connectors API reference
11211121
href: data-connector-connection-rules-reference.md
1122+
- name: GCP data connectors API reference
1123+
href: data-connection-rules-reference-gcp.md
11221124
- name: Sample API requests for creating Data Collection Rules (DCRs)
11231125
href: api-dcr-reference.md
11241126
- name: Microsoft Purview Information Protection reference

articles/sentinel/create-codeless-connector.md

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Learn how to create a codeless connector in Microsoft Sentinel usin
44
author: austinmccollum
55
ms.author: austinmc
66
ms.topic: how-to
7-
ms.date: 06/26/2024
7+
ms.date: 09/26/2024
88
---
99
# Create a codeless connector for Microsoft Sentinel
1010

@@ -71,7 +71,7 @@ We recommend testing your components with an API testing tool like one of the fo
7171
7272
## Build the data connector
7373

74-
There are 4 components required to build the CCP data connector.
74+
There are four components required to build the CCP data connector.
7575

7676
1. [Output table definition](#output-table-definition)
7777
1. [Data Collection Rule (DCR)](#data-collection-rule)
@@ -119,22 +119,18 @@ Build the data connector user interface with the [**Data Connector Definition**
119119
Notes:
120120
1) The `kind` property for API polling connector should always be `Customizable`.
121121
2) Since this is a type of API polling connector, set the `connectivityCriteria` type to `hasDataConnectors`
122-
3) The example `instructionsSteps` include a button of type `ConnectionToggleButton`. This button helps trigger the deployment of data connector rules based on the connection parameters specified.
122+
3) The example `instructionSteps` include a button of type `ConnectionToggleButton`. This button helps trigger the deployment of data connector rules based on the connection parameters specified.
123123

124124
Use an [API testing tool](#testing-apis) to call the data connector definitions API to create the data connector UI in order to validate it in the data connectors gallery.
125125

126126
To learn from an example, see the [Data connector definitions reference example section](data-connector-ui-definitions-reference.md#example-data-connector-definition).
127127

128128
### Data connection rules
129129

130-
This portion defines the connection rules including:
131-
- polling
132-
- authentication
133-
- paging
130+
There are currently two kinds of data connection rules possible for defining your CCP data connector.
134131

135-
For more information on building this section, see the [Data connector connection rules reference](data-connector-connection-rules-reference.md).
136-
137-
To learn from an example, see the [Data connector connection rules reference example](data-connector-connection-rules-reference.md#example-ccp-data-connector).
132+
- `RestApiPoller` kind allows you to customize paging, authorization and expected request/response payloads for your data source. For more information, see [RestApiPoller data connector connection rules reference](data-connector-connection-rules-reference.md).
133+
- `GCP` kind allows you to decrease your development time by automatically configuring paging and expected response payloads for your Google Cloud Platform (GCP) data source. For more information, see [GCP data connector connection rules reference](data-connection-rules-reference-gcp.md)
138134

139135
Use an [API testing tool](#testing-apis) to call the data connector API to create the data connector which combines the connection rules and previous components. Verify the connector is now connected in the UI.
140136

@@ -216,17 +212,24 @@ Finally, the CCP utilizes the credential objects in the data connector section.
216212

217213
## Create the deployment template
218214

219-
Manually package an Azure Resource Management (ARM) template using the [example template code samples](#example-arm-template) as your guide. These code samples are divided by ARM template sections for you to splice together.
215+
Manually package an Azure Resource Management (ARM) template using the [example template code samples](#example-arm-template) as your guide. These code samples are divided by ARM template sections which you must splice together.
216+
217+
If you're creating a Google Cloud Platform (GCP) CCP data connector, package the deployment template using the [example GCP CCP template](https://github.com/austinmccollum/Azure-Sentinel/blob/patch-5/DataConnectors/Templates/Connector_GCP_CCP_template.json). For information on how to fill out the GCP CCP template, see [GCP data connector connection rules reference](data-connection-rules-reference-gcp.md).
220218

221-
In addition to the example template, published solutions available in the Microsoft Sentinel content hub use the CCP for their data connector. Review the following solutions as more examples of how to stitch the components together into an ARM template.
219+
In addition to the example templates, published solutions available in the Microsoft Sentinel content hub use the CCP for their data connectors. Review the following solutions as more examples of how to stitch the components together into an ARM template.
222220

221+
**`RestApiPoller`** CCP data connector examples
223222
- [Ermes Browser Security](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Ermes%20Browser%20Security/Data%20Connectors/ErmesBrowserSecurityEvents_ccp)
224223
- [Palo Alto Prisma Cloud CWPP](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Palo%20Alto%20Prisma%20Cloud%20CWPP/Data%20Connectors/PaloAltoPrismaCloudCWPP_ccp)
225224
- [Sophos Endpoint Protection](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Sophos%20Endpoint%20Protection/Data%20Connectors/SophosEP_ccp)
226225
- [Workday](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Workday/Data%20Connectors/Workday_ccp)
227226
- [Atlassian Jira](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/AtlassianJiraAudit/Data%20Connectors/JiraAuditAPISentinelConnector_ccpv2)
228227
- [Okta Single Sign-On](https://github.com/Azure/Azure-Sentinel/tree/master/Solutions/Okta%20Single%20Sign-On/Data%20Connectors/OktaNativePollerConnectorV2)
229228

229+
**`GCP`** CCP data connector examples
230+
- [GCP audit logs](https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Google%20Cloud%20Platform%20Audit%20Logs/Package/mainTemplate.json)
231+
- [GCP security command center](https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/Google%20Cloud%20Platform%20Security%20Command%20Center/Package/mainTemplate.json)
232+
230233
## Deploy the connector
231234

232235
Deploy your codeless connector as a custom template.
@@ -901,7 +904,7 @@ There are 5 ARM deployment resources in this template guide which house the 4 CC
901904
}
902905
```
903906

904-
## Next steps
907+
## Related content
905908

906909
For more information, see
907910
- [About Microsoft Sentinel solutions](sentinel-solutions.md).

articles/sentinel/create-custom-connector.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
---
2-
title: Resources for creating Microsoft Sentinel custom connectors | Microsoft Docs
2+
title: Resources for creating Microsoft Sentinel custom connectors
33
description: Learn about available resources for creating custom connectors for Microsoft Sentinel. Methods include the Log Analytics agent and API, Logstash, Logic Apps, PowerShell, and Azure Functions.
4-
author: limwainstein
4+
author: austinmccollum
55
ms.topic: conceptual
6-
ms.date: 01/09/2023
7-
ms.author: lwainstein
6+
ms.date: 09/26/2024
7+
ms.author: austinmc
88
---
99

1010
# Resources for creating Microsoft Sentinel custom connectors
1111

12-
Microsoft Sentinel provides a wide range of [built-in connectors for Azure services and external solutions](connect-data-sources.md), and also supports ingesting data from some sources without a dedicated connector.
12+
Microsoft Sentinel provides a wide range of [out-of-the-box connectors for Azure services and external solutions](connect-data-sources.md), and also supports ingesting data from some sources without a dedicated connector.
1313

1414
If you're unable to connect your data source to Microsoft Sentinel using any of the existing solutions available, consider creating your own data source connector.
1515

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
---
2+
title: GCP data connector reference for the Codeless Connector Platform
3+
titleSuffix: Microsoft Sentinel
4+
description: This article provides reference JSON fields and properties for creating the GCP data connector type and its data connection rules as part of the Codeless Connector Platform.
5+
services: sentinel
6+
author: austinmccollum
7+
ms.topic: reference
8+
ms.date: 9/30/2024
9+
ms.author: austinmc
10+
11+
---
12+
13+
# GCP data connector reference for the Codeless Connector Platform
14+
15+
To create a Google Cloud Platform (GCP) data connector with the Codeless Connector Platform (CCP), use this reference as a supplement to the [Microsoft Sentinel REST API for Data Connectors](/rest/api/securityinsights/data-connectors/create-or-update?view=rest-securityinsights-2024-01-01-preview&tabs=HTTP#gcpdataconnector&preserve-view=true) docs.
16+
17+
Each `dataConnector` represents a specific *connection* of a Microsoft Sentinel data connector. One data connector might have multiple connections, which fetch data from different endpoints. The JSON configuration built using this reference document is used to complete the deployment template for the CCP data connector.
18+
19+
For more information, see [Create a codeless connector for Microsoft Sentinel](create-codeless-connector.md#create-the-deployment-template).
20+
21+
## Build the GCP CCP data connector
22+
23+
A sample GCP CCP data connector deployment template is available [here](https://github.com/austinmccollum/Azure-Sentinel/blob/patch-5/DataConnectors/Templates/Connector_GCP_CCP_template.json) to ease the development of connecting your data source. With most of the deployment template sections filled out, only the first two components need to be built. For more information on building the first two components, see the [Output table definition](create-codeless-connector.md#output-table-definition) and [Data Collection Rule (DCR)](create-codeless-connector.md#data-collection-rule) sections.
24+
25+
## Data Connectors - Create or update
26+
27+
Reference the [Create or Update](/rest/api/securityinsights/data-connectors/create-or-update) operation in the REST API docs to find the latest stable or preview API version. The difference between the *create* and the *update* operation is the update requires the **etag** value.
28+
29+
**PUT** method
30+
```http
31+
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectors/{{dataConnectorId}}?api-version={{apiVersion}}
32+
```
33+
34+
## URI parameters
35+
36+
For more information about the latest API version, see [Data Connectors - Create or Update URI Parameters](/rest/api/securityinsights/data-connectors/create-or-update#uri-parameters).
37+
38+
|Name | Description |
39+
|---------|---------|
40+
| **dataConnectorId** | The data connector ID must be a unique name and is the same as the `name` parameter in the [request body](#request-body).|
41+
| **resourceGroupName** | The name of the resource group, not case sensitive. |
42+
| **subscriptionId** | The ID of the target subscription. |
43+
| **workspaceName** | The *name* of the workspace, not the ID.<br>Regex pattern: `^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$` |
44+
| **api-version** | The API version to use for this operation. |
45+
46+
## Request body
47+
48+
The request body for a `GCP` CCP data connector has the following structure:
49+
50+
```json
51+
{
52+
"name": "{{dataConnectorId}}",
53+
"kind": "GCP",
54+
"etag": "",
55+
"properties": {
56+
"connectorDefinitionName": "",
57+
"auth": {},
58+
"request": {},
59+
"dcrConfig": ""
60+
}
61+
}
62+
63+
```
64+
65+
### GCP
66+
67+
**GCP** represents a CCP data connector where the paging and expected response payloads for your Google Cloud Platform (GCP) data source has already been configured. Configuring your GCP service to send data to a GCP Pub/Sub must be done separately. For more information, see [Publish message in Pub/Sub overview](https://cloud.google.com/pubsub/docs/publish-message-overview).
68+
69+
| Name | Required | Type | Description |
70+
| ---- | ---- | ---- | ---- |
71+
| **name** | True | string | The unique name of the connection matching the URI parameter |
72+
| **kind** | True | string | Must be `GCP` |
73+
| **etag** | | GUID | Leave empty for creation of new connectors. For update operations, the etag must match the existing connector's etag (GUID). |
74+
| properties.connectorDefinitionName | | string | The name of the DataConnectorDefinition resource that defines the UI configuration of the data connector. For more information, see [Data Connector Definition](create-codeless-connector.md#data-connector-user-interface). |
75+
| properties.**auth** | True | Nested JSON | Describes the credentials for polling the GCP data. For more information, see [authentication configuration](#authentication-configuration). |
76+
| properties.**request** | True | Nested JSON | Describes the GCP project Id and GCP subscription for polling the data. For more information, see [request configuration](#request-configuration). |
77+
| properties.**dcrConfig** | | Nested JSON | Required parameters when the data is sent to a Data Collection Rule (DCR). For more information, see [DCR configuration](#dcr-configuration). |
78+
79+
## Authentication configuration
80+
81+
Authentication to GCP from Microsoft Sentinel uses a GCP Pub/Sub. You must configure the authentication separately. Use the Terraform scripts [here](https://github.com/Azure/Azure-Sentinel/blob/master/DataConnectors/GCP/Terraform/sentinel_resources_creation/GCPInitialAuthenticationSetup/GCPInitialAuthenticationSetup.tf). For more information, see [GCP Pub/Sub authentication from another cloud provider](https://cloud.google.com/docs/authentication/provide-credentials-adc#wlif).
82+
83+
As a best practice, use parameters in the auth section instead of hard-coding credentials. For more information, see [Secure confidential input](create-codeless-connector.md#secure-confidential-input).
84+
85+
In order to create the deployment template which also uses parameters, you need to escape the parameters in this section with an extra starting `[`. This allows the parameters to assign a value based on the user interaction with the connector. For more information, see [Template expressions escape characters](../azure-resource-manager/templates/template-expressions.md#escape-characters).
86+
87+
To enable the credentials to be entered from the UI, the `connectorUIConfig` section requires `instructions` with the desired parameters. For more information, see [Data connector definitions reference for the Codeless Connector Platform](data-connector-ui-definitions-reference.md#instructions).
88+
89+
GCP auth example:
90+
```json
91+
"auth": {
92+
"serviceAccountEmail": "[[parameters('GCPServiceAccountEmail')]",
93+
"projectNumber": "[[parameters('GCPProjectNumber')]",
94+
"workloadIdentityProviderId": "[[parameters('GCPWorkloadIdentityProviderId')]"
95+
}
96+
```
97+
98+
## Request configuration
99+
100+
The request section requires the `projectId` and `subscriptionNames` from the GCP Pub/Sub.
101+
102+
GCP request example:
103+
```json
104+
"request": {
105+
"projectId": "[[parameters('GCPProjectId')]",
106+
"subscriptionNames": [
107+
"[[parameters('GCPSubscriptionName')]"
108+
]
109+
}
110+
```
111+
112+
## DCR configuration
113+
114+
| Field | Required | Type | Description |
115+
|----|----|----|----|
116+
| **DataCollectionEndpoint** | True | String | DCE (Data Collection Endpoint) for example: `https://example.ingest.monitor.azure.com`. |
117+
| **DataCollectionRuleImmutableId** | True | String | The DCR immutable ID. Find it by viewing the DCR creation response or using the [DCR API](/rest/api/monitor/data-collection-rules/get) |
118+
| **StreamName** | True | string | This value is the `streamDeclaration` defined in the DCR (prefix must begin with *Custom-*) |
119+
120+
## Example CCP data connector
121+
122+
Here's an example of all the components of the `GCP` CCP data connector JSON together.
123+
124+
```json
125+
{
126+
"kind": "GCP",
127+
"properties": {
128+
"connectorDefinitionName": "[[parameters('connectorDefinitionName')]",
129+
"dcrConfig": {
130+
"streamName": "[variables('streamName')]",
131+
"dataCollectionEndpoint": "[[parameters('dcrConfig').dataCollectionEndpoint]",
132+
"dataCollectionRuleImmutableId": "[[parameters('dcrConfig').dataCollectionRuleImmutableId]"
133+
},
134+
"dataType": "[variables('dataType')]",
135+
"auth": {
136+
"serviceAccountEmail": "[[parameters('GCPServiceAccountEmail')]",
137+
"projectNumber": "[[parameters('GCPProjectNumber')]",
138+
"workloadIdentityProviderId": "[[parameters('GCPWorkloadIdentityProviderId')]"
139+
},
140+
"request": {
141+
"projectId": "[[parameters('GCPProjectId')]",
142+
"subscriptionNames": [
143+
"[[parameters('GCPSubscriptionName')]"
144+
]
145+
}
146+
}
147+
}
148+
```
149+
150+
For more information, see [Create GCP data connector REST API example](/rest/api/securityinsights/data-connectors/create-or-update?view=rest-securityinsights-2024-01-01-preview&tabs=HTTP#creates-or-updates-a-gcp-data-connector&preserve-view=true).

0 commit comments

Comments
 (0)