다음을 통해 공유


[사용되지 않음] 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(미리 보기)을 다운로드합니다.

커넥터의 사용자 인터페이스 구성

이 섹션에서는 데이터 커넥터 페이지의 사용자 인터페이스를 사용자 지정하는 데 사용할 수 있는 구성 옵션에 대해 설명합니다.

다음 이미지는 사용자 인터페이스의 주목할만한 영역에 해당하는 숫자로 강조 표시된 샘플 데이터 커넥터 페이지를 보여줍니다.

샘플 데이터 커넥터 페이지 스크린샷.

  1. 제목. 데이터 커넥터에 대해 표시되는 제목입니다.
  2. 로고. 데이터 커넥터에 대해 표시되는 아이콘입니다. 이 사용자 지정은 솔루션의 일부로 배포할 때만 가능합니다.
  3. 상태. 데이터 커넥터가 Microsoft Sentinel에 연결되어 있는지 여부를 나타냅니다.
  4. 데이터 차트. 관련 쿼리 및 지난 2주 동안 수집된 데이터의 양을 표시합니다.
  5. 지침 탭. 사용자가 커넥터를 사용하도록 설정하기 전에 최소한의 유효성 검사 목록이 포함된 사전 요구 사항 섹션과 사용자가 커넥터를 활성화하도록 안내하는 지침이 포함되어 있습니다. 이 섹션에는 프로세스를 단순화하기 위해 텍스트, 단추, 양식, 테이블 및 기타 일반 위젯이 포함될 수 있습니다.
  6. 다음 단계 탭. 샘플 쿼리와 같이 이벤트 로그에서 데이터를 찾는 방법을 이해하는 데 유용한 정보가 포함되어 있습니다.

다음은 사용자 인터페이스를 구성하는 데 필요한 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})"
}

데이터 커넥터 페이지 사용자 환경의 유효성 검사

다음 단계에 따라 커넥터 사용자 환경을 렌더링하고 유효성을 검사합니다.

  1. 테스트 유틸리티는 https://aka.ms/sentineldataconnectorvalidateurl URL로 액세스할 수 있습니다.
  2. Microsoft Sentinel -> 데이터 커넥터로 이동
  3. "가져오기" 단추를 클릭하고 데이터 커넥터의 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_idclient_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}queryParametersqueryParametersTemplate 요청 매개 변수에서만 지원됩니다.

{_APIKeyName}{_APIKey}queryParametersTemplate 요청 매개 변수에서만 지원됩니다.
isPostPayloadJson 부울 선택 사항. POST 페이로드가 JSON 형식인지 여부를 결정합니다.
rateLimitQPS 두 배 선택 사항. 초당 허용되는 호출 또는 쿼리 수를 정의합니다.
timeoutInSeconds 정수 선택 사항. 요청 시간 초과를 초 단위로 정의합니다.
retryCount 정수 선택 사항. 필요한 경우 시도할 요청 다시 시도 횟수를 정의합니다.
headers 사전 <문자열, 개체> 선택 사항. 직렬화된 dictionary<string, object> 형식으로 요청 헤더 값을 정의합니다. {'<attr_name>': '<serialized val>', '<attr_name>': '<serialized val>'... }

응답 구성

pollingConfig 구성의 response 섹션에는 다음 매개 변수가 포함됩니다.

이름 형식 설명
eventsJsonPaths 문자열 목록 필수. 응답 JSON의 메시지 경로를 정의합니다.

JSON 경로 표현식은 JSON 구조에서 요소 또는 요소 집합에 대한 경로를 지정합니다.
successStatusJsonPath 문자열 선택 사항. 응답 JSON에서 성공 메시지의 경로를 정의합니다.
successStatusValue 문자열 선택 사항. 응답 JSON에서 성공 메시지 값에 대한 경로를 정의합니다.
isGzipCompressed 부울 선택 사항. 응답이 gZip 파일로 압축되는지 여부를 결정합니다.

다음 코드는 최상위 메시지에 대한 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 작업 영역에 커넥터를 배포합니다.

  1. 다음 옵션 중 하나를 사용하여 데이터 커넥터를 배포합니다.

    ARM(Azure Resource Manager) 템플릿을 통해 배포할 때의 이점은 여러 값이 템플릿에 기본 제공되며 API 호출에서 수동으로 정의할 필요가 없다는 것입니다.

    ARM 템플릿에서 JSON 구성 컬렉션을 래핑하여 커넥터를 배포합니다. 데이터 커넥터가 올바른 작업 영역에 배포되도록 하려면 ARM 템플릿에서 작업 영역을 정의하거나 ARM 템플릿을 배포할 때 작업 영역을 선택해야 합니다.

    1. 커넥터용 ARM 템플릿 JSON 파일을 준비합니다. 예를 들어 다음 ARM 템플릿 JSON 파일을 참조하세요.

    2. Azure Portal에서 사용자 지정 템플릿 배포를 검색합니다.

    3. 사용자 지정 배포 페이지에서 편집기에서 고유한 템플릿 빌드>파일 로드를 선택합니다. 로컬 ARM 템플릿을 찾아 선택한 다음 변경 내용을 저장합니다.

    4. 구독 및 리소스 그룹을 선택한 다음, 사용자 지정 커넥터를 배포할 Log Analytics 작업 영역을 입력합니다.

    5. 검토 + 만들기를 선택하여 사용자 지정 커넥터를 Microsoft Sentinel에 배포합니다.

    6. Microsoft Sentinel에서 데이터 커넥터 페이지로 이동하여 새 커넥터를 검색합니다. 데이터 수집을 시작하도록 구성합니다.

    자세한 내용은 Azure Resource Manager 설명서에서 로컬 템플릿 배포를 참조하세요.

  2. 데이터 원본을 연결하고 Microsoft Sentinel로 데이터 수집을 시작하도록 데이터 커넥터를 구성합니다. 기본 제공 데이터 커넥터와 같이 포털을 통해 또는 API를 통해 데이터 원본에 연결할 수 있습니다.

    Azure Portal을 사용하여 연결하면 사용자 데이터가 자동으로 전송됩니다. API를 통해 연결할 때 API 호출에서 관련 인증 매개 변수를 보내야 합니다.

    Microsoft Sentinel 데이터 커넥터 페이지에서 제공된 지침에 따라 데이터 커넥터에 연결합니다.

    Microsoft Sentinel의 데이터 커넥터 페이지는 CCP JSON 구성 파일의 connectorUiConfig 요소에 있는 InstructionSteps 구성에 의해 제어됩니다. 사용자 인터페이스 연결에 문제가 있는 경우 인증 형식에 대한 구성이 올바른지 확인합니다.

  3. 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에서 공유합니다.

자세한 내용은 참조하세요.