코드리스 커넥터 플랫폼에 대한 데이터 커넥터 정의 참조
CCP(Codeless Connector Platform)를 사용하여 데이터 커넥터를 만들려면 이 문서를 Microsoft Sentinel REST API for Data Connector Definitions 참조 문서의 보완으로 사용합니다. 특히 이 참조 문서는 다음 섹션에서 확장됩니다.
connectorUiConfig
- Microsoft Sentinel의 데이터 커넥터 페이지에 표시되는 시각적 요소 및 텍스트를 정의합니다.
자세한 내용은 코드 없는 커넥터 만들기를 참조 하세요.
데이터 커넥터 정의 - 만들기 또는 업데이트
REST API 문서에서 만들기 또는 업데이트 작업을 참조하여 안정적인 최신 또는 미리 보기 API 버전을 찾습니다. 작업에만 update
값이 etag
필요합니다.
PUT 메서드
https://management.azure.com/subscriptions/{{subscriptionId}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.OperationalInsights/workspaces/{{workspaceName}}/providers/Microsoft.SecurityInsights/dataConnectorDefinitions/{{dataConnectorDefinitionName}}?api-version={{apiVersion}}
URI 매개 변수
최신 API 버전 에 대한 자세한 내용은 데이터 커넥터 정의 - URI 매개 변수 만들기 또는 업데이트
속성 | 설명 |
---|---|
dataConnectorDefinitionName | 데이터 커넥터 정의는 고유한 이름이어야 하며 요청 본문의 name 매개 변수와 동일합니다. |
resourceGroupName | 대/소문자를 구분하지 않는 리소스 그룹의 이름입니다. |
subscriptionId | 대상 구독의 ID입니다. |
workspaceName | ID가 아닌 작업 영역의 이름입니다. Regex 패턴: ^[A-Za-z0-9][A-Za-z0-9-]+[A-Za-z0-9]$ |
api-version | 이 작업에 사용할 API 버전입니다. |
요청 본문
API를 사용하여 CCP 데이터 커넥터 정의를 만들기 위한 요청 본문에는 다음과 같은 구조가 있습니다.
{
"kind": "Customizable",
"properties": {
"connectorUIConfig": {}
}
}
dataConnectorDefinition 에는 다음과 같은 속성이 있습니다.
속성 | 필수 | Type | 설명 |
---|---|---|---|
종류 | True | 문자열 | Customizable API 폴링 데이터 커넥터의 경우 또는 Static 그렇지 않은 경우 |
속성.connectorUiConfig | True | 중첩된 JSON connectorUiConfig |
데이터 커넥터의 UI 구성 속성 |
커넥터의 사용자 인터페이스 구성
이 섹션에서는 데이터 커넥터 페이지의 사용자 인터페이스를 사용자 지정하는 데 사용할 수 있는 구성 옵션에 대해 설명합니다.
다음 스크린샷은 사용자 인터페이스의 주목할 만한 영역에 해당하는 숫자로 강조 표시된 샘플 데이터 커넥터 페이지를 보여 줍니다.
사용자 인터페이스를 구성하는 데 필요한 섹션의 connectorUiConfig
다음 각 요소는 API의 CustomizableConnectorUiConfig 부분에 해당합니다.
필드 | 필수 | Type | 설명 | 스크린샷 주목할 만한 영역 # |
---|---|---|---|---|
title | True | string | 데이터 커넥터 페이지에 표시되는 제목 | 1 |
id | string | 내부 사용에 대한 사용자 지정 커넥터 ID 설정 | ||
로고 | string | SVG 형식의 이미지 파일 경로입니다. 값이 구성되지 않은 경우 기본 로고가 사용됩니다. | 2 | |
publisher | True | string | 커넥터의 공급자 | 3 |
descriptionMarkdown | True | markdown의 문자열 | markdown 언어를 추가하여 기능을 향상할 수 있는 커넥터에 대한 설명입니다. | 4 |
sampleQueries | True | 중첩된 JSON sampleQueries |
고객이 이벤트 로그에서 데이터를 찾는 방법을 이해하기 위한 쿼리입니다. | |
graphQueries | True | 중첩된 JSON graphQueries |
지난 2주 동안의 데이터 수집을 제공하는 쿼리입니다. 모든 데이터 커넥터의 데이터 형식에 대해 하나의 쿼리를 제공하거나 각 데이터 형식에 대해 다른 쿼리를 제공합니다. |
5 |
graphQueriesTableName | 커넥터에서 데이터를 삽입하는 테이블의 이름을 설정합니다. 이 이름은 자리 표시자 및 lastDataReceivedQuery 값을 지정하여 {{graphQueriesTableName}} 다른 쿼리에서 graphQueries 사용할 수 있습니다. |
|||
dataTypes | True | 중첩된 JSON dataTypes |
커넥터의 모든 데이터 형식 목록 및 각 데이터 형식에 대한 마지막 이벤트의 시간을 가져오는 쿼리입니다. | 6 |
connectivityCriteria | True | 중첩된 JSON connectivityCriteria |
커넥터가 연결되어 있는지 확인하는 방법을 정의하는 개체입니다. | 7 |
permissions | True | 중첩된 JSON permissions |
커넥터를 사용하거나 사용하지 않도록 설정하는 데 필요한 권한을 나열하는 UI의 필수 구성 요소 섹션 아래에 표시되는 정보입니다. | 8 |
instructionSteps | True | 중첩된 JSON 지침 |
커넥터를 설치하는 방법과 지침 탭에 표시되는 실행 가능한 컨트롤을 설명하는 위젯 파트의 배열입니다 . | 9 |
connectivityCriteria
필드 | 필수 | Type | 설명 |
---|---|---|---|
Type | True | 문자열 | 다음 두 가지 옵션 중 하나: HasDataConnectors – 이 값은 CCP와 같은 API 폴링 데이터 커넥터에 가장 적합합니다. 커넥터는 하나 이상의 활성 연결로 연결된 것으로 간주됩니다.isConnectedQuery – 이 값은 다른 유형의 데이터 커넥터에 가장 적합합니다. 커넥터는 제공된 쿼리가 데이터를 반환할 때 연결된 것으로 간주됩니다. |
값 | True이면 형식이 입니다 isConnectedQuery |
문자열 | 특정 기간 내에 데이터가 수신되는지 여부를 확인하는 쿼리입니다. 예: CommonSecurityLog | where DeviceVendor == \"Vectra Networks\"\n| where DeviceProduct == \"X Series\"\n | summarize LastLogReceived = max(TimeGenerated)\n | project IsConnected = LastLogReceived > ago(7d)" |
dataTypes
배열 값 | Type | Description |
---|---|---|
이름 | 문자열 | 변수에 대한lastDataReceivedQuery 지원을 포함하여 의미 있는 설명입니다 graphQueriesTableName . 예: {{graphQueriesTableName}} |
lastDataReceivedQuery | 문자열 | 한 행을 반환하고 데이터를 마지막으로 받은 시간을 나타내거나 결과가 없는 경우 데이터가 없음을 나타내는 KQL 쿼리입니다. 예: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
지난 2주 동안의 데이터 수집을 표시하는 쿼리를 정의합니다.
모든 데이터 커넥터의 데이터 형식에 대해 하나의 쿼리를 제공하거나 각 데이터 형식에 대해 다른 쿼리를 제공합니다.
배열 값 | Type | 설명 |
---|---|---|
metricName | 문자열 | 그래프의 의미 있는 이름입니다. 예: Total data received |
legend | 문자열 | 변수 참조를 포함하여 차트 오른쪽의 범례에 나타나는 문자열입니다. 예: {{graphQueriesTableName}} |
baseQuery | 문자열 | 변수 참조를 포함하여 관련 이벤트를 필터링하는 쿼리입니다. 예: TableName_CL | where ProviderName == "myprovider" 또는 {{graphQueriesTableName}} |
permissions
배열 값 | Type | 설명 |
---|---|---|
customs | 문자열 | 데이터 연결에 필요한 모든 사용자 지정 권한을 다음 구문으로 설명합니다. { "name": string, "description": string} 예: customs 값은 Microsoft Sentinel 필수 구성 요소 섹션에 파란색 정보 아이콘이 표시됩니다. GitHub 예제에서 이 값은 GitHub API 개인 토큰 키 줄 과 관련이 있습니다. GitHub 개인 토큰에 액세스해야 합니다... |
라이선스 | ENUM | 다음 값 중 하나로 필수 라이선스를 정의합니다. OfficeIRM ,OfficeATP , Office365 , AadP1P2 , Mcas , Aatp , Mdatp , Mtp , IoT 예: licenses 값은 Microsoft Sentinel에서 라이선스: 필수 Azure AD Premium P2로 표시됩니다. |
resourceProvider | resourceProvider | Azure 리소스에 대한 필수 구성 요소를 설명합니다. 예: resourceProvider 값은 다음과 같이 Microsoft Sentinel 필수 구성 요소 섹션에 표시됩니다. 작업 영역: 읽기 및 쓰기 권한이 필요합니다. 키: 작업 영역의 공유 키에 대한 읽기 권한이 필요합니다. |
테넌트 | ENUM 값의 배열 예시: "tenant": [ "GlobalADmin", "SecurityAdmin" ] |
다음 값 중 하나 이상으로 필수 권한을 정의합니다. "GlobalAdmin" , "SecurityAdmin" , "SecurityReader" , "InformationProtection" 예: Microsoft Sentinel에서 tenant 값을 다음과 같이 표시합니다. 테넌트 사용 권한: 작업 영역의 테넌트에 Global Administrator 또는 Security Administrator 필요 |
Important
가장 적은 권한으로 역할을 사용하는 것이 좋습니다. 이렇게 하면 조직의 보안을 개선하는 데 도움이 됩니다. 전역 관리자는 기존 역할을 사용할 수 없는 경우 긴급 시나리오로 제한해야 하는 높은 권한 있는 역할입니다.
resourceProvider
하위 배열 값 | Type | 설명 |
---|---|---|
provider | ENUM | 다음 값 중 하나를 사용하여 리소스 공급자를 설명합니다. - Microsoft.OperationalInsights/workspaces - Microsoft.OperationalInsights/solutions - Microsoft.OperationalInsights/workspaces/datasources - microsoft.aadiam/diagnosticSettings - Microsoft.OperationalInsights/workspaces/sharedKeys - Microsoft.Authorization/policyAssignments |
providerDisplayName | 문자열 | 필수 구성 요소 아래의 목록 항목으로, 커넥터 페이지에서 필수 구성 요소의 유효성을 검사할 때 빨간색 "x" 또는 녹색 확인 표시가 표시됩니다. 본보기 "Workspace" |
permissionsDisplayText | 문자열 | requiredPermissions에 구성된 값에 해당하는 읽기, 쓰기 또는 읽기 및 쓰기 권한에 대한 텍스트를 표시합니다. |
requiredPermissions | { "action": 부울, "delete": 부울, "read": 부울, "write": 부울} |
커넥터에 필요한 최소 사용 권한을 설명합니다. |
범위 | ENUM | 데이터 커넥터의 범위를 "Subscription" , "ResourceGroup" , "Workspace" 값 중 하나로 설명합니다. |
sampleQueries
배열 값 | Type | 설명 |
---|---|---|
description | 문자열 | 샘플 쿼리에 대한 의미 있는 설명입니다. 예: Top 10 vulnerabilities detected |
query | 문자열 | 데이터 형식의 데이터를 가져오는 데 사용되는 샘플 쿼리입니다. 예: {{graphQueriesTableName}}\n | sort by TimeGenerated\n | take 10 |
다른 링크 옵션 구성
markdown을 사용하여 인라인 링크를 정의하려면 다음 예제를 사용합니다.
{
"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)"
}
링크를 ARM 템플릿으로 정의하려면 다음 예제를 지침으로 사용합니다.
{
"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})"
}
instructionSteps
이 섹션에서는 Microsoft Sentinel의 데이터 커넥터 페이지에 표시되고 다음 구조를 포함하는 명령 집합을 정의하는 매개 변수를 제공합니다.
"instructionSteps": [
{
"title": "",
"description": "",
"instructions": [
{
"type": "",
"parameters": {}
}
],
"innerSteps": {}
}
]
배열 속성 | 필수 | Type | 설명 |
---|---|---|---|
title | 문자열 | 지침의 제목을 정의합니다. | |
description | 문자열 | 지침에 대한 의미 있는 설명을 정의합니다. | |
innerSteps | 배열 | 내부 명령어 단계의 배열을 정의합니다. | |
지침 | True | 명령의 배열 | 특정 매개 변수 형식의 명령 배열을 정의합니다. |
지침
다양한 매개 변수와 더 많은 instructionSteps를 그룹에 중첩하는 기능을 사용하여 명령 그룹을 표시합니다. 여기에 정의된 매개 변수는 해당합니다.
Type | 배열 속성 | 설명 |
---|---|---|
OAuthForm | OAuthForm | OAuth를 사용하여 연결 |
입력란 | 입력란 | 이 쌍은 .와 쌍을 이 ConnectionToggleButton 깁니다. 사용 가능한 형식은 4가지입니다.password text number email |
ConnectionToggleButton | ConnectionToggleButton | 자리 표시자 매개 변수를 통해 제공된 연결 정보를 기반으로 DCR의 배포를 트리거합니다. 지원되는 매개 변수는 다음과 같습니다.name :필수disabled isPrimary connectLabel disconnectLabel |
CopyableLabel | CopyableLabel | 끝에 복사 단추가 있는 텍스트 필드를 표시합니다. 단추를 선택하면 필드 값이 복사됩니다. |
InfoMessage | InfoMessage | 인라인 정보 메시지를 정의합니다. |
InstructionStepsGroup | InstructionStepsGroup | 필요에 따라 확장되거나 축소 가능한 명령 그룹을 별도의 지침 섹션에 표시합니다. |
InstallAgent | InstallAgent | 다양한 설치 요구 사항을 충족하기 위해 Azure의 다른 부분에 대한 링크를 표시합니다. |
OAuthForm
이 구성 요소를 사용하려면 형식이 OAuth2
데이터 커넥터 템플릿의 속성에 있어야 auth
합니다.
"instructions": [
{
"type": "OAuthForm",
"parameters": {
"clientIdLabel": "Client ID",
"clientSecretLabel": "Client Secret",
"connectButtonLabel": "Connect",
"disconnectButtonLabel": "Disconnect"
}
}
]
입력란
다음은 형식의 몇 가지 예입니다 Textbox
. 이러한 예제는 Codeless Connector Platform에 대한 데이터 커넥터 참조의 예제 auth
섹션에서 사용되는 매개 변수에 해당합니다. 각 4가지 형식에 대해 각각에는 label
, placeholder
및 name
.
"instructions": [
{
"type": "Textbox",
"parameters": {
{
"label": "User name",
"placeholder": "User name",
"type": "text",
"name": "username"
}
}
},
{
"type": "Textbox",
"parameters": {
"label": "Secret",
"placeholder": "Secret",
"type": "password",
"name": "password"
}
}
]
ConnectionToggleButton
"instructions": [
{
"type": "ConnectionToggleButton",
"parameters": {
"connectLabel": "toggle",
"name": "toggle"
}
}
]
CopyableLabel
예시:
샘플 코드:
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Here are some values you'll need to proceed.",
"value": "Workspace is {0} and PrimaryKey is {1}"
},
"type": "CopyableLabel"
}
배열 값 | 필수 | Type | 설명 |
---|---|---|---|
fillWith | ENUM | 자리 표시자를 채우는 데 사용되는 환경 변수의 배열입니다. 여러 자리 표시자를 쉼표로 구분합니다. 예: {0},{1} 지원되는 값은 workspaceId , workspaceName , primaryKey , MicrosoftAwsAccount , subscriptionId 입니다. |
|
label | True | 문자열 | 텍스트 상자 위의 레이블에 대한 텍스트를 정의합니다. |
value | True | 문자열 | 텍스트 상자에 표시할 값을 정의하고 자리 표시자를 지원합니다. |
rows | 행 | 사용자 인터페이스 영역의 행을 정의합니다. 기본적으로 1로 설정됩니다. | |
wideLabel | Boolean | 긴 문자열에 대한 넓은 레이블을 결정합니다. 기본적으로 false 로 설정됩니다. |
InfoMessage
인라인 정보 메시지의 예는 다음과 같습니다.
반면, 다음 이미지는 인라인이 아닌 정보 메시지를 보여줍니다.
배열 값 | Type | 설명 |
---|---|---|
text | 문자열 | 메시지에 표시할 텍스트를 정의합니다. |
visible | 부울 | 메시지를 표시할지 여부를 결정합니다. |
inline | 부울 | 정보 메시지가 표시되는 방식을 결정합니다. - true : (권장) 지침에 포함된 정보 메시지를 표시합니다. - false : 파란색 백그라운드를 추가합니다. |
InstructionStepsGroup
확장 가능한 명령 그룹의 예는 다음과 같습니다.
배열 값 | 필수 | Type | 설명 |
---|---|---|---|
title | True | 문자열 | 지침 단계의 제목을 정의합니다. |
description | 문자열 | 선택적 설명 텍스트입니다. | |
canCollapseAllSections | Boolean | 섹션이 축소 가능한 아코디언인지 여부를 결정합니다. | |
noFxPadding | Boolean | true 인 경우 공간을 절약하기 위해 높이 패딩을 줄입니다. |
|
expanded | Boolean | true 인 경우 기본적으로 확장된 것으로 표시됩니다. |
자세한 예제는 Windows DNS 커넥터에 대한 구성 JSON을 참조하세요.
InstallAgent
일부 InstallAgent 형식은 단추로 표시되며 다른 유형은 링크로 표시됩니다. 다음은 두 가지에 대한 예입니다.
배열 값 | 필수 | Type | 설명 |
---|---|---|---|
linkType | True | ENUM | 다음 값 중 하나로 연결 종류를 결정합니다. InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall OpenMicrosoftAzureMonitoring OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | linkType을 사용하는 OpenPolicyAssignment 경우 True입니다. |
문자열 | 정책 기반 커넥터의 경우 기본 제공 정책 정의의 GUID를 정의합니다. |
assignMode | ENUM | 정책 기반 커넥터의 경우 할당 모드를 Initiative , Policy 값 중 하나로 정의합니다. |
|
dataCollectionRuleType | ENUM | DCR 기반 커넥터의 경우 데이터 수집 규칙 형식의 형식을 또는 .로 SecurityEvent ForwardEvent 정의합니다. |
예제 데이터 커넥터 정의
다음 예제에서는 이 문서에 정의된 일부 구성 요소를 JSON 본문 형식으로 결합하여 데이터 만들기 또는 업데이트 커넥터 정의 API와 함께 사용합니다.
다른 CCP 데이터 커넥터를 검토하는 connectorUiConfig
더 많은 예제를 보려면 레거시 CCP를 사용하는 커넥터에도 UI 만들기의 유효한 예가 있습니다.
{
"kind": "Customizable",
"properties": {
"connectorUiConfig": {
"title": "Example CCP Data Connector",
"publisher": "My Company",
"descriptionMarkdown": "This is an example of data connector",
"graphQueriesTableName": "ExampleConnectorAlerts_CL",
"graphQueries": [
{
"metricName": "Alerts received",
"legend": "My data connector alerts",
"baseQuery": "{{graphQueriesTableName}}"
},
{
"metricName": "Events received",
"legend": "My data connector events",
"baseQuery": "ASIMFileEventLogs"
}
],
"sampleQueries": [
{
"description": "All alert logs",
"query": "{{graphQueriesTableName}} \n | take 10"
}
],
"dataTypes": [
{
"name": "{{graphQueriesTableName}}",
"lastDataReceivedQuery": "{{graphQueriesTableName}} \n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
},
{
"name": "ASIMFileEventLogs",
"lastDataReceivedQuery": "ASIMFileEventLogs \n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time)"
}
],
"connectivityCriteria": [
{
"type": "HasDataConnectors"
}
],
"permissions": {
"resourceProvider": [
{
"provider": "Microsoft.OperationalInsights/workspaces",
"permissionsDisplayText": "Read and Write permissions are required.",
"providerDisplayName": "Workspace",
"scope": "Workspace",
"requiredPermissions": {
"write": true,
"read": true,
"delete": true
}
},
],
"customs": [
{
"name": "Example Connector API Key",
"description": "The connector API key username and password is required"
}
]
},
"instructionSteps": [
{
"title": "Connect My Connector to Microsoft Sentinel",
"description": "To enable the connector provide the required information below and click on Connect.\n>",
"instructions": [
{
"type": "Textbox",
"parameters": {
"label": "User name",
"placeholder": "User name",
"type": "text",
"name": "username"
}
},
{
"type": "Textbox",
"parameters": {
"label": "Secret",
"placeholder": "Secret",
"type": "password",
"name": "password"
}
},
{
"type": "ConnectionToggleButton",
"parameters": {
"connectLabel": "toggle",
"name": "toggle"
}
}
]
}
]
}
}
}