사용자 컨텍스트를 사용하여 Microsoft Defender for Cloud Apps API 액세스
참고
Microsoft Cloud App Security 이름이 바뀌었습니다. 이제 Microsoft Defender for Cloud Apps 호출되었습니다. 앞으로 몇 주 안에 여기와 관련 페이지에서 스크린샷과 지침을 업데이트할 예정입니다. 변경 내용에 대한 자세한 내용은 이 공지 사항을 참조하세요. Microsoft 보안 서비스의 최근 이름 바꾸기에 대한 자세한 내용은 Microsoft Ignite 보안 블로그를 참조하세요.
Microsoft Defender for Cloud Apps 이제 Microsoft 365 Defender 일부입니다. Microsoft 365 Defender 포털을 사용하면 보안 관리자가 한 위치에서 보안 작업을 수행할 수 있습니다. 이렇게 하면 워크플로가 간소화되고 다른 Microsoft 365 Defender 서비스의 기능이 추가됩니다. Microsoft 365 Defender Microsoft ID, 데이터, 디바이스, 앱 및 인프라 전반에서 보안을 모니터링하고 관리하기 위한 홈이 될 것입니다. 이러한 변경 내용에 대한 자세한 내용은 Microsoft 365 Defender Microsoft Defender for Cloud Apps 참조하세요.
이 페이지에서는 사용자를 대신하여 클라우드용 Defender 앱에 프로그래밍 방식으로 액세스하는 애플리케이션을 만드는 방법을 설명합니다.
사용자가 없는 프로그래밍 방식 액세스 Microsoft Defender for Cloud Apps 필요한 경우 애플리케이션 컨텍스트를 사용하여 Access Microsoft Defender for Cloud Apps 참조하세요.
필요한 액세스 권한이 확실하지 않은 경우 소개 페이지를 읽습니다.
Microsoft Defender for Cloud Apps 프로그래밍 방식 API 집합을 통해 많은 데이터와 작업을 노출합니다. 이러한 API를 사용하면 작업 흐름을 자동화하고 Microsoft Defender for Cloud Apps 기능을 기반으로 혁신할 수 있습니다. API 액세스에는 OAuth2.0 인증이 필요합니다. 자세한 내용은 OAuth 2.0 인증 코드 Flow 참조하세요.
일반적으로 API를 사용하려면 다음 단계를 수행해야 합니다.
- Azure Active Directory(Azure AD) 애플리케이션 만들기
- 이 애플리케이션을 사용하여 액세스 토큰 가져오기
- 토큰을 사용하여 클라우드용 Defender Apps API에 액세스
이 페이지에서는 Azure AD 애플리케이션을 만들고, Microsoft Defender for Cloud Apps 액세스 토큰을 가져오고, 토큰의 유효성을 검사하는 방법을 설명합니다.
참고
사용자를 대신하여 Microsoft Defender for Cloud Apps API에 액세스할 때 올바른 애플리케이션 권한 및 사용자 권한이 필요합니다. Microsoft Defender for Cloud Apps 대한 사용자 권한에 익숙하지 않은 경우 관리자 액세스 관리를 참조하세요.
팁
포털에서 작업을 수행할 수 있는 권한이 있는 경우 API에서 작업을 수행할 수 있는 권한이 있습니다.
앱 만들기
전역 관리자 역할이 있는 사용자 계정으로 Azure에 로그인합니다.
Azure Active Directory>앱 등록>새 등록으로 이동합니다.

