다음을 통해 공유


애플리케이션 컨텍스트를 사용하여 Microsoft Defender for Cloud Apps 액세스

이 페이지에서는 애플리케이션을 만들어 사용자 없이 Defender for Cloud Apps 프로그래밍 방식으로 액세스하는 방법을 설명합니다. 사용자를 대신하여 Defender for Cloud Apps 프로그래밍 방식으로 액세스해야 하는 경우 사용자 컨텍스트로 액세스 가져오기를 참조하세요. 필요한 액세스 권한을 잘 모르는 경우 API 토큰 관리 페이지를 참조하세요.

Microsoft Defender for Cloud Apps 프로그래밍 방식 API 세트를 통해 많은 데이터와 작업을 노출합니다. 이러한 API는 Defender for Cloud Apps 기능을 기반으로 작업 흐름을 자동화하고 혁신하는 데 도움이 됩니다. API 액세스에는 OAuth2.0 인증이 필요합니다. 자세한 내용은 OAuth 2.0 권한 부여 코드 흐름을 참조하세요.

일반적으로 API를 사용하려면 다음 단계를 수행해야 합니다.

  • Microsoft Entra 애플리케이션을 만듭니다.
  • 이 애플리케이션을 사용하여 액세스 토큰을 가져옵니다.
  • 토큰을 사용하여 Defender for Cloud Apps API에 액세스합니다.

이 문서에서는 Microsoft Entra 애플리케이션을 만들고, Microsoft Defender for Cloud Apps 액세스 토큰을 가져와서 토큰의 유효성을 검사하는 방법을 설명합니다.

Defender for Cloud Apps 위한 앱 만들기

  1. Microsoft Entra 관리 센터 새 애플리케이션을 등록합니다. 자세한 내용은 빠른 시작: Microsoft Entra 관리 센터 애플리케이션 등록을 참조하세요.

  2. 앱이 Defender for Cloud Apps 액세스하고 '모든 경고 읽기' 권한을 할당할 수 있도록 하려면 애플리케이션 페이지에서 API 권한> 내organization 사용하는>권한> API 추가를 선택하고 Microsoft Cloud App Security 입력한 다음 Microsoft를 선택합니다. Cloud App Security.

    참고

    Microsoft Cloud App Security 원래 목록에 표시되지 않습니다. 텍스트 상자에 이름을 작성하여 표시되는지 확인합니다. 이제 제품이 Defender for Cloud Apps 호출되더라도 이 이름을 입력해야 합니다.

    사용 권한 추가 스크린샷

    • 애플리케이션 권한>조사.읽기를 선택한 다음, 권한 추가를 선택합니다.

      앱 권한 추가 스크린샷

      관련 권한을 선택해야 합니다. Investigation.Read 는 예제일 뿐입니다. 다른 권한 범위는 지원되는 권한 범위를 참조하세요.

      • 필요한 권한을 확인하려면 호출하려는 API의 사용 권한 섹션을 참조하세요.
  3. 관리자 동의 부여를 선택합니다.

    참고

    권한을 추가할 때마다 새 권한을 적용하려면 관리자 동의 부여 를 선택해야 합니다.

    관리자 권한 부여 스크린샷

  4. 애플리케이션에 비밀을 추가하려면 인증서 & 비밀을 선택하고, 새 클라이언트 암호를 선택하고, 비밀에 설명을 추가한 다음, 추가를 선택합니다.

    참고

    추가를 선택한 후 생성된 비밀 값 복사를 선택합니다. 나가면 이 값을 검색할 수 없습니다.

    앱 키를 만드는 스크린샷

  5. 애플리케이션 ID 및 테넌트 ID를 적어 씁니다. 애플리케이션 페이지에서 개요 로 이동하여 애플리케이션(클라이언트) ID디렉터리(테넌트) ID를 복사합니다.

    생성된 앱 ID의 스크린샷.

  6. Microsoft Defender for Cloud Apps 파트너에만 해당합니다. 앱을 다중 테넌트(동의 후 모든 테넌트에서 사용 가능)로 설정합니다. 이는 타사 앱에 필요합니다 (예: 여러 고객의 테넌트에서 실행하려는 앱을 만드는 경우). 테넌트에서만 실행하려는 서비스를 만드는 경우에는 필요하지 않습니다 (예: 사용자 고유의 데이터와만 상호 작용하는 고유한 용도로 애플리케이션을 만드는 경우). 앱을 다중 테넌트로 설정하려면 다음을 수행합니다.

    • 인증으로 이동하여 리디렉션 URI로 추가 https://portal.azure.com 합니다.

    • 페이지 아래쪽의 지원되는 계정 유형에서 다중 테넌트 앱 에 대한 모든 조직 디렉터리 애플리케이션 동의의 계정을 선택합니다.

    애플리케이션을 사용하려는 각 테넌트에서 승인해야 합니다. 이는 애플리케이션이 고객을 대신하여 Defender for Cloud Apps 상호 작용하기 때문입니다.

    사용자(또는 타사 앱을 작성하는 경우 고객)는 동의 링크를 선택하고 앱을 승인해야 합니다. 동의는 Active Directory에서 관리 권한이 있는 사용자와 함께 수행해야 합니다.

    동의 링크는 다음과 같이 구성됩니다.

    https://login.microsoftonline.com/common/oauth2/authorize?prompt=consent&client_id=00000000-0000-0000-0000-000000000000&response_type=code&sso_reload=true
    

    여기서 00000000-0000-0000-0000-00000000000은 애플리케이션 ID로 바뀝니다.

