중요합니다
이제 많은 어플라이언스 및 디바이스의 로그 수집이 Microsoft Sentinel의 AMA를 통한 CEF(Common Event Format), AMA를 통한 Syslog 또는 AMA 데이터 커넥터를 통한 사용자 지정 로그에서 지원됩니다. 자세한 내용은 Microsoft Sentinel 데이터 커넥터 찾기를 참조하세요.
중요합니다
최신 버전의 CCP(Codeless Connector Platform)가 있습니다. 새 CCP에 대한 자세한 내용은 코드 없는 커넥터 만들기(미리 보기)를 참조하세요.
이 이전 레거시 버전의 CCP를 기반으로 데이터 커넥터를 유지 관리하거나 업데이트해야 하는 경우 이 문서를 참조하세요.
CCP는 파트너, 고급 사용자 및 개발자에게 사용자 지정 커넥터를 만들고, 연결하고, Microsoft Sentinel에 데이터를 수집할 수 있는 기능을 제공합니다. CCP를 통해 만든 커넥터는 API, ARM 템플릿 또는 Microsoft Sentinel 콘텐츠 허브의 솔루션으로 배포할 수 있습니다.
CCP를 사용하여 만든 커넥터는 서비스 설치에 대한 요구 사항 없이 완전히 SaaS이며 Microsoft Sentinel의 상태 모니터링 및 전폭적인 지원을 포함합니다.
Microsoft Sentinel의 데이터 커넥터 페이지 모양에 대한 설정과 연결이 작동하는 방식을 정의하는 폴링 설정을 사용하여 JSON 구성을 정의하여 데이터 커넥터를 만듭니다.
중요합니다
이 버전의 CCP(Codeless Connector Platform)는 미리 보기로 제공되며 레거시로도 간주됩니다. Azure Preview 추가 약관에는 베타, 미리 보기 또는 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 추가 법률 용어가 포함되어 있습니다.
다음 단계를 사용하여 CCP 커넥터를 만들고 Microsoft Sentinel에서 데이터 원본에 연결합니다.
- 커넥터의 사용자 인터페이스 구성
- 커넥터의 폴링 옵션을 설정하십시오
- Microsoft Sentinel 작업 영역에 커넥터 배포
- Microsoft Sentinel을 데이터 원본에 연결하고 데이터 수집 시작
이 문서에서는 API, ARM 템플릿 또는 Microsoft Sentinel 솔루션을 통해 커넥터를 배포하기 위한 CCP JSON 구성 및 절차에 사용되는 구문을 설명합니다.
필수 조건
커넥터를 빌드하기 전에 데이터 원본의 동작 방식과 Microsoft Sentinel을 연결하는 방법을 정확하게 이해하는 것이 좋습니다.
예를 들어 성공적인 연결에 필요한 인증, 페이지 매김 및 API 엔드포인트 유형을 알아야 합니다.
커넥터 JSON 구성 파일 만들기
사용자 지정 CCP 커넥터에는 배포에 필요한 두 개의 기본 JSON 섹션이 있습니다. 이러한 영역을 입력하여 커넥터가 Azure Portal에 표시되는 방법과 Microsoft Sentinel을 데이터 원본에 연결하는 방법을 정의합니다.
connectorUiConfig; Microsoft Sentinel의 데이터 커넥터 페이지에 표시되는 시각적 요소 및 텍스트를 정의합니다. 자세한 내용은 커넥터의 사용자 인터페이스 구성을 참조하세요.pollingConfig; Microsoft Sentinel이 데이터 원본에서 데이터를 수집하는 방법을 정의합니다. 자세한 내용은 커넥터의 폴링 설정 구성을 참조하세요.
그런 다음 ARM을 통해 코드 없는 커넥터를 배포하는 경우 데이터 커넥터에 대한 ARM 템플릿에서 이러한 섹션을 래핑합니다.
다른 CCP 데이터 커넥터를 예제로 검토하거나 예제 템플릿 DataConnector_API_CCP_template.json(미리 보기)를 다운로드합니다.
커넥터의 사용자 인터페이스 구성
이 섹션에서는 데이터 커넥터 페이지의 사용자 인터페이스를 사용자 지정하는 데 사용할 수 있는 구성 옵션에 대해 설명합니다.
다음 이미지는 사용자 인터페이스의 주목할 만한 영역에 해당하는 숫자로 강조 표시된 샘플 데이터 커넥터 페이지를 보여 줍니다.
- 제목입니다. 데이터 커넥터에 대해 표시되는 제목입니다.
- 로고. 데이터 커넥터에 대해 표시되는 아이콘입니다. 이 사용자 지정은 솔루션의 일부로 배포할 때만 가능합니다.
- 상태. 데이터 커넥터가 Microsoft Sentinel에 연결되어 있는지 여부를 나타냅니다.
- 데이터 차트. 관련 쿼리와 지난 2주 동안 수집된 데이터의 양을 표시합니다.
- 지침 탭. 사용자가 커넥터를 사용하도록 설정하기 전에 최소한의 유효성 검사 목록과 커넥터의 사용자 사용을 안내하는 지침이 포함된 필수 구성 요소 섹션이 포함되어 있습니다. 이 섹션에는 프로세스를 간소화하기 위해 텍스트, 단추, 폼, 테이블 및 기타 일반적인 위젯이 포함될 수 있습니다.
- 다음 단계 탭 샘플 쿼리와 같이 이벤트 로그에서 데이터를 찾는 방법을 이해하는 데 유용한 정보가 포함되어 있습니다.
사용자 인터페이스를 connectorUiConfig 구성하는 데 필요한 섹션 및 구문은 다음과 같습니다.
| 속성 이름 | 유형 | 설명 |
|---|---|---|
| 가용도 | {"status": 1,"isPreview": 부울} |
상태: 1 커넥터가 일반적으로 고객에게 제공됨을 나타냅니다. isPreview 커넥터 이름에 접미사를 포함할지(미리 보기) 여부를 나타냅니다. |
| 연결성 기준 | {"type": SentinelKindsV2,"value": APIPolling} |
커넥터가 올바르게 정의되었는지 확인하는 방법을 정의하는 개체입니다. 여기에 표시된 값을 사용합니다. |
| dataTypes | dataTypes[] | 커넥터의 모든 데이터 형식 목록 및 각 데이터 형식에 대한 마지막 이벤트의 시간을 가져오는 쿼리입니다. |
| descriptionMarkdown | 문자열 | 이를 향상시키기 위해 markdown 언어를 추가할 수 있는 커넥터에 대한 설명입니다. |
| graphQueries | graphQueries[] | 데이터 차트 창에서 지난 2주 동안의 데이터 수집을 표시하는 쿼리입니다. 모든 데이터 커넥터의 데이터 형식에 대해 하나의 쿼리를 제공하거나 각 데이터 형식에 대해 다른 쿼리를 제공합니다. |
| graphQueriesTableName | 문자열 | 쿼리에 대한 데이터를 끌어올 Log Analytics 테이블의 이름을 정의합니다. 테이블 이름은 어떤 문자열로든 지정할 수 있지만 반드시 _CL로 끝나야 합니다. 예: TableName_CL |
| instructionsSteps | instructionSteps[] | 지침 탭에 표시되는 커넥터를 설치하는 방법을 설명하는 위젯 파트의 배열 입니다 . |
| metadata | metadata | 커넥터 설명 아래에 표시되는 메타데이터입니다. |
| 권한 | permissions[] | 커넥터를 사용하거나 사용하지 않도록 설정하는 데 필요한 권한을 나열하는 UI의 필수 구성 요소 섹션 아래에 표시되는 정보입니다. |
| 게시자 | 문자열 | 공급자 섹션에 표시된 텍스트입니다. |
| sampleQueries | sampleQueries[] | 고객이 다음 단계 탭에 표시할 이벤트 로그에서 데이터를 찾는 방법을 이해하기 위한 샘플 쿼리입니다. |
| 타이틀 | 문자열 | 데이터 커넥터 페이지에 표시되는 제목입니다. |
이 모든 조각을 함께 배치하는 것은 복잡합니다. 커넥터 페이지 사용자 환경 유효성 검사 도구를 사용하여 함께 배치한 구성 요소를 테스트합니다.
데이터 유형
| 배열 값 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 변수에 대한lastDataReceivedQuery 지원을 포함하여 의미 있는 설명입니다. 예: {{graphQueriesTableName}} |
| 마지막데이터수신쿼리 | 문자열 | 한 행을 반환하고 데이터를 마지막으로 받은 시간을 나타내거나 관련 데이터가 없는 경우 데이터가 없음을 나타내는 KQL 쿼리입니다. 예: {{graphQueriesTableName}}\n | summarize Time = max(TimeGenerated)\n | where isnotempty(Time) |
graphQueries
데이터 차트 창에서 지난 2주 동안의 데이터 수집을 표시하는 쿼리를 정의합니다.
모든 데이터 커넥터의 데이터 형식에 대해 하나의 쿼리를 제공하거나 각 데이터 형식에 대해 다른 쿼리를 제공합니다.
| 배열 값 | 유형 | 설명 |
|---|---|---|
| metricName | 문자열 | 그래프의 의미 있는 이름입니다. 예: Total data received |
| 전설 | 문자열 | 차트 오른쪽 범례에 표시되는 문자열에는 변수 참조가 포함됩니다. 예: {{graphQueriesTableName}} |
| baseQuery | 문자열 | 변수 참조를 포함하여 관련 이벤트를 필터링하는 쿼리입니다. 예: TableName_CL | where ProviderName == "myprovider" 또는 {{graphQueriesTableName}} |
instructionSteps
이 섹션에서는 Microsoft Sentinel의 데이터 커넥터 페이지에 표시되는 지침 집합을 정의하는 매개 변수를 제공합니다.
| Array 속성 | 유형 | 설명 |
|---|---|---|
| 타이틀 | 문자열 | 선택 사항입니다. 지침에 대한 제목을 정의합니다. |
| 묘사 | 문자열 | 선택 사항입니다. 지침에 대한 의미 있는 설명을 정의합니다. |
| innerSteps | 배열 | 선택 사항입니다. 내부 명령 단계의 배열을 정의합니다. |
| 지침 | 지침 배열 | 필수 사항입니다. 특정 매개 변수 형식의 명령 배열을 정의합니다. |
| bottomBorder | 불리언 (Boolean) | 선택 사항입니다. Microsoft Sentinel의 커넥터 페이지에서 지침 영역에 아래쪽 테두리를 추가하는 경우 true |
| 곧 출시 예정 | 불리언 (Boolean) | 선택 사항입니다. Microsoft Sentinel의 커넥터 페이지에 출시 예정 제목을 추가하는 경우 true |
지침
다양한 옵션을 매개 변수로 사용하고 더 많은 instructionSteps를 그룹에 중첩할 수 있는 명령 그룹을 표시합니다.
| 매개 변수 | 배열 속성 | 설명 |
|---|---|---|
| APIKey | APIKey | 커넥터의 JSON 구성 파일에 자리 표시자를 추가합니다. |
| CopyableLabel | 복사할 수 있는 레이블 | 끝에 복사 단추가 있는 텍스트 필드를 표시합니다. 단추를 선택하면 필드 값이 복사됩니다. |
| InfoMessage | InfoMessage | 인라인 정보 메시지를 정의합니다. |
| InstructionStepsGroup | InstructionStepsGroup | 필요에 따라 확장되거나 축소 가능한 명령 그룹을 별도의 지침 섹션에 표시합니다. |
| InstallAgent | InstallAgent | 다양한 설치 요구 사항을 달성하기 위해 Azure의 다른 부분에 대한 링크를 표시합니다. |
APIKey
자리 표시자 매개 변수를 사용하여 JSON 구성 파일 템플릿을 만들어 여러 커넥터에서 다시 사용하거나 현재 없는 데이터로 커넥터를 만들 수도 있습니다.
자리 표시자 매개 변수를 만들려면 다음 구문을 사용하여 CCP JSON 구성 파일의 지침 섹션에 명명된 userRequestPlaceHoldersInput 추가 배열을 정의합니다.
"instructions": [
{
"parameters": {
"enable": "true",
"userRequestPlaceHoldersInput": [
{
"displayText": "Organization Name",
"requestObjectKey": "apiEndpoint",
"placeHolderName": "{{placeHolder}}"
}
]
},
"type": "APIKey"
}
]
매개 변수에는 userRequestPlaceHoldersInput 다음 특성이 포함됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| DisplayText | 문자열 | 연결할 때 사용자에게 표시되는 텍스트 상자 표시 값을 정의합니다. |
| RequestObjectKey | 문자열 | 자리 표시자 값을 사용자가 제공한 값으로 대체하도록 pollingConfig 의 요청 섹션에서 ID를 정의합니다. 이 특성을 사용하지 않는 경우 특성을 대신 사용합니다 PollingKeyPaths . |
| PollingKeyPaths | 문자열 | 자리 표시자 값을 사용자 값으로 바꾸기 위해 템플릿의 아무 곳이나 API 호출을 지시하는 JsonPath 개체의 배열을 정의합니다. 예: "pollingKeyPaths":["$.request.queryParameters.test1"] 이 특성을 사용하지 않는 경우 특성을 대신 사용합니다 RequestObjectKey . |
| PlaceHolderName | 문자열 | JSON 템플릿 파일에서 자리 표시자 매개 변수의 이름을 정의합니다. 이 값은 다음과 같은 {{placeHolder}}고유한 값일 수 있습니다. |
복사 가능한 라벨
예제:
샘플 코드:
{
"parameters": {
"fillWith": [
"WorkspaceId",
"PrimaryKey"
],
"label": "Here are some values you'll need to proceed.",
"value": "Workspace is {0} and PrimaryKey is {1}"
},
"type": "CopyableLabel"
}
| 배열 값 | 유형 | 설명 |
|---|---|---|
| 채우기 | 열거형 | 선택 사항입니다. 자리 표시자를 채우는 데 사용되는 환경 변수의 배열입니다. 여러 자리 표시자를 쉼표로 구분하십시오. 예: {0},{1} 지원되는 값: workspaceId, workspaceName, primaryKey, MicrosoftAwsAccountsubscriptionId |
| label | 문자열 | 텍스트 상자 위의 레이블에 대한 텍스트를 정의합니다. |
| 값 | 문자열 | 텍스트 상자에 표시할 값을 정의하고 자리 표시자를 지원합니다. |
| rows | 행 | 선택 사항입니다. 사용자 인터페이스 영역의 행을 정의합니다. 기본적으로 1로 설정합니다. |
| wideLabel | 불리언 (Boolean) | 선택 사항입니다. 긴 문자열에 대한 와이드 레이블을 결정합니다. 기본적으로 false로 설정됩니다. |
InfoMessage
인라인 정보 메시지의 예는 다음과 같습니다.
반면에, 다음 이미지는 인라인이 아닌 정보 메시지를 보여줍니다.
| 배열 값 | 유형 | 설명 |
|---|---|---|
| 문자 메시지 | 문자열 | 메시지에 표시할 텍스트를 정의합니다. |
| 보이는 | 불리언 (Boolean) | 메시지가 표시되는지 여부를 확인합니다. |
| 인라인 | 불리언 (Boolean) | 정보 메시지가 표시되는 방법을 결정합니다. - true: (권장) 지침에 포함된 정보 메시지를 표시합니다. - false: 파란색 배경을 추가합니다. |
InstructionStepsGroup
확장 가능한 명령 그룹의 예는 다음과 같습니다.
| 배열 값 | 유형 | 설명 |
|---|---|---|
| 타이틀 | 문자열 | 명령 단계의 제목을 정의합니다. |
| canCollapseAllSections | 불리언 (Boolean) | 선택 사항입니다. 섹션이 접을 수 있는 아코디언인지 여부를 결정합니다. |
| noFxPadding | 불리언 (Boolean) | 선택 사항입니다.
true이면 공간을 절약하기 위해 높이 안쪽 여백을 줄입니다. |
| 확장 | 불리언 (Boolean) | 선택 사항입니다. 이면 true기본적으로 확장된 것으로 표시됩니다. |
자세한 예제는 Windows DNS 커넥터에 대한 구성 JSON을 참조하세요.
InstallAgent
일부 InstallAgent 형식은 단추로 표시되며 다른 유형은 링크로 표시됩니다. 다음은 두 가지 예입니다.
| 배열 값 | 유형 | 설명 |
|---|---|---|
| 링크 유형 | 열거형 | 다음 값 중 하나로 링크 형식을 결정합니다. InstallAgentOnWindowsVirtualMachineInstallAgentOnWindowsNonAzureInstallAgentOnLinuxVirtualMachineInstallAgentOnLinuxNonAzureOpenSyslogSettingsOpenCustomLogsSettingsOpenWafOpenAzureFirewall
OpenMicrosoftAzureMonitoring
OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
| policyDefinitionGuid | 문자열 | OpenPolicyAssignment linkType을 사용할 때 필요합니다. 정책 기반 커넥터의 경우 기본 제공 정책 정의의 GUID를 정의합니다. |
| assignMode | 열거형 | 선택 사항입니다. 정책 기반 커넥터의 경우 할당 모드를 다음 값 Initiative중 하나로 정의합니다. Policy |
| 데이터 수집 규칙 유형 | 열거형 | 선택 사항입니다. DCR 기반 커넥터의 경우 데이터 수집 규칙 형식을 다음 SecurityEvent중 하나로 정의합니다. ForwardEvent |
메타데이터
이 섹션에서는 설명 영역 아래의 데이터 커넥터 UI에 메타데이터를 제공합니다.
| 컬렉션 값 | 유형 | 설명 |
|---|---|---|
| 종류 | 문자열 | 만드는 ARM 템플릿의 종류를 정의합니다. 항상 dataConnector를 사용합니다. |
| 원본 | 문자열 | 다음 구문을 사용하여 데이터 원본에 대해 설명합니다. {"kind":문자열"name":문자열} |
| 작성자 | 문자열 | 다음 구문을 사용하여 데이터 커넥터 작성자를 설명합니다. {"name":문자열} |
| 지원 | 문자열 | 다음 구문을 사용하여 데이터 커넥터에 제공된 지원을 설명합니다. {"tier":문자열"name":문자열"email":문자열"link":URL 문자열} |
권한
| 배열 값 | 유형 | 설명 |
|---|---|---|
| 세관 | 문자열 | 다음 구문에서 데이터 연결에 필요한 사용자 지정 권한을 설명합니다. {"name":문자열,"description":문자열} 예: 세관 값은 파란색 정보 아이콘이 있는 Microsoft Sentinel 필수 구성 요소 섹션에 표시됩니다. GitHub 예제에서 이는 GitHub API 개인 토큰 키 줄과 관련이 있습니다. GitHub 개인 토큰에 액세스해야 합니다... |
| licenses | 열거형 | 필요한 라이선스를 다음 Office365MtpOfficeATPMdatpAadP1P2AatpMcas값 OfficeIRM중 하나로 정의합니다.IoT 예: 라이선스 값이 Microsoft Sentinel에 다음과 같이 표시됩니다. 라이선스: 필수 Azure AD Premium P2 |
| resourceProvider | resourceProvider | Azure 리소스에 대한 모든 필수 구성 요소를 설명합니다. 예: resourceProvider 값은 Microsoft Sentinel 필수 구성 요소 섹션에 다음과 같이 표시됩니다. 작업 영역: 읽기 및 쓰기 권한이 필요합니다. 키: 작업 영역에 대한 공유 키에 대한 읽기 권한이 필요합니다. |
| 테넌트 | ENUM 값의 배열 예제: "tenant": ["GlobalADmin","SecurityAdmin"] |
필요한 권한을 다음 값 "GlobalAdmin""SecurityAdmin""SecurityReader"중 하나 이상으로 정의합니다."InformationProtection" 예: Microsoft Sentinel에서 테넌트 값을 다음과 같이 표시합니다: 테넌트 사용 권한: 작업 영역의 테넌트에 Global Administrator 또는 Security Administrator 권한이 필요합니다 |
자원 제공자
| 하위 배열 값 | 유형 | 설명 |
|---|---|---|
| 공급자 | 열거형 | 다음 값 중 하나를 사용하여 리소스 공급자에 대해 설명합니다. - Microsoft.OperationalInsights/workspaces - Microsoft.OperationalInsights/solutions- Microsoft.OperationalInsights/workspaces/datasources- microsoft.aadiam/diagnosticSettings- Microsoft.OperationalInsights/workspaces/sharedKeys- Microsoft.Authorization/policyAssignments |
| providerDisplayName | 문자열 | 필수 구성 요소 아래의 목록 항목으로, 커넥터 페이지에서 필수 구성 요소의 유효성을 검사할 때 빨간색 "x" 또는 녹색 확인 표시가 표시됩니다. 예시 "Workspace" |
| 권한표시텍스트 | 문자열 | requiredPermissions에 구성된 값에 해당하는 읽기, 쓰기 또는 읽기 및 쓰기 권한에 대한 텍스트 표시 |
| requiredPermissions | {"action":불리언,"delete":불린,"read":불리언,"write":불리언} |
커넥터에 필요한 최소 사용 권한을 설명합니다. |
| 범위 | 열거형 | 데이터 커넥터의 범위를 다음 값 "Subscription""ResourceGroup"중 하나로 설명합니다."Workspace" |
샘플 질의
| 배열 값 | 유형 | 설명 |
|---|---|---|
| 묘사 | 문자열 | 샘플 쿼리에 대한 의미 있는 설명입니다. 예: Top 10 vulnerabilities detected |
| 쿼리 | 문자열 | 데이터 형식의 데이터를 가져오는 데 사용되는 샘플 쿼리입니다. 예: {{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[]({URL to custom ARM template})"
}
데이터 커넥터 페이지 사용자 환경의 유효성 검사
다음 단계에 따라 커넥터 사용자 환경을 렌더링하고 유효성을 검사합니다.
- 이 URL을 통해 테스트 유틸리티에 액세스할 수 있습니다. https://aka.ms/sentineldataconnectorvalidateurl
- Microsoft Sentinel -> 데이터 커넥터로 이동
- "가져오기" 단추를 클릭하고 데이터 커넥터의 섹션만 포함된
connectorUiConfigjson 파일을 선택합니다.
이 유효성 검사 도구에 대한 자세한 내용은 GitHub 빌드 가이드의 커넥터 빌드 지침을 참조하세요.
비고
APIKey 명령 매개 변수는 코드리스 커넥터에서 사용하는 것이므로, 유효성 검사 도구를 사용하기 위해 이 섹션을 일시적으로 제거하지 않으면 검증이 실패할 수 있습니다.
커넥터의 폴링 설정을 구성하기
이 섹션에서는 코드 없는 데이터 커넥터에 대한 데이터 원본에서 데이터를 폴링하는 방법에 대한 구성을 설명합니다.
다음 코드는 CCP 구성 파일의 pollingConfig 섹션의 구문을 보여줍니다.
"pollingConfig": {
"auth": {
},
"request": {
},
"response": {
},
"paging": {
}
}
섹션에는 pollingConfig 다음 속성이 포함됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| auth | 문자열 | 데이터 폴링을 위한 인증 속성을 설명합니다. 자세한 내용은 인증 구성을 참조하세요. |
| auth.authType | 문자열 | 필수. 개체 내부에 auth 중첩된 인증 유형을 다음 값 BasicAPIKey중 하나로 정의합니다.OAuth2 |
| 요청 | 중첩된 JSON | 필수. API 엔드포인트와 같은 데이터 폴링을 위한 요청 페이로드를 설명합니다. 자세한 내용은 요청 구성을 참조하세요. |
| response | 중첩된 JSON | 필수. 데이터를 폴링할 때 API에서 반환된 응답 개체 및 중첩 메시지를 설명합니다. 자세한 내용은 응답 구성을 참조하세요. |
| 페이징 | 중첩된 JSON | 선택 사항입니다. 데이터를 폴링할 때 페이지 처리 페이로드를 설명합니다. 자세한 내용은 페이징 구성을 참조하세요. |
자세한 내용은 Sample pollingConfig 코드를 참조하세요.
인증 구성
pollingConfig 구성의 섹션에는 authauthType 요소에 정의된 형식에 따라 다음 매개 변수가 포함됩니다.
기본 authType 매개 변수
| 이름 | 유형 | 설명 |
|---|---|---|
| 사용자 이름 | 문자열 | 필수. 사용자 이름을 정의합니다. |
| 암호 | 문자열 | 필수. 사용자 암호를 정의합니다. |
APIKey authType 매개 변수
| 이름 | 유형 | 설명 |
|---|---|---|
| APIKeyName | 문자열 | 선택 사항입니다. API 키의 이름을 다음 값 중 하나로 정의합니다. - XAuthToken - Authorization |
| IsAPIKeyInPostPayload | 불리언 (Boolean) | API 키가 정의된 위치를 결정합니다. True: API 키가 POST 요청 페이로드에 정의됨 False: API 키가 헤더에 정의됨 |
| APIKeyIdentifier | 문자열 | 선택 사항입니다. API 키의 식별자 이름을 정의합니다. 예를 들어 권한 부여가 정의된 "Authorization": "token <secret>"경우 이 매개 변수는 다음과 같이 정의됩니다. {APIKeyIdentifier: “token”}) |
OAuth2 authType 매개 변수
Codeless Connector Platform은 OAuth 2.0 인증 코드 부여를 지원합니다.
인증 코드 부여 형식은 기밀 및 공용 클라이언트가 액세스 토큰에 대한 인증 코드를 교환하는 데 사용됩니다.
사용자가 리디렉션 URL을 통해 클라이언트로 돌아온 후 애플리케이션은 URL에서 인증 코드를 가져와 이를 사용하여 액세스 토큰을 요청합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| FlowName | 문자열 | 필수. OAuth2 흐름을 정의합니다. 지원되는 값: AuthCode - 권한 부여 흐름 필요 |
| AccessToken | 문자열 | 선택 사항입니다. 액세스 토큰이 만료되지 않을 때 관련된 OAuth2 액세스 토큰을 정의합니다. |
| AccessTokenPrepend | 문자열 | 선택 사항입니다. OAuth2 액세스 토큰 앞에 추가할 내용을 정의합니다. 기본값은 Bearer입니다. |
| RefreshToken | 문자열 | OAuth2 인증 형식의 경우 필수입니다. OAuth2 리프레시 토큰을 정의합니다. |
| TokenEndpoint | 문자열 | OAuth2 인증 형식의 경우 필수입니다. OAuth2 토큰 서비스 엔드포인트를 정의합니다. |
| 인증엔드포인트 | 문자열 | 선택 사항입니다. OAuth2 권한 부여 서비스 엔드포인트를 정의합니다. 온보딩하는 동안 또는 새로 고침 토큰을 갱신하는 경우에만 사용됩니다. |
| 리다이렉션 엔드포인트 | 문자열 | 선택 사항입니다. 온보딩하는 동안 리디렉션 엔드포인트를 정의합니다. |
| 엑세스 토큰 만료 날짜 및 시간(UTC) | 문자열 | 선택 사항입니다. UTC 형식으로 액세스 토큰 만료 날짜/시간을 정의합니다. 액세스 토큰이 만료되지 않거나 만료 시간이 길어 UTC 기준으로 긴 날짜/시간을 가진 경우에 관련이 있습니다. |
| 갱신 토큰 만료 날짜 및 시간 (UTC 기준) | 문자열 | OAuth2 인증 형식의 경우 필수입니다. 새로 고침 토큰 만료 날짜/시간을 UTC 형식으로 정의합니다. |
| TokenEndpointHeaders | <사전 문자열, 개체> | 선택 사항입니다. OAuth2 토큰 서비스 엔드포인트를 호출할 때 헤더를 정의합니다. 직렬화된 dictionary<string, string> 형식으로 문자열을 정의합니다. {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
| AuthorizationEndpointHeaders | <사전 문자열, 개체> | 선택 사항입니다. OAuth2 권한 부여 서비스 엔드포인트를 호출할 때 헤더를 정의합니다. 온보딩하는 동안 또는 새로 고침 토큰을 갱신하는 경우에만 사용됩니다. 직렬화된 dictionary<string, object> 형식으로 문자열을 정의합니다. {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
| 인증 엔드포인트 쿼리 매개변수 | <딕셔너리<문자열, 개체> | 선택 사항입니다. OAuth2 권한 부여 서비스 엔드포인트를 호출할 때 쿼리 매개 변수를 정의합니다. 온보딩하는 동안 또는 새로 고침 토큰을 갱신하는 경우에만 사용됩니다. 직렬화된 dictionary<string, object> 형식으로 문자열을 정의합니다. {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
| TokenEndpointQueryParameters | <사전 문자열, 개체> | 선택 사항입니다. OAuth2 토큰 서비스 엔드포인트를 호출할 때 쿼리 매개 변수를 정의합니다. 직렬화된 dictionary<string, object> 형식으로 문자열을 정의합니다. {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ... } |
| IsTokenEndpointPostPayloadJson | 불리언 (Boolean) | 선택 사항, 기본값은 false입니다. 쿼리 매개 변수가 JSON 형식이고 요청 POST 페이로드에 설정되어 있는지 여부를 결정합니다. |
| IsClientSecretInHeader | 불리언 (Boolean) | 선택 사항, 기본값은 false입니다. 기본 인증 스키마에서 수행되는 것처럼, client_id와 client_secret 값이 POST 페이로드가 아닌 헤더에 정의되는지를 결정합니다. |
| RefreshTokenLifetimeinSecAttributeName (리프레시 토큰 수명(초단위) 속성명) | 문자열 | 선택 사항입니다. 토큰 엔드포인트 응답에서 특성 이름을 정의하여 새로 고침 토큰의 수명(초)을 지정합니다. |
| IsJwtBearerFlow | 불리언 (Boolean) | 선택 사항, 기본값은 false입니다. JWT를 사용하는지 여부를 결정합니다. |
| JwtHeaderInJson | <사전 문자열, 개체> | 선택 사항입니다. JSON 형식으로 JWT 헤더를 정의합니다. 직렬화된 dictionary<string, object> 형식으로 문자열을 정의합니다. {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...} |
| JwtClaimsInJson | <딕셔너리> 문자열, 객체> | 선택 사항입니다. JSON 형식으로 JWT 클레임을 정의합니다. 직렬화된 dictionary<string, object> 형식으로 문자열을 정의합니다. {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>, ...} |
| JwtPem | 문자열 | 선택 사항입니다. PEM Pkcs1 형식으로 비밀 키를 정의합니다. '-----BEGIN RSA PRIVATE KEY-----\r\n{privatekey}\r\n-----END RSA PRIVATE KEY-----\r\n''\r\n' 코드를 제자리에 유지해야 합니다. |
| RequestTimeoutInSeconds | 정수 | 선택 사항입니다. 토큰 서비스 엔드포인트를 호출할 때 시간 제한을 초 단위로 결정합니다. 기본값은 180초입니다. |
다음은 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"
},
Session authType 매개 변수
| 이름 | 유형 | 설명 |
|---|---|---|
| QueryParameters | <사전 문자열, 개체> | 선택 사항입니다. 직렬화된 dictionary<string, string> 형식의 쿼리 매개 변수 목록: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
| IsPostPayloadJson | 불리언 (Boolean) | 선택 사항입니다. 쿼리 매개 변수가 JSON 형식인지 여부를 확인합니다. |
| 헤더 | <사전 문자열, 개체> | 선택 사항입니다. 엔드포인트를 호출하여 세션 ID를 가져올 때와 엔드포인트 API를 호출할 때 사용되는 헤더를 정의합니다. 직렬화된 dictionary<string, string> 형식으로 문자열을 정의합니다. {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
| SessionTimeoutInMinutes | 문자열 | 선택 사항입니다. 세션 시간 제한을 분 단위로 정의합니다. |
| SessionIdName | 문자열 | 선택 사항입니다. 세션의 ID 이름을 정의합니다. |
| SessionLoginRequestUri | 문자열 | 선택 사항입니다. 세션 로그인 요청 URI를 정의합니다. |
구성 요청
pollingConfig 구성의 섹션에는 request 다음 매개 변수가 포함됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| apiEndpoint | 문자열 | 필수. 데이터를 가져올 엔드포인트를 정의합니다. |
| httpMethod | 문자열 | 필수. API 메서드를 정의합니다. GET 또는 POST |
| queryTimeFormat | String 또는 UnixTimestamp 또는 UnixTimestampInMills | 필수. 쿼리 시간을 정의하는 데 사용되는 형식을 정의합니다. 이 값은 문자열이거나 UnixTimestamp 또는 UnixTimestampInMills 형식으로 UnixTimestamp에서 쿼리 시작 및 종료 시간을 나타낼 수 있습니다. |
| startTimeAttributeName | 문자열 | 선택 사항입니다. 쿼리 시작 시간을 정의하는 특성의 이름을 정의합니다. |
| endTimeAttributeName | 문자열 | 선택 사항입니다. 쿼리 종료 시간을 정의하는 특성의 이름을 정의합니다. |
| queryTimeIntervalAttributeName | 문자열 | 선택 사항입니다. 쿼리 시간 간격을 정의하는 특성의 이름을 정의합니다. |
| queryTimeIntervalDelimiter | 문자열 | 선택 사항입니다. 쿼리 시간 간격 구분 기호를 정의합니다. |
| queryWindowInMin | 정수 | 선택 사항입니다. 사용 가능한 쿼리 창을 분 단위로 정의합니다. 최소값: 5 |
| queryParameters | <사전 문자열, 개체> | 선택 사항입니다. 쿼리에서 eventsJsonPaths 경로에 전달된 매개 변수를 정의합니다. 직렬화된 dictionary<string, string> 형식으로 문자열을 정의합니다 {'<attr_name>': '<val>', '<attr_name>': '<val>'... }. |
| 쿼리매개변수템플릿 | 문자열 | 선택 사항입니다. 고급 시나리오에서 쿼리 매개변수를 전달할 때 사용할 쿼리 매개변수 템플릿을 정의합니다. 예: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" {_QueryWindowStartTime} 및 {_QueryWindowEndTime} 요청 매개 변수에서 queryParametersqueryParametersTemplate 만 지원됩니다. {_APIKeyName}와 {_APIKey}는 queryParametersTemplate 요청 매개 변수에서만 지원됩니다. |
| isPostPayloadJson | 불리언 (Boolean) | 선택 사항입니다. POST 페이로드가 JSON 형식인지 여부를 결정합니다. |
| rateLimitQPS | 두 배 | 선택 사항입니다. 초당 허용되는 호출 또는 쿼리 수를 정의합니다. |
| timeoutInSeconds | 정수 | 선택 사항입니다. 요청 시간 초과를 초 단위로 정의합니다. |
| retryCount | 정수 | 선택 사항입니다. 필요한 경우 시도할 요청 재시도 횟수를 정의합니다. |
| headers | <딕셔너리>문자열, 객체> | 선택 사항입니다. serialize된 dictionary<string, object> 형식으로 요청 헤더 값을 정의합니다. {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
응답 구성
pollingConfig 구성의 섹션에는 response 다음 매개 변수가 포함됩니다.
다음 코드는 최상위 메시지에 대한 eventsJsonPaths 값의 예를 보여 줍니다.
"eventsJsonPaths": [
"$"
]
페이징 구성
pollingConfig 구성의 섹션에는 paging 다음 매개 변수가 포함됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 페이징 유형 | 문자열 | 필수. 결과에 사용할 페이징 유형을 다음 값 중 하나로 결정합니다NoneNextPageTokenLinkHeaderNextPageUrl.Offset |
| linkHeaderTokenJsonPath | 문자열 | 선택 사항입니다. 응답 헤더에 LinkHeader가 정의되지 않은 경우, 응답 JSON에서 헤더를 연결하기 위한 JSON 경로를 정의합니다. |
| nextPageTokenJsonPath | 문자열 | 선택 사항입니다. 다음 페이지 토큰 JSON에 대한 경로를 정의합니다. |
| hasNextFlagJsonPath | 문자열 | 선택 사항입니다. 플래그 특성의 HasNextPage 경로를 정의합니다. |
| 다음페이지토큰응답헤더 | 문자열 | 선택 사항입니다. 응답에서 다음 페이지 토큰 헤더 이름을 정의합니다. |
| nextPageParaName | 문자열 | 선택 사항입니다. 요청에서 다음 페이지 이름을 결정합니다. |
| nextPageRequestHeader | 문자열 | 선택 사항입니다. 요청에서 다음 페이지 헤더 이름을 결정합니다. |
| nextPageUrl | 문자열 | 선택 사항입니다. 초기 요청 URL과 다른 경우 다음 페이지 URL을 결정합니다. |
| 다음 페이지 URL 쿼리 매개변수 | 문자열 | 선택 사항입니다. 초기 요청의 URL과 다른 경우 다음 페이지 URL의 쿼리 매개 변수를 결정합니다. 직렬화된 dictionary<string, object> 형식으로 문자열을 정의합니다. {'<attr_name>': <val>, '<attr_name>': <val>... } |
| offsetParaName | 문자열 | 선택 사항입니다. 오프셋 매개 변수의 이름을 정의합니다. |
| pageSizeParaName | 문자열 | 선택 사항입니다. 페이지 크기 매개 변수의 이름을 정의합니다. |
| 페이지 크기 | 정수 | 페이징 크기를 정의합니다. |
pollingConfig 샘플 코드
다음 코드는 CCP 구성 파일의 pollingConfig 섹션 예제를 보여 주는 코드입니다.
"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": [
"$"
]
}
}
Microsoft Sentinel에 커넥터 배포 및 데이터 수집 시작
사용자 인터페이스 및 폴링 구성을 포함하여 JSON 구성 파일을 만든 후 Microsoft Sentinel 작업 영역에 커넥터를 배포합니다.
다음 옵션 중 하나를 사용하여 데이터 커넥터를 배포합니다.
팁 (조언)
ARM(Azure Resource Manager) 템플릿을 통해 배포하면 여러 값이 템플릿에 기본 제공되므로 API 호출에서 수동으로 정의할 필요가 없다는 장점이 있습니다.
ARM 템플릿에서 JSON 구성 컬렉션을 래핑하여 커넥터를 배포합니다. 데이터 커넥터가 올바른 작업 영역에 배포되도록 하려면 ARM 템플릿에서 작업 영역을 정의하거나 ARM 템플릿을 배포할 때 작업 영역을 선택해야 합니다.
커넥터에 대한 ARM 템플릿 JSON 파일을 준비합니다. 예를 들어 다음 ARM 템플릿 JSON 파일을 참조하세요.
- Slack 솔루션의 데이터 커넥터
- GitHub 솔루션의 데이터 커넥터
Azure Portal에서 사용자 지정 템플릿 배포를 검색합니다.
사용자 지정 배포 페이지의 편집기 >로드 파일에서 사용자 고유의 템플릿 빌드를선택합니다. 로컬 ARM 템플릿을 찾아 선택한 다음 변경 내용을 저장합니다.
구독 및 리소스 그룹을 선택한 다음, 사용자 지정 커넥터를 배포할 Log Analytics 작업 영역을 입력합니다.
검토 + 만들기를 선택하여 사용자 지정 커넥터를 Microsoft Sentinel에 배포합니다.
Microsoft Sentinel에서 데이터 커넥터 페이지로 이동하여 새 커넥터를 검색합니다. 데이터 수집을 시작하도록 구성합니다.
자세한 내용은 Azure Resource Manager 설명서에서 로컬 템플릿 배포 를 참조하세요.
데이터 원본을 연결하고 Microsoft Sentinel에 데이터 수집을 시작하도록 데이터 커넥터를 구성합니다. 기본 제공 데이터 커넥터와 마찬가지로 포털을 통해 또는 API를 통해 데이터 원본에 연결할 수 있습니다.
Azure Portal을 사용하여 연결하면 사용자 데이터가 자동으로 전송됩니다. API를 통해 연결하는 경우 API 호출에서 관련 인증 매개 변수를 보내야 합니다.
Microsoft Sentinel 데이터 커넥터 페이지에서 제공한 지침에 따라 데이터 커넥터에 연결합니다.
Microsoft Sentinel의 데이터 커넥터 페이지는 CCP JSON 구성 파일의 요소에 있는 InstructionSteps 구성에
connectorUiConfig의해 제어됩니다. 사용자 인터페이스 연결에 문제가 있는 경우 인증 유형에 대한 올바른 구성이 있는지 확인합니다.Microsoft Sentinel에서 로그 페이지로 이동하여 데이터 원본의 로그가 작업 영역으로 흐르는지 확인합니다.
Microsoft Sentinel로 데이터가 들어오지 않는 경우, 데이터 원본 설명서 및 문제 해결 리소스를 확인하고, 구성 세부 사항과 연결 상태를 확인하세요. 자세한 내용은 데이터 커넥터의 상태 모니터링을 참조하세요.
커넥터 연결 끊기
커넥터의 데이터가 더 이상 필요하지 않은 경우 커넥터의 연결을 끊어 데이터 흐름을 중지합니다.
다음 방법 중 하나를 사용하십시오.
Azure Portal: Microsoft Sentinel 데이터 커넥터 페이지에서 연결을 끊습니다.
API: DISCONNECT API를 사용하여 빈 본문이 있는 PUT 호출을 다음 URL로 보냅니다.
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
다음 단계
아직 하지 않으셨다면, 코드가 필요 없는 새 데이터 커넥터를 Microsoft Sentinel 커뮤니티와 공유하세요! 데이터 커넥터에 대한 솔루션을 만들고 Microsoft Sentinel Marketplace에서 공유합니다.
자세한 내용은 참조하세요.