애플리케이션 등록 페이지가 표시되면 애플리케이션의 등록 정보를 입력합니다.
이름 -앱의 사용자에게 표시되는 의미 있는 애플리케이션 이름을 입력합니다.
지원되는 계정 유형 - 애플리케이션이 지원하려는 계정을 선택합니다.
지원되는 계정 유형 Description 이 조직 디렉터리의 계정만 업무용(LOB) 애플리케이션을 빌드하는 경우 이 옵션을 선택합니다. 애플리케이션이 디렉터리에 등록되지 않은 경우에는 이 옵션을 사용할 수 없습니다.
이 옵션은 Azure AD 단일 테넌트에 매핑됩니다.
디렉터리 외부에 앱을 등록하지 않은 한 기본 옵션입니다. 디렉터리 외부에 앱을 등록할 경우 기본값은 Azure AD 다중 테넌트 및 개인 Microsoft 계정입니다.모든 조직 디렉터리의 계정 모든 비즈니스 및 교육용 고객을 대상으로 하려는 경우 이 옵션을 선택합니다.
이 옵션은 Azure AD 전용 다중 테넌트에 매핑됩니다.
단일 테넌트만 Azure AD 앱을 등록한 경우 인증 창을 통해 다중 테넌트에 Azure AD 단일 테넌트로 다시 업데이트할 수 있습니다.모든 조직 디렉터리의 계정 및 개인 Microsoft 계정 가장 폭넓은 고객을 대상으로 하려면 이 옵션을 사용합니다.
이 옵션은 Azure AD 다중 테넌트 및 개인 Microsoft 계정에 매핑됩니다.
앱을 Azure AD 다중 테넌트 및 개인 Microsoft 계정으로 등록한 경우 UI에서 변경할 수 없습니다. 대신 애플리케이션 매니페스트 편집기를 사용하여 지원되는 계정 유형을 변경해야 합니다.리디렉션 URI(선택 사항) - 빌드 중인 앱 유형, 웹 또는 공용 클라이언트(모바일 & 데스크톱)를 선택한 다음 애플리케이션에 대한 리디렉션 URI(또는 회신 URL)를 입력합니다.
- 웹 애플리케이션의 경우 앱의 기준 URL을 제공합니다. 예를 들어
http://localhost:31544은 로컬 컴퓨터에서 실행 중인 웹앱의 URL일 수 있습니다. 사용자는 이 URL을 사용하여 웹 클라이언트 애플리케이션에 로그인합니다. - 공용 클라이언트 애플리케이션의 경우 Azure AD에서 토큰 응답을 반환하는 데 사용하는 URI를 제공합니다. 애플리케이션에 고유하게 해당되는 값을 입력합니다(예:
myapp://auth).
웹 애플리케이션 또는 네이티브 애플리케이션에 대한 구체적인 예제를 원하는 경우 빠른 시작을 확인합니다.
작업을 마쳤으면 등록을 선택합니다.
- 웹 애플리케이션의 경우 앱의 기준 URL을 제공합니다. 예를 들어
애플리케이션이 Microsoft Defender for Cloud Apps 액세스하고 '경고 읽기' 권한을 할당하도록 허용합니다.
애플리케이션 페이지에서 조직에서 형식 Microsoft Cloud App Security 사용하는 >API 권한>추가 권한>API를 선택한 다음, Microsoft Cloud App Security 선택합니다.
참고: Microsoft Cloud App Security 원래 목록에 표시되지 않습니다. 텍스트 상자에 이름을 쓰기 시작하여 표시되는지 확인합니다. 이제 제품이 클라우드용 Defender 앱이라고 하더라도 이 이름을 입력해야 합니다.

위임된 권한>조사 선택.읽기> 권한 추가 선택

중요 참고: 관련 사용 권한을 선택합니다. Investigation.Read 는 예제일 뿐입니다. 다른 권한 범위는 지원되는 사용 권한 범위를 참조하세요.
- 필요한 권한을 확인하려면 호출하려는 API에서 사용 권한 섹션을 확인합니다.
관리자 동의 허용을 선택합니다.
참고: 권한을 추가할 때마다 새 권한이 적용되려면 관리자 동의 부여 를 선택해야 합니다.

애플리케이션 ID 및 테넌트 ID를 적어 씁니다.
애플리케이션 페이지에서 개요 로 이동하여 다음 정보를 복사합니다.

