인시던트 후 검토 프로세스
- 7분
인시던트 후 검토의 핵심 부분은 인시던트 비선형 특성을 반영하는 공유되고 정확한 시간론을 생성하는 것입니다.
비선형성이라는 것은 사건들이 거의 항상 단순히 "이런 일이 일어나서, 저런 일이 일어나고, 우리는 알아차리고, 조치를 취하고, 그리고 모든 것이 끝났다는 식은 아니다"라는 뜻입니다. 사람들은 오고 가고, 여러 사람이 알아차리고 다른 것들을 시도하는 과정에서 어떤 것은 효과가 있고, 어떤 것은 효과가 없습니다. 그리고 여러 사람이 동시에 일하는 경우 이러한 일도 동시에 발생할 수 있으므로 조금 더 복잡합니다.
이와 같은 타임라인을 만들기 위해 복잡한 타임라인도 항상 중요한 첫 번째 단계인 데이터 수집이 있습니다.
데이터 수집
인시던트 후 검토를 수행하려면 먼저 데이터를 수집해야 합니다. 특히 이벤트에 포함된 모든 중요한 데이터를 사용할 수 있도록 이벤트를 둘러싼 대화 및 컨텍스트(기술적 및 비기술적)를 최대한 많이 수집해야 합니다. 중단 또는 인시던트 중에 발생한 팀 구성원 간의 대화는 가장 풍부한 정보 원본 중 하나가 될 것입니다.
또한 모니터링 시스템 및 인시던트에 관련된 사람들이 컨텍스트를 그린 다른 위치에서 데이터를 수집해야 합니다. 인시던트가 발생했을 때 시스템에서 어떤 정보를 얻게 되었나요?
마지막으로, 가능하면 인시던트 발생 시 변경 내용이 요인에 영향을 주는 경우가 많기 때문에 인시던트 직전과 도중에 변경된 내용을 더 잘 파악하는 것이 도움이 될 것입니다.
이 프로세스를 세 가지 개별 부분으로 볼 수 있습니다.
- 대화 수집: 이 학습 경로의 다른 모듈에서는 인시던트 중에 사람들이 통신할 수 있는 특정 장소를 개척하는 것이 중요하다고 언급했습니다. 이 사건 동안, 이상적으로 사람들은 무엇이 효과가 있었는지, 실패한 것, 시도하기를 주저하는 것, 과거에 시도한 것을 공유하는 것이 좋습니다. 사람들이 문제를 해결하고 작업하는 동안 이 대화는 학습의 가장 좋은 원천입니다.
- 컨텍스트 확인: 인시던트에 있는 사용자가 다양한 위치에서 신호를 받고 있습니다. 한 가지 주요 위치는 모니터링 시스템입니다. 이 학습 경로의 이전 모듈에서 견고한 모니터링 시스템을 갖는 것의 중요성에 대해 설명했습니다. 이상적으로 모니터링 시스템을 살펴보고 인시던트 전후 또는 관련 기간 동안 특정 시점 스냅샷을 빌드할 수 있어야 합니다.
- 변경 내용 찾기: 활동 및 감사 로그를 통해 이 작업을 수행할 수 있습니다.
데이터를 수집하는 데 도움이 되는 Azure 도구
Azure는 이 프로세스를 지원할 수 있는 다양한 도구를 제공합니다.
인시던트에 대한 메타데이터를 보관하기 위한 Azure DevOps
이 학습 경로의 이전 모듈에서는 Azure DevOps 제품군의 Azure Boards를 초기 응답부터 시작하는 인시던트에 대한 모든 정보를 수집하기 위한 한 장소로 사용하는 방법을 설명했습니다. 인시던트가 처음 선언된 시간, 통화 중인 사람, 인시던트에 할당된 사람 등에 대한 질문을 하는 데 도움이 됩니다. Azure DevOps Wiki를 중앙 집중식 방법으로 사용하여 인시던트 자체와 인시던트 중에 발생한 대화에 대한 일부 정보를 가져올 수도 있습니다.
대화 추출을 위한 Microsoft Graph API
Microsoft Graph API는 이 특정 인시던트에 전념하는 Teams 채널 내에서 수집된 대화를 찾고 내보내고 가져오는 프로그래밍 방식의 방법을 제공합니다. 검색된 데이터에는 채널에 참가한 사람(및 시기)과 대화의 개별 부분에 대한 타임스탬프를 포함하여 시간론을 생성할 때 유용한 메타데이터도 포함됩니다.
Microsoft Graph API를 시작하는 한 가지 쉬운 방법은 Microsoft Graph Explorer를 사용하는 것입니다. Microsoft Graph Explorer는 미리 채워진 옵션을 선택하여 API 호출을 선택할 수 있는 웹 기반 API 브라우저입니다. 모양은 다음과 같습니다.
"Microsoft Teams" 및 "Microsoft Teams(베타)" API 호출 집합을 단계별로 실행하여 대화를 검색합니다. 각 단계에서는 쿼리를 선택하고 쿼리를 실행한 다음 응답에서 다음 단계를 수행하는 데 도움이 되는 정보를 선택합니다. 그런 다음 이 정보를 사용하여 다음 요청을 생성합니다. 예를 들어 먼저 팀 ID 목록을 쿼리하여 소속 팀을 표시합니다. 응답에서 필요한 ID를 선택하고 이 ID를 다음 쿼리 URL에 삽입하여 해당 팀의 채널 목록을 가져옵니다.
단계는 다음과 같습니다.
- "내 참가 팀"을 가져옵니다(사용하는 팀의 팀 ID를 찾으려면).
- "내가 소속된 팀의 채널"(해당 인시던트에 사용한 채널의 채널 ID를 찾으려면)을 가져옵니다.
- "채널의 메시지"를 가져옵니다(대화를 검색하려면).
나중에 이러한 각 단계를 수행하는 프로그램을 구성하려는 경우(실제로 수행) 요청 창에는 다양한 프로그래밍 언어로 해당 쿼리에 대한 샘플 코드를 제공하는 코드 조각 옵션이 있습니다.
컨텍스트 표시를 위한 타겟팅된 대시보드
Azure의 대시보드를 사용하면 운영 인식을 위해 중요한 Azure Monitor의 정보를 하나의 페이지에서 모아볼 수 있습니다. 사용자 인터페이스를 사용하면 표시되는 기간을 선택할 수 있으므로 인시던트와 관련된 기간에 대한 대시보드 정보를 "되감기"하고 표시할 수 있습니다(정보가 너무 오래되어 Azure Monitor에 더 이상 보존되지 않도록 제공). 이 재구성된 사용자 인터페이스는 인시던트 중에 인시던트의 사용자가 확인한 내용을 확인할 때 유용할 수 있지만 인시던트 검토를 수행하는 사람이 적절한 기간을 수동으로 검색해야 합니다.
Azure에서 자주 간과되는 대시보드의 한 가지 기능은 다운로드 (아래쪽 화살표) 단추를 사용하여 JSON 파일에 표시되는 대시보드의 템플릿을 덤프하고 업로드 (위쪽 화살표) 단추를 사용하여 다시 로드하는 기능입니다. 즉, 수동으로 적절한 시간을 찾고, 해당 상태에서 대시보드를 다운로드하고, 다른 사용자와 JSON 파일을 공유하거나, 현재 대시보드를 다운로드하고 JSON을 사양에 맞게 수정할 수 있습니다. 다운로드한 JSON 대시보드 파일에서 문자열 "time"을 검색하면 다음과 같은 섹션이 표시됩니다.
"metadata": {
"model": {
"timeRange": {
"value": {
"relative": {
"duration": 24,
"timeUnit": 1
}
},
"type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange"
},
"filterLocale": {
"value": "en-us"
},
"filters": {
"value": {
"MsPortalFx_TimeRange": {
"model": {
"format": "utc",
"granularity": "auto",
"relative": "24h"
},
"displayCache": {
"name": "UTC Time",
"value": "Past 24 hours"
},
이 섹션을 사양으로 수정하고 다시 업로드합니다. 사용 중인 형식에 익숙하지 않은 경우 대시보드를 수동으로 변경하고, 다운로드하고, 필요한 형식을 확인할 수 있습니다.
변경 탐색을 위한 감사 로그 및 로그 분석
Log Analytics 작업 영역은 Azure 활동 로그를 비롯한 여러 원본의 데이터를 사용할 수 있습니다. 먼저 새 로그 분석 작업 영역을 만듭니다. 그런 다음 포털에서 활동 로그 기능으로 이동하여 진단 설정을 선택합니다. 이렇게 하면 Azure 구독에 대한 활동 로그를 새 작업 영역으로 보낼 수 있는 옵션이 제공됩니다.
짧은 시간 안에 KQL(Kusto Query Language)의 모든 기능을 사용하여 데이터 원본을 연결한 이후 해당 구독에서 발생한 변경 내용에 대한 자세한 정보를 검색할 수 있습니다.
예를 들어 다음 쿼리는 변경되거나 삭제된 리소스에 대한 정보를 보여 줍니다. 원하는 경우 쿼리 탐색기에서 쿼리의 시간 범위를 인시던트 직전에 더 정확하게 연마하도록 설정할 수 있습니다.
AzureActivity
| where CategoryValue == 'Administrative'
| where OperationNameValue endswith "write" or OperationNameValue endswith "delete"
| project TimeGenerated, Level, ResourceGroup, ResourceId, OperationName, OperationNameValue, ActivityStatus, Caller
| order by TimeGenerated nulls first
한 가지 빠른 참고: Azure 활동 로그를 데이터 원본으로 설정하면 정보가 해당 시점부터 Log Analytics 작업 영역으로 흐르기 시작합니다. 연결하기 전에 발생한 이벤트에 대해 해당 작업 영역에서 데이터를 소급하여 쿼리할 수 없습니다.
이러한 도구는 사고 후 검토 시 사용할 타임라인에 필요한 정보를 효과적으로 수집할 수 있도록 도와야 합니다. 인시던트 후 검토를 진행하기 전에 몇 가지 일반적인 트랩에 대해 경고합니다. 이것이 다음 단원의 주제입니다.