권한이 상승된 위험 사용자 모니터링, 조사 및 수정
위험 조사
Identity Protection은 조직의 사용자 환경에서 ID 위험을 조사하는 데 사용할 수 있는 세 가지 보고서인 위험 사용자, 위험한 로그인 및 위험 검색을 조직에 제공합니다. 보안 전략에서 약점을 보다 잘 이해하고 식별하려면 이벤트를 조사하는 것이 중요합니다.
세 보고서는 모두 Azure Portal 외부에서 추가로 분석할 수 있게 .CSV 형식으로 이벤트를 다운로드하는 것을 허용합니다. 위험 사용자 및 위험한 로그인 보고서에서는 가장 최근 2500개 항목을 다운로드할 수 있고, 위험 검색 보고서에서는 가장 최근 5000개 레코드를 다운로드할 수 있습니다.
조직에서는 Microsoft Graph API 통합을 활용하여 조직의 권한으로 액세스하는 다른 원본으로 데이터를 집계할 수 있습니다.
Microsoft Entra 관리 센터, ID, 보호-ID 보호에서 세 가지 보고서를 찾을 수 있습니다.
보고서 탐색
각 보고서는 보고서 맨 위에 표시된 기간에 해당하는 모든 검색 항목 목록으로 시작됩니다. 각 보고서에서 관리자 기본 설정에 따라 열을 추가하거나 제거할 수 있습니다. 관리자는 .CSV 또는 .JSON 형식으로 데이터를 다운로드하도록 선택할 수 있습니다. 보고서의 맨 위에 있는 필터를 사용하여 보고서를 필터링할 수 있습니다.
개별 항목을 선택하면 보고서 위쪽에서 로그인을 손상됨 또는 안전으로 확인하거나, 사용자를 손상됨으로 확인하거나, 사용자 위험을 해제하는 기능과 같은 추가 항목을 사용하도록 설정할 수 있습니다.
개별 항목을 선택하면 검색 항목 아래의 세부 정보 창이 확장됩니다. 관리자는 세부 정보 보기를 사용하여 각 검색 항목을 살펴보고 관련 작업을 수행할 수 있습니다.
위험한 사용자
관리자는 위험한 사용자 보고서에 제공되는 정보를 통해 다음을 확인할 수 있습니다.
- 위험에 노출된 사용자, 위험을 해결한 사용자 또는 위험을 해제한 사용자
- 검색 세부 정보
- 모든 위험한 로그인 기록
- 위험 기록
그러면 관리자는 이러한 이벤트에 대한 작업을 수행하도록 선택할 수 있습니다. 다음을 선택할 수 있습니다.
- 사용자 암호 다시 설정
- 사용자 손상 확인
- 사용자 위험 해제
- 사용자가 로그인하지 못하도록 차단
- Azure ATP를 사용하여 자세히 조사
위험한 로그인
위험한 로그인 보고서에는 최대 지난 30일(1개월) 동안의 필터링 가능한 데이터가 포함되어 있습니다.
관리자는 위험한 로그인 보고서에 제공되는 정보를 통해 다음을 확인할 수 있습니다.
- 위험한 것으로 분류된 로그인, 도용된 것으로 확인된 로그인, 안전한 것으로 확인된 로그인, 위험이 해제된 로그인 또는 위험이 해결된 로그인
- 로그인 시도와 관련된 실시간 및 집계 위험 수준
- 트리거된 검색 유형
- 적용된 조건부 액세스 정책
- MFA 세부 정보
- 디바이스 정보
- 애플리케이션 정보
- 위치 정보
그러면 관리자는 이러한 이벤트에 대한 작업을 수행하도록 선택할 수 있습니다. 관리자는 다음을 선택할 수 있습니다.
- 로그인 손상 확인
- 로그인 안전 확인
위험 탐지
위험 검색 보고서에는 최대 지난 90일(3개월) 동안의 필터링 가능한 데이터가 포함되어 있습니다.
관리자는 위험 검색 보고서에 제공되는 정보를 통해 다음을 확인할 수 있습니다.
- 각 위험 검색에 대한 정보(예: 유형)
- 동시에 트리거되는 기타 위험
- 로그인 시도 위치
그러면 관리자는 사용자의 위험 또는 로그인 보고서로 돌아가서 수집된 정보에 따라 작업을 수행하도록 선택할 수 있습니다.
위험 검색 보고서는 MDCA(클라우드용 Microsoft Defender 앱) 포털에서 추가 로그 및 경고를 볼 수 있는 클릭 가능한 검색 링크도 제공합니다.
참고 항목
시스템에서는 위험 사용자 위험 점수에 영향을 준 위험 이벤트가 가양성이었는지 또는 MFA 프롬프트 또는 보안 암호 변경 완료와 같은 정책 적용으로 사용자 위험이 수정되었는지 검색합니다. 따라서 시스템에서는 위험 상태를 해제하며, “AI 확인된 로그인 안전”의 위험 세부 정보가 표시되고 더 이상 사용자 위험에 영향을 주지 않습니다.
위험 수정 및 사용자 차단 해제
조사를 완료한 후 위험을 수정하거나 사용자를 차단 해제하기 위한 조치를 취하려고 합니다. 조직은 위험 정책을 사용하여 자동화된 수정을 사용하도록 설정할 수도 있습니다. 조직은 제공되는 모든 위험 검색을 편하게 생각되는 기간 내에 닫으려고 시도해야 합니다. 위험 관련 작업을 할 때는 시간이 중요하므로 최대한 빨리 이벤트를 닫는 것이 좋습니다.
수정
모든 활성 위험 검색은 ‘사용자 위험 수준’이라고 하는 값의 계산에 영향을 줍니다. 사용자 위험 수준은 계정이 손상된 가능성에 대한 지표(낮음, 보통, 높음)입니다. 관리자는 모든 위험 검색을 닫아서 영향을 받는 사용자가 더 이상 위험에 처하지 않도록 하고 싶습니다.
이벤트가 더 이상 위험한 것으로 확인되지 않았기 때문에 일부 위험 검색이 Identity Protection을 통해 “닫힘(시스템)”으로 표시됩니다.
관리자는 다음 수정 옵션을 사용할 수 있습니다.
- 위험 정책을 통한 직접 수정
- 수동 암호 다시 설정
- 사용자 위험 해제
- 수동으로 개별 위험 검색 닫기
위험 정책을 통한 직접 수정
사용자가 위험 정책에서 MFA(다단계 인증) 및 SSPR(셀프 서비스 암호 재설정)을 사용하여 직접 수정할 수 있게 하면 위험이 검색될 때 사용자가 직접 차단을 해제할 수 있습니다. 해당 검색은 닫힌 것으로 간주합니다. 위험이 검색될 때 사용하려면 사용자가 이전에 MFA 및 SSPR에 등록되었어야 합니다.
일부 검색에서는 사용자가 직접 수정해야 하는 수준까지 위험이 증가하지 않지만 관리자는 관련 검색을 계속 평가해야 합니다. 관리자는 여러 위치에서 액세스를 차단하거나 정책에서 허용 가능한 위험을 줄이는 것합과 같은 추가 조치가 필요하다고 결정합니다.
수동 암호 다시 설정
사용자 위험 정책을 사용하여 암호를 재설정해야 하는 옵션이 아닌 경우 관리자는 수동 암호 재설정을 사용하여 사용자에 대한 모든 위험 검색을 닫을 수 있습니다.
관리자는 사용자의 암호를 다시 설정할 때 다음 두 가지 옵션을 사용할 수 있습니다.
임시 암호 생성 - 임시 암호를 생성하여 ID를 안전한 상태로 즉시 전환할 수 있습니다. 이 방법을 사용하려면 임시 암호가 무엇인지 알아야 하므로 영향을 받는 사용자에게 문의해야 합니다. 암호는 임시 암호이므로 사용자에게 다음 로그인 시 암호를 새 암호로 변경하라는 메시지가 표시됩니다.
사용자가 암호를 재설정해야 함 - 사용자가 암호를 재설정하도록 요구하면 지원 센터 또는 관리자에게 문의하지 않고도 셀프 복구가 가능합니다. 이 방법은 MFA 및 SSPR에 등록된 사용자에게만 적용됩니다. 등록되지 않은 사용자의 경우 이 옵션을 사용할 수 없습니다.
사용자 위험 해제
예를 들어, 사용자가 삭제되어 암호를 다시 설정할 수 없는 경우에는 사용자 위험 검색을 해제하도록 선택할 수 있습니다.
사용자 위험 해제를 선택하면 모든 이벤트가 닫히고 영향을 받는 사용자가 더 이상 위험에 노출되지 않습니다. 그러나 이 방법은 기존 암호에 영향을 주지 않으므로 관련된 ID를 안전한 상태로 다시 전환하지 않습니다.
수동으로 개별 위험 검색 닫기
개별 위험 검색을 수동으로 닫으면 사용자 위험 수준을 낮출 수 있습니다. 일반적으로 사용자에게 문의하여 활성 위험 검색이 더 이상 필요하지 않다는 것을 알 수 있는 경우와 같이 위험 검색은 관련 조사에 대한 응답으로 수동으로 닫습니다.
위험 검색을 수동으로 닫는 경우 다음 작업 중 하나를 수행하여 위험 검색 상태를 변경하도록 선택할 수 있습니다.
- 사용자 손상됨 확인
- 사용자 위험 해제
- 로그인 안전 확인
- 로그인 손상됨 확인
사용자 차단 해제
관리자는 위험 정책 또는 조사에 따라 로그인을 차단하도록 선택합니다. 차단은 로그인 또는 사용자 위험에 따라 발생합니다.
사용자 위험에 따라 차단 해제
사용자 위험으로 인해 차단된 계정의 차단을 해제하기 위해 관리자는 다음 옵션을 사용할 수 있습니다.
- 암호 재설정 - 사용자의 암호를 다시 설정할 수 있습니다.
- 사용자 위험 해제 - 액세스 차단을 위해 구성된 사용자 위험 수준에 도달하면 사용자 위험 정책이 사용자를 차단합니다. 사용자 위험을 해제하거나 보고된 위험 검색을 수동으로 닫아서 사용자의 위험 수준을 줄일 수 있습니다.
- 정책에서 사용자 제외 - 로그인 정책의 현재 구성으로 인해 특정 사용자에 관련된 문제가 발생하고 있다고 생각되면 로그인 정책에서 해당 사용자를 제외할 수 있습니다.
- 정책 비활성화 - 정책 구성이 모든 사용자에 대해 문제를 일으킨다고 생각하는 경우 정책을 비활성화할 수 있습니다.
로그인 위험에 따라 차단 해제
로그인 위험에 따라 계정의 차단을 해제하기 위해 관리자는 다음 옵션을 사용할 수 있습니다.
- 친숙한 위치 또는 디바이스에서 로그인 - 차단된 의심스러운 로그인에 대한 일반적인 이유는 알 수 없는 위치 또는 디바이스에서의 로그인 시도입니다. 사용자는 친숙한 위치 또는 디바이스에서 로그인을 시도하여 해당 이유인지 여부를 빠르게 확인할 수 있습니다.
- 정책에서 사용자 제외 - 로그인 정책의 현재 구성으로 인해 특정 사용자에 관련된 문제가 발생하고 있다고 생각되면 로그인 정책에서 해당 사용자를 제외할 수 있습니다.
- 정책 비활성화 - 정책 구성이 모든 사용자에 대해 문제를 일으킨다고 생각하는 경우 정책을 비활성화할 수 있습니다.
PowerShell 미리 보기
Microsoft Graph PowerShell SDK 미리 보기 모듈을 사용하면 조직은 PowerShell을 통해 위험을 관리할 수 있습니다. 미리 보기 모듈 및 샘플 코드는 Azure GitHub 리포지토리에 있습니다.
Microsoft Graph API 사용
Microsoft Graph는 Microsoft의 통합된 API 엔드포인트이며 Microsoft Entra ID 보호 API의 시작점입니다. 위험한 사용자 및 로그인에 대한 정보를 노출하는 세 가지 API가 있습니다. riskDetection, riskyUsers, and signIn
riskDetection
을 사용하면 Microsoft Graph를 쿼리하여 사용자 및 로그인 연결된 위험 검색 목록과 검색에 관한 연결된 정보를 확인할 수 있습니다.
riskyUsers
를 사용하면 Microsoft Graph를 쿼리하여 Identity Protection이 위험한 것으로 검색한 사용자에 관한 정보를 확인할 수 있습니다.
signIn
을(를) 사용하면 Microsoft Graph를 쿼리하여 위험 상태, 세부 정보 및 수준과 관련된 특정 속성을 통해 Microsoft Entra ID 로그인 정보를 확인할 수 있습니다.
이 섹션에서는 Microsoft Graph에 연결 및 해당 API 쿼리를 사용하여 시작합니다. 자세한 소개, 전체 설명서 및 Graph Explorer에 대한 액세스는 Microsoft Graph 사이트(https://graph.microsoft.io/) 또는 riskDetection, riskyUsers, and signIn
API에 대한 특정 참조 설명서를 참조하세요.
Microsoft Graph에 연결
Microsoft Graph를 통해 Identity Protection 데이터에 액세스하는 네 단계는 도메인 이름 검색, 새 앱 등록 생성, API 권한 구성, 유효한 자격 증명 구성입니다.
도메인 이름 검색
- Microsoft Entra 관리 센터에 로그인합니다.
- ID로 이동한 다음 설정을 열고 도메인 이름을 선택합니다.
- .onmicrosoft.com 도메인을 기록해 둡니다. 이 정보는 이후 단계에서 필요합니다.
새 앱 등록 생성
Microsoft Entra 관리 센터에서 ID 및 애플리케이션, 앱 등록을 차례로 찾습니다.
새 등록을 선택합니다.
생성 페이지에서 다음 단계를 수행합니다.
- 이름 텍스트 상자에 애플리케이션 이름을 입력합니다(예: Microsoft Entra 위험 감지 API).
- 지원되는 계정 유형에서 API를 사용할 계정 유형을 선택합니다.
- 등록을 선택합니다.
애플리케이션 ID를 복사합니다.
API 권한 구성
직접 생성된 애플리케이션에서 API 권한을 선택합니다.
구성된 권한 페이지의 위쪽 도구 모음에서 권한 추가를 선택합니다.
API 액세스 추가 페이지에서 API 선택을 선택합니다.
API 선택 페이지에서 Microsoft Graph를 선택한 다음, 선택을 선택합니다.
API 권한 요청 페이지에서:
- 애플리케이션 권한을 선택합니다.
- IdentityRiskEvent.Read.All 및 IdentityRiskyUser.Read.All 옆에 있는 확인란을 선택합니다.
- 권한 추가를 선택합니다.
도메인에 대한 관리자 동의 부여를 선택합니다.
유효한 자격 증명 구성
직접 생성된 애플리케이션에서 인증서 및 비밀을 선택합니다.
클라이언트 암호 아래에서 새 클라이언트 암호를 선택합니다.
클라이언트 암호에 설명을 지정하고 조직 정책에 따라 만료 기간을 설정합니다.
추가를 선택합니다.
참고
이 키를 분실하면 이 섹션으로 돌아와서 새 키를 만들어야 합니다. 이 키의 비밀 유지: 키를 가진 모든 사용자가 데이터에 액세스할 수 있습니다.
Microsoft Graph에 인증하고 Identity Protection 위험 검색 API를 쿼리합니다.
이 시점에서 다음 항목이 만들어 집니다.
- 테넌트 도메인의 이름
- 애플리케이션(클라이언트) ID
- 클라이언트 암호 또는 인증서
인증하려면 본문에서 다음 매개 변수를 ㅏ용하여 https://login.microsoft.com
에 게시 요청을 전송합니다.
- grant_type:
client_credentials
- resource:
https://graph.microsoft.com
- client_id:
- client_secret:
성공하면 이 요청이 인증 토큰을 반환합니다. API를 호출하려면 다음 매개 변수를 사용하여 헤더를 만듭니다.
Authorization`="<token_type> <access_token>"
인증할 경우 반환된 토큰에서 토큰 유형 및 액세스 토큰을 찾을 수 있습니다.
다음 API URL에 대한 요청으로 이 헤더를 보냅니다. https://graph.microsoft.com/v1.0/identityProtection/riskDetections
성공하는 경우 응답은 ID 위험 검색 및 OData JSON 형식으로 연결된 데이터의 컬렉션이며, 적절하게 구문 분석하고 처리할 수 있습니다.
샘플
이 샘플에서는 공유 비밀을 사용하여 인증하는 방법을 보여 줍니다. 프로덕션 환경에서 코드에 비밀을 저장하는 것은 일반적으로 적절하지 않습니다. 조직은 Azure 리소스에 관리 ID를 사용하여 관련 자격 증명을 보호할 수 있습니다.
다음은 PowerShell을 사용하여 API를 인증하고 호출하는 데 대한 샘플 코드입니다. 클라이언트 ID, 비밀 키 및 테넌트 도메인만 추가하면 됩니다.
$ClientID = "<your client ID here>" # Should be a ~36 hex character string; insert your info here
$ClientSecret = "<your client secret here>" # Should be a ~44 character string; insert your info here
$tenantdomain = "<your tenant domain here>" # For example, contoso.onmicrosoft.com
$loginURL = "https://login.microsoft.com"
$resource = "https://graph.microsoft.com"
$body = @{grant_type="client_credentials";resource=$resource;client_id=$ClientID;client_secret=$ClientSecret}
$oauth = Invoke-RestMethod -Method Post -Uri $loginURL/$tenantdomain/oauth2/token?api-version=1.0 -Body $body
Write-Output $oauth
if ($oauth.access_token -ne $null) {
$headerParams = @{'Authorization'="$($oauth.token_type) $($oauth.access_token)"}
$url = "https://graph.microsoft.com/v1.0/identityProtection/riskDetections"
Write-Output $url
$myReport = (Invoke-WebRequest -UseBasicParsing -Headers $headerParams -Uri $url)
foreach ($event in ($myReport.Content | ConvertFrom-Json).value) {
Write-Output $event
}
} else {
Write-Host "ERROR: No Access Token"
}
모든 오프라인 위험 검색 가져오기(riskDetection API)
Identity Protection 로그인 위험 정책을 사용하여 위험이 실시간으로 검색될 때 조건을 적용할 수 있습니다. 그러나 오프라인에서 검색되는 검색은 어떻게 할까요? 오프라인에서 발생해서 로그인 위험 정책을 트리거하지 않은 검색을 파악하기 위해 riskDetection
API를 쿼리할 수 있습니다.
GET https://graph.microsoft.com/v1.0/identityProtection/riskDetections?$filter=detectionTimingType eq 'offline'
위험한 로그인 정책에 의해 트리거되는 MFA 챌린지를 성공적으로 통과한 모든 사용자 가져오기(riskyUsers API)
Identity Protection 위험 기반 정책이 조직에 어떤 가치가 있는지 파악하기 위해 위험한 로그인 정책에 따라 트리거되는 MFA 챌린지를 통과한 모든 사용자를 쿼리할 수 있습니다. 해당 정보는 Identity Protection이 위험으로 잘못 검색한 사용자 및 AI가 위험한 것으로 간주하는 작업을 수행 중인 적법한 사용자를 파악하는 데 도움이 될 수 있습니다.
GET https://graph.microsoft.com/v1.0/identityProtection/riskyUsers?$filter=riskDetail eq 'userPassedMFADrivenByRiskBasedPolicy'