지원되는 권한 범위
| 사용 권한 이름 | Description | 지원되는 작업 |
|---|---|---|
| Investigation.read | 닫는 경고를 제외하고 활동 및 경고에 대해 지원되는 모든 작업을 수행합니다. IP 범위를 볼 수 있지만 추가, 업데이트 또는 삭제는 볼 수 없습니다. 모든 엔터티 작업을 수행합니다. |
활동 목록, 가져오기, 피드백 경고 목록, 가져오기, 읽기/읽지 않음으로 표시 엔터티 목록, 가져오기, 트리 가져오기 서브넷 목록 |
| Investigation.manage | 경고 및 IP 범위를 관리하는 것 외에도 모든 investigation.read 작업을 수행합니다. | 활동 목록, 가져오기, 피드백 경고 목록, 가져오기, 읽기/읽지 않음으로 표시, 닫기 엔터티 목록, 가져오기, 트리 가져오기 서브넷 목록, 만들기/업데이트/삭제 |
| Discovery.read | 닫는 경고를 제외하고 활동 및 경고에 대해 지원되는 모든 작업을 수행합니다. 검색 보고서 및 범주를 나열합니다. |
경고 목록, 가져오기, 읽기/읽지 않음으로 표시 검색 목록 보고서, 보고서 범주 나열 |
| Discovery.manage | Discovery.read 권한 경고 닫기, 검색 파일 업로드 및 블록 스크립트 생성 |
경고 목록, 가져오기, 읽기/읽지 않음으로 표시, 닫기 검색 목록 보고서, 목록 보고서 범주 검색 파일 업로드, 블록 스크립트 생성 |
| 설정.read | IP 범위를 나열합니다. | 서브넷 목록 |
| 설정.manage | IP 범위를 나열하고 관리합니다. | 서브넷 목록, 만들기/업데이트/삭제 |
액세스 토큰 가져오기
Azure AD 토큰에 대한 자세한 내용은 Azure AD 자습서를 참조하세요.
C# 사용
애플리케이션에서 다음 클래스를 복사/붙여넣습니다.
Application ID, 테넌트 ID, 사용자 이름 및 암호와 함께 AcquireUserTokenAsync 메서드를 사용하여 토큰을 획득합니다.
namespace MDA { using System.Net.Http; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json.Linq; public static class MDAUtils { private const string Authority = "https://login.microsoftonline.com"; private const string MDAId = "05a65629-4c1b-48c1-a78b-804c4abdd4af"; private const string Scope = "Investigation.read"; public static async Task<string> AcquireUserTokenAsync(string username, string password, string appId, string tenantId) { using (var httpClient = new HttpClient()) { var urlEncodedBody = $"scope={MDAId}/{Scope}&client_id={appId}&grant_type=password&username={username}&password={password}"; var stringContent = new StringContent(urlEncodedBody, Encoding.UTF8, "application/x-www-form-urlencoded"); using (var response = await httpClient.PostAsync($"{Authority}/{tenantId}/oauth2/token", stringContent).ConfigureAwait(false)) { response.EnsureSuccessStatusCode(); var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false); var jObject = JObject.Parse(json); return jObject["access_token"].Value<string>(); } } } } }
토큰 유효성 검사
올바른 토큰이 있는지 확인합니다.
디코딩하기 위해 이전 단계에서 가져온 토큰을 JWT 에 복사/붙여넣습니다.
원하는 앱 권한이 있는 'scp' 클레임을 가져오는지 확인합니다.
아래 스크린샷에서는 자습서에서 앱에서 획득한 디코딩된 토큰을 볼 수 있습니다.

토큰을 사용하여 Microsoft Defender for Cloud Apps API에 액세스
사용하려는 API를 선택합니다. 자세한 내용은 클라우드용 Defender Apps API를 참조하세요.
"전달자 {token}"로 보내는 HTTP 요청에서 권한 부여 헤더 설정(전달자는 권한 부여 체계)
토큰의 만료 시간은 1시간입니다(동일한 토큰을 사용하여 둘 이상의 요청을 보낼 수 있습니다).
C#을 사용하여 경고 목록을 가져오기 위한 요청을 보내는 예제
var httpClient = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https://portal.cloudappsecurity.com/cas/api/v1/alerts/"); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); var response = httpClient.SendAsync(request).GetAwaiter().GetResult(); // Do something useful with the response