완료되었습니다! 애플리케이션을 성공적으로 등록했습니다! 토큰 획득 및 유효성 검사는 아래 예제를 참조하세요.

지원되는 권한 범위

사용 권한 이름 설명 지원되는 작업
Investigation.read 닫는 경고를 제외하고 활동 및 경고에 대해 지원되는 모든 작업을 수행합니다.
IP 범위를 볼 수 있지만 추가, 업데이트 또는 삭제는 볼 수 없습니다.

모든 엔터티 작업을 수행합니다.
활동 목록, 가져오기, 피드백
경고 목록, 가져오기, 읽기/읽지 않음으로 표시
엔터티 목록, 가져오기, 트리 가져오기
서브넷 목록
Investigation.manage 경고 및 IP 범위를 관리하는 것 외에도 모든 investigation.read 작업을 수행합니다. 활동 목록, 가져오기, 피드백
경고 목록, 가져오기, 읽기/읽지 않음으로 표시, 닫기
엔터티 목록, 가져오기, 트리 가져오기
서브넷 목록, 만들기/업데이트/삭제
Discovery.read 닫는 경고를 제외하고 활동 및 경고에 대해 지원되는 모든 작업을 수행합니다.
검색 보고서 및 범주를 나열합니다.
경고 목록, 가져오기, 읽기/읽지 않음으로 표시
검색 목록 보고서, 보고서 범주 나열
Discovery.manage Discovery.read 권한
경고 닫기, 검색 파일 업로드 및 블록 스크립트 생성
경고 목록, 가져오기, 읽기/읽지 않음으로 표시, 닫기
검색 목록 보고서, 보고서 범주 나열
검색 파일 업로드, 블록 스크립트 생성
Settings.read IP 범위를 나열합니다. 서브넷 목록
Settings.manage IP 범위를 나열하고 관리합니다. 서브넷 목록, 만들기/업데이트/삭제

액세스 토큰 가져오기

Microsoft Entra 토큰에 대한 자세한 내용은 Microsoft Entra 자습서를 참조하세요.

PowerShell 사용

# This script acquires the App Context Token and stores it in the variable $token for later use in the script.
# Paste your Tenant ID, App ID, and App Secret (App key) into the indicated quotes below.

$tenantId = '' ### Paste your tenant ID here
$appId = '' ### Paste your Application ID here
$appSecret = '' ### Paste your Application key here

