[사용되지 않음] Microsoft Sentinel용 레거시 코드리스 커넥터 만들기
Important
이제 많은 어플라이언스 및 디바이스의 로그 수집이 Microsoft Sentinel의 AMA를 통한 CEF(Common Event Format), AMA를 통한 Syslog 또는 AMA 데이터 커넥터를 통한 사용자 지정 로그에서 지원됩니다. 자세한 내용은 Microsoft Sentinel 데이터 커넥터 찾기를 참조하세요.
Important
최신 버전의 CCP(코드리스 커넥터 플랫폼)가 있습니다. 새 CCP에 대한 자세한 내용은 코드리스 커넥터 만들기(미리 보기)를 참조하세요.
이 이전 레거시 버전의 CCP를 기반으로 데이터 커넥터를 유지 관리하거나 업데이트해야 하는 경우 이 문서를 참조하세요.
CCP는 파트너, 고급 사용자 및 개발자에게 사용자 지정 커넥터를 만들고 연결하고 Microsoft Sentinel에 데이터를 수집할 수 있는 기능을 제공합니다. CCP를 통해 만들어진 커넥터는 API, ARM 템플릿을 통해 배포하거나 Microsoft Sentinel 콘텐츠 허브의 솔루션으로 배포할 수 있습니다.
CCP를 사용하여 만들어진 커넥터는 서비스 설치 요구 사항이 없는 완전한 SaaS이며 상태 모니터링 및 Microsoft Sentinel의 전체 지원도 포함합니다.
Microsoft Sentinel의 데이터 커넥터 페이지 모양에 대한 설정과 연결이 작동하는 방식을 정의하는 폴링 설정을 사용하여 JSON 구성을 정의하여 데이터 커넥터를 만듭니다.
Important
이 버전의 CCP(코드리스 커넥터 플랫폼)는 미리 보기로 제공되지만 레거시 버전으로도 간주됩니다. Azure Preview 추가 약관에는 베타, 미리 보기 또는 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 추가 법률 용어가 포함되어 있습니다.
다음 단계에 따라 CCP 커넥터를 만들고 Microsoft Sentinel에서 데이터 원본에 연결합니다.
- 커넥터의 사용자 인터페이스 구성
- 커넥터의 폴링 설정 구성
- Microsoft Sentinel 작업 영역에 커넥터 배포
- Microsoft Sentinel을 데이터 원본에 연결하고 데이터 수집 시작
이 문서에서는 CCP JSON 구성에 사용되는 구문과 API, ARM 템플릿 또는 Microsoft Sentinel 솔루션을 통해 커넥터를 배포하는 절차에 대해 설명합니다.
필수 조건
커넥터를 빌드하기 전에 데이터 원본이 작동하는 방식과 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": 부울} |
status: 1 커넥터가 고객에게 일반 공급됨을 나타냅니다. isPreview 커넥터 이름에 (미리 보기) 접미사를 포함할지 여부를 나타냅니다. |
connectivityCriteria | { "type": SentinelKindsV2, "value": APIPolling } |
커넥터가 올바르게 정의되었는지 확인하는 방법을 정의하는 개체입니다. 여기에 표시된 값을 사용합니다. |
dataTypes | dataTypes[] | 커넥터의 모든 데이터 형식 목록 및 각 데이터 형식에 대한 마지막 이벤트의 시간을 가져오는 쿼리입니다. |
descriptionMarkdown | 문자열 | markdown 언어를 추가하여 기능을 향상할 수 있는 커넥터에 대한 설명입니다. |
graphQueries | graphQueries[] | 데이터 차트 창에서 지난 2주 동안의 데이터 수집을 나타내는 쿼리입니다. 모든 데이터 커넥터의 데이터 형식에 대해 하나의 쿼리를 제공하거나 각 데이터 형식에 대해 다른 쿼리를 제공합니다. |
graphQueriesTableName | 문자열 | 쿼리에 대한 데이터를 가져오는 Log Analytics 테이블의 이름을 정의합니다. 테이블 이름은 모든 문자열이 될 수 있지만 _CL 로 끝나야 합니다. 예: TableName_CL |
instructionsSteps | instructionSteps[] | 커넥터 설치 방법을 설명하는 위젯 부분의 배열로 지침 탭에 표시됩니다. |
metadata | metadata | 커넥터 설명 아래에 표시되는 메타데이터입니다. |
permissions | permissions[] | 커넥터를 사용하거나 사용하지 않도록 설정하는 데 필요한 권한을 나열하는 UI의 사전 요구 사항 섹션 아래에 표시되는 정보입니다. |
publisher | 문자열 | 공급자 섹션에 표시된 텍스트입니다. |
sampleQueries | sampleQueries[] | 고객이 이벤트 로그에서 데이터를 찾는 방법을 이해하기 위한 샘플 쿼리는 다음 단계 탭에 표시됩니다. |
title | 문자열 | 데이터 커넥터 페이지에 표시되는 제목입니다. |
이 모든 조각을 하나로 모으는 것은 복잡합니다. 커넥터 페이지 사용자 환경 유효성 검사 도구를 사용하여 함께 모은 구성 요소를 테스트합니다.
dataTypes
배열 값 | Type | Description |
---|---|---|
이름 | 문자열 | 변수 지원을 포함하여 lastDataReceivedQuery 에 대한 의미 있는 설명입니다. 예: {{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}} |
instructionSteps
이 섹션에서는 Microsoft Sentinel의 데이터 커넥터 페이지에 표시되는 지침 집합을 정의하는 매개 변수를 제공합니다.
배열 속성 | Type | 설명 |
---|---|---|
title | 문자열 | 선택 사항. 지침의 제목을 정의합니다. |
description | 문자열 | 선택 사항. 지침에 대한 의미 있는 설명을 정의합니다. |
innerSteps | Array | 선택 사항. 내부 명령어 단계의 배열을 정의합니다. |
지침 | 명령의 배열 | 필수입니다. 특정 매개 변수 형식의 명령 배열을 정의합니다. |
bottomBorder | 부울 | 선택 사항. true 인 경우 Microsoft Sentinel의 커넥터 페이지에 있는 지침 영역에 하단 테두리를 추가합니다. |
isComingSoon | 부울 | 선택 사항. true 일 때 Microsoft Sentinel의 커넥터 페이지에 출시 예정 제목을 추가합니다. |
지침
다양한 옵션을 매개 변수로 사용하고 더 많은 instructionSteps를 그룹에 중첩할 수 있는 명령 그룹을 표시합니다.
매개 변수 | 배열 속성 | 설명 |
---|---|---|
APIKey | APIKey | 커넥터의 JSON 구성 파일에 자리 표시자를 추가합니다. |
CopyableLabel | 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}} 와 같은 고유한 값일 수 있습니다. |
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 | 문자열 | 텍스트 상자 위의 레이블에 대한 텍스트를 정의합니다. |
value | 문자열 | 텍스트 상자에 표시할 값을 정의하고 자리 표시자를 지원합니다. |
rows | 행 | 선택 사항. 사용자 인터페이스 영역의 행을 정의합니다. 기본적으로 1로 설정됩니다. |
wideLabel | 부울 | 선택 사항. 긴 문자열에 대한 넓은 레이블을 결정합니다. 기본적으로 false 로 설정됩니다. |
InfoMessage
인라인 정보 메시지의 예는 다음과 같습니다.
대조적으로 다음 이미지는 비인라인 정보 메시지를 보여 줍니다.
배열 값 | Type | 설명 |
---|---|---|
text | 문자열 | 메시지에 표시할 텍스트를 정의합니다. |
visible | 부울 | 메시지를 표시할지 여부를 결정합니다. |
inline | 부울 | 정보 메시지가 표시되는 방식을 결정합니다. - true : (권장) 지침에 포함된 정보 메시지를 표시합니다. - false : 파란색 백그라운드를 추가합니다. |
InstructionStepsGroup
확장 가능한 명령 그룹의 예는 다음과 같습니다.
배열 값 | Type | 설명 |
---|---|---|
title | 문자열 | 지침 단계의 제목을 정의합니다. |
canCollapseAllSections | 부울 | 선택 사항. 섹션이 축소 가능한 아코디언인지 여부를 결정합니다. |
noFxPadding | 부울 | 선택 사항. true 인 경우 공간을 절약하기 위해 높이 패딩을 줄입니다. |
expanded | 부울 | 선택 사항. true 인 경우 기본적으로 확장된 것으로 표시됩니다. |
자세한 예제는 Windows DNS 커넥터에 대한 구성 JSON을 참조하세요.
InstallAgent
일부 InstallAgent 형식은 단추로 표시되며 다른 형식은 링크로 표시됩니다. 다음은 두 가지에 대한 예입니다.
배열 값 | Type | 설명 |
---|---|---|
linkType | ENUM | 다음 값 중 하나로 연결 종류를 결정합니다. InstallAgentOnWindowsVirtualMachine InstallAgentOnWindowsNonAzure InstallAgentOnLinuxVirtualMachine InstallAgentOnLinuxNonAzure OpenSyslogSettings OpenCustomLogsSettings OpenWaf OpenAzureFirewall OpenMicrosoftAzureMonitoring OpenFrontDoors OpenCdnProfile AutomaticDeploymentCEF OpenAzureInformationProtection OpenAzureActivityLog OpenIotPricingModel OpenPolicyAssignment OpenAllAssignmentsBlade OpenCreateDataCollectionRule |
policyDefinitionGuid | 문자열 | OpenPolicyAssignment linkType을 사용할 때 필요합니다. 정책 기반 커넥터의 경우 기본 제공 정책 정의의 GUID를 정의합니다. |
assignMode | ENUM | 선택 사항. 정책 기반 커넥터의 경우 할당 모드를 Initiative , Policy 값 중 하나로 정의합니다. |
dataCollectionRuleType | ENUM | 선택 사항. DCR 기반 커넥터의 경우 데이터 수집 규칙 형식의 형식을 SecurityEvent , ForwardEvent 중 하나로 정의합니다. |
metadata
이 섹션에서는 설명 영역 아래 데이터 커넥터 UI에 메타데이터를 제공합니다.
컬렉션 값 | Type | 설명 |
---|---|---|
kind | 문자열 | 만드는 ARM 템플릿의 종류를 정의합니다. 항상 dataConnector 를 사용합니다. |
source | 문자열 | 다음 구문을 사용하여 데이터 원본을 설명합니다. { "kind": string"name": string} |
author | 문자열 | 다음 구문을 사용하여 데이터 커넥터 작성자를 설명합니다. { "name": string} |
support | 문자열 | 다음 구문을 사용하여 데이터 커넥터에 제공되는 지원을 설명합니다. { "tier": string,"name": string,"email": string,"link": URL string} |
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 필요 |
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 | 문자열 | 커넥터 페이지에서 requiredPermissions의 유효성을 검사할 때 빨간색 '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})"
}
데이터 커넥터 페이지 사용자 환경의 유효성 검사
다음 단계에 따라 커넥터 사용자 환경을 렌더링하고 유효성을 검사합니다.
- 테스트 유틸리티는 https://aka.ms/sentineldataconnectorvalidateurl URL로 액세스할 수 있습니다.
- Microsoft Sentinel -> 데이터 커넥터로 이동
- "가져오기" 단추를 클릭하고 데이터 커넥터의
connectorUiConfig
섹션만 포함된 json 파일을 선택합니다.
이 유효성 검사 도구에 대한 자세한 내용은 GitHub 빌드 가이드의 커넥터 빌드 지침을 참조하세요.
참고 항목
APIKey 명령 매개 변수는 코드리스 커넥터에만 적용되므로 유효성 검사 도구를 사용하려면 이 섹션을 일시적으로 제거하세요. 그렇지 않으면 실패합니다.
커넥터의 폴링 설정 구성
이 섹션에서는 코드 없는 데이터 커넥터에 대해 데이터 원본에서 데이터를 폴링하는 방법에 대한 구성을 설명합니다.
다음 코드는 CCP 구성 파일의 pollingConfig
섹션 구문을 보여 줍니다.
"pollingConfig": {
"auth": {
},
"request": {
},
"response": {
},
"paging": {
}
}
pollingConfig
섹션에는 다음 속성이 포함됩니다.
이름 | 형식 | 설명 |
---|---|---|
auth | 문자열 | 데이터 폴링을 위한 인증 속성을 설명합니다. 자세한 내용은 인증 구성을 참조하세요. |
auth.authType | 문자열 | 필수. auth 개체 내부에 중첩된 인증 형식을 Basic , APIKey , OAuth2 값 중 하나로 정의합니다. |
request | 중첩된 JSON | 필수. API 엔드포인트와 같은 데이터 폴링을 위한 요청 페이로드를 설명합니다. 자세한 내용은 요청 구성을 참조하세요. |
response | 중첩된 JSON | 필수. 데이터를 폴링할 때 API에서 반환된 응답 개체 및 중첩 메시지를 설명합니다. 자세한 내용은 응답 구성을 참조하세요. |
paging | 중첩된 JSON | 선택 사항. 데이터를 폴링할 때 페이지 매김 페이로드를 설명합니다. 자세한 내용은 페이징 구성을 참조하세요. |
자세한 내용은 샘플 pollingConfig 코드를 참조하세요.
인증 구성
pollingConfig 구성의 auth
섹션에는 authType 요소에 정의된 형식에 따라 다음 매개 변수가 포함됩니다.
기본 authType 매개 변수
이름 | 형식 | 설명 |
---|---|---|
사용자 이름 | 문자열 | 필수. 사용자 이름을 정의합니다. |
암호 | 문자열 | 필수. 사용자 암호를 정의합니다. |
APIKey authType 매개 변수
이름 | 형식 | 설명 |
---|---|---|
APIKeyName | 문자열 | 선택 사항. 다음 값 중 하나로 API 키의 이름을 정의합니다. - XAuthToken - Authorization |
IsAPIKeyInPostPayload | 부울 | 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 토큰 서비스 엔드포인트를 정의합니다. |
AuthorizationEndpoint | 문자열 | 선택 사항. OAuth2 권한 부여 서비스 엔드포인트를 정의합니다. 온보딩 중 또는 새로 고침 토큰을 갱신할 때만 사용됩니다. |
RedirectionEndpoint | 문자열 | 선택 사항. 온보딩 중 리디렉션 엔드포인트를 정의합니다. |
AccessTokenExpirationDateTimeInUtc | 문자열 | 선택 사항. UTC 형식의 액세스 토큰 만료 날짜/시간을 정의합니다. 액세스 토큰이 만료되지 않아 UTC의 날짜 시간이 크거나 액세스 토큰의 만료 날짜 시간이 큰 경우에 적합합니다. |
RefreshTokenExpirationDateTimeInUtc | 문자열 | 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>, ... } |
AuthorizationEndpointQueryParameters | 사전 <문자열, 개체> | 선택 사항. 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 | 부울 | 선택 사항입니다. 기본값은 false입니다. 쿼리 매개 변수가 JSON 형식이고 요청 POST 페이로드에 설정되어 있는지 확인합니다. |
IsClientSecretInHeader | 부울 | 선택 사항입니다. 기본값은 false입니다. POST 페이로드 대신 기본 인증 스키마에서와 같이 client_id 및 client_secret 값이 헤더에 정의되어 있는지 여부를 결정합니다. |
RefreshTokenLifetimeinSecAttributeName | 문자열 | 선택 사항. 새로 고침 토큰의 수명을 초 단위로 지정하여 토큰 엔드포인트 응답의 특성 이름을 정의합니다. |
IsJwtBearerFlow | 부울 | 선택 사항입니다. 기본값은 false입니다. JWT를 사용 중인지 여부를 결정합니다. |
JwtHeaderInJson | 사전 <문자열, 개체> | 선택 사항. JWT 헤더를 JSON 형식으로 정의합니다. 직렬화된 dictionary<string, object> 형식으로 문자열을 정의합니다. {'<attr_name>': <serialized val>, '<attr_name>': <serialized val>...} |
JwtClaimsInJson | 사전 <문자열, 개체> | 선택 사항. JWT 클레임을 JSON 형식으로 정의합니다. 직렬화된 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"
},
세션 인증 형식 매개 변수
이름 | 형식 | 설명 |
---|---|---|
QueryParameters | 사전 <문자열, 개체> | 선택 사항. 직렬화된 dictionary<string, string> 형식의 쿼리 매개 변수 목록: {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
IsPostPayloadJson | 부울 | 선택 사항. 쿼리 매개 변수가 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 | 문자열 또는 UnixTimestamp 또는 UnixTimestampInMills | 필수. 쿼리 시간을 정의하는 데 사용되는 형식을 정의합니다. 이 값은 문자열이거나 UnixTimestamp에서 쿼리 시작 및 종료 시간을 나타내는 UnixTimestamp 또는 UnixTimestampInMills 형식일 수 있습니다. |
startTimeAttributeName | 문자열 | 선택 사항. 쿼리 시작 시간을 정의하는 특성의 이름을 정의합니다. |
endTimeAttributeName | 문자열 | 선택 사항. 쿼리 종료 시간을 정의하는 특성의 이름을 정의합니다. |
queryTimeIntervalAttributeName | 문자열 | 선택 사항. 쿼리 시간 간격을 정의하는 특성의 이름을 정의합니다. |
queryTimeIntervalDelimiter | 문자열 | 선택 사항. 쿼리 시간 간격 구분 기호를 정의합니다. |
queryWindowInMin | 정수 | 선택 사항. 사용 가능한 쿼리 창을 분 단위로 정의합니다. 최솟값: 5 |
queryParameters | 사전 <문자열, 개체> | 선택 사항. eventsJsonPaths 경로의 쿼리에 전달된 매개 변수를 정의합니다. 직렬화된 dictionary<string, string> 형식으로 문자열을 정의합니다. {'<attr_name>': '<val>', '<attr_name>': '<val>'... } |
queryParametersTemplate | 문자열 | 선택 사항. 고급 시나리오에서 쿼리 매개 변수를 전달할 때 사용할 쿼리 매개 변수 템플릿을 정의합니다. 예: "queryParametersTemplate": "{'cid': 1234567, 'cmd': 'reporting', 'format': 'siem', 'data': { 'from': '{_QueryWindowStartTime}', 'to': '{_QueryWindowEndTime}'}, '{_APIKeyName}': '{_APIKey}'}" {_QueryWindowStartTime} 및 {_QueryWindowEndTime} 은 queryParameters 및 queryParametersTemplate 요청 매개 변수에서만 지원됩니다. {_APIKeyName} 및 {_APIKey} 는 queryParametersTemplate 요청 매개 변수에서만 지원됩니다. |
isPostPayloadJson | 부울 | 선택 사항. POST 페이로드가 JSON 형식인지 여부를 결정합니다. |
rateLimitQPS | 두 배 | 선택 사항. 초당 허용되는 호출 또는 쿼리 수를 정의합니다. |
timeoutInSeconds | 정수 | 선택 사항. 요청 시간 초과를 초 단위로 정의합니다. |
retryCount | 정수 | 선택 사항. 필요한 경우 시도할 요청 다시 시도 횟수를 정의합니다. |
headers | 사전 <문자열, 개체> | 선택 사항. 직렬화된 dictionary<string, object> 형식으로 요청 헤더 값을 정의합니다. {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... } |
응답 구성
pollingConfig 구성의 response
섹션에는 다음 매개 변수가 포함됩니다.
다음 코드는 최상위 메시지에 대한 eventsJsonPaths 값의 예를 보여 줍니다.
"eventsJsonPaths": [
"$"
]
페이징 구성
pollingConfig 구성의 paging
섹션에는 다음 매개 변수가 포함됩니다.
이름 | 형식 | 설명 |
---|---|---|
pagingType | 문자열 | 필수. None , LinkHeader , NextPageToken , NextPageUrl , Offset 값 중 하나로 결과에 사용할 페이징 형식을 결정합니다. |
linkHeaderTokenJsonPath | 문자열 | 선택 사항. LinkHeader 가응답 헤더에 정의되어 있지 않은 경우 응답 JSON의 헤더를 연결할 JSON 경로를 정의합니다. |
nextPageTokenJsonPath | 문자열 | 선택 사항. 다음 페이지 토큰 JSON에 대한 경로를 정의합니다. |
hasNextFlagJsonPath | 문자열 | 선택 사항. HasNextPage 플래그 특성에 대한 경로를 정의합니다. |
nextPageTokenResponseHeader | 문자열 | 선택 사항. 응답에서 다음 페이지 토큰 헤더 이름을 정의합니다. |
nextPageParaName | 문자열 | 선택 사항. 요청에서 다음 페이지 이름을 결정합니다. |
nextPageRequestHeader | 문자열 | 선택 사항. 요청에서 다음 페이지 헤더 이름을 결정합니다. |
nextPageUrl | 문자열 | 선택 사항. 초기 요청 URL과 다른 경우 다음 페이지 URL을 결정합니다. |
nextPageUrlQueryParameters | 문자열 | 선택 사항. 초기 요청의 URL과 다른 경우 다음 페이지 URL의 쿼리 매개 변수를 결정합니다. 직렬화된 dictionary<string, object> 형식으로 문자열을 정의합니다. {'<attr_name>': <val>, '<attr_name>': <val>... } |
offsetParaName | 문자열 | 선택 사항. 오프셋 매개 변수의 이름을 정의합니다. |
pageSizeParaName | 문자열 | 선택 사항. 페이지 크기 매개 변수의 이름을 정의합니다. |
PageSize | 정수 | 페이징 크기를 정의합니다. |
샘플 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 구성 파일의
connectorUiConfig
요소에 있는 InstructionSteps 구성에 의해 제어됩니다. 사용자 인터페이스 연결에 문제가 있는 경우 인증 형식에 대한 구성이 올바른지 확인합니다.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에서 공유합니다.
자세한 내용은 참조하세요.