$resourceAppIdUri = '05a65629-4c1b-48c1-a78b-804c4abdd4af'
$oAuthUri = "https://login.microsoftonline.com/$TenantId/oauth2/token"
$authBody = [Ordered] @{
    resource = "$resourceAppIdUri"
    client_id = "$appId"
    client_secret = "$appSecret"
    grant_type = 'client_credentials'
}
$authResponse = Invoke-RestMethod -Method Post -Uri $oAuthUri -Body $authBody -ErrorAction Stop
$token = $authResponse.access_token

C 사용#

다음 코드는 NuGet Microsoft.Identity.Client 4.47.2를 사용하여 테스트되었습니다.

  1. 새 콘솔 애플리케이션을 만듭니다.

  2. NuGet Microsoft.Identity.Client를 설치합니다.

  3. 다음을 추가합니다.

    using Microsoft.Identity.Client;
    
  4. 다음 코드를 복사하여 앱에 붙여넣습니다(세 가지 변수를 업데이트하는 것을 잊지 마세요. tenantId, appId, appSecret)

    string tenantId = "00000000-0000-0000-0000-000000000000"; // Paste your own tenant ID here
    string appId = "00001111-aaaa-2222-bbbb-3333cccc4444"; // Paste your own app ID here
    string appSecret = "22222222-2222-2222-2222-222222222222"; // Paste your own app secret here for a test, and then store it in a safe place!
    const string authority = "https://login.microsoftonline.com";
    const string audience = "05a65629-4c1b-48c1-a78b-804c4abdd4af";
    
    IConfidentialClientApplication myApp = ConfidentialClientApplicationBuilder.Create(appId).WithClientSecret(appSecret).WithAuthority($"{authority}/{tenantId}").Build();
    
    List scopes = new List() { $"{audience}/.default" };
    
    AuthenticationResult authResult = myApp.AcquireTokenForClient(scopes).ExecuteAsync().GetAwaiter().GetResult();
    
    string token = authResult.AccessToken;
    

Python 사용

Python용 MSAL(Microsoft 인증 라이브러리)을 참조하세요.

Curl 사용

참고

다음 절차에서는 Windows용 Curl이 컴퓨터에 이미 설치되어 있다고 가정합니다.

  1. 명령 프롬프트를 열고 CLIENT_ID Azure 애플리케이션 ID로 설정합니다.
  2. CLIENT_SECRET Azure 애플리케이션 비밀로 설정합니다.
  3. TENANT_ID 앱을 사용하여 Defender for Cloud Apps 액세스하려는 고객의 Azure 테넌트 ID로 설정합니다.
  4. 다음 명령을 실행합니다.
curl -i -X POST -H "Content-Type:application/x-www-form-urlencoded" -d "grant_type=client_credentials" -d "client_id=%CLIENT_ID%" -d "scope=05a65629-4c1b-48c1-a78b-804c4abdd4af/.default" -d "client_secret=%CLIENT_SECRET%" "https://login.microsoftonline.com/%TENANT_ID%/oauth2/v2.0/token" -k

다음 형식으로 답변을 얻을 수 있습니다.

{"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIn <truncated> aWReH7P0s0tjTBX8wGWqJUdDA"}

토큰 유효성 검사

올바른 토큰이 있는지 확인합니다.

  1. 이전 단계에서 얻은 토큰을 복사하여 JWT 에 붙여넣어 디코딩합니다.
  2. 원하는 권한이 있는 '역할' 클레임을 가져오는지 확인합니다.
  3. 다음 이미지에서는 모든 Microsoft Defender for Cloud Apps 역할에 대한 권한이 있는 앱에서 획득한 디코딩된 토큰을 볼 수 있습니다.

토큰 유효성 검사 스크린샷

토큰을 사용하여 Microsoft Defender for Cloud Apps API에 액세스

  1. 사용할 API를 선택합니다. 자세한 내용은 Defender for Cloud Apps API를 참조하세요.
  2. 보내는 http 요청에서 권한 부여 헤더를 "전달자 {token}"(전달자는 권한 부여 체계임)으로 설정합니다.
  3. 토큰의 만료 시간은 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

참고 항목