보안 애플리케이션 모델 프레임워크 사용

Microsoft는 Microsoft Entra MFA(다단계 인증) 아키텍처를 통해 CSP(클라우드 솔루션 공급자) 파트너 및 CPV(제어판 공급업체)를 인증하기 위한 안전하고 확장 가능한 프레임워크를 도입하고 있습니다.

새 모델을 사용하여 파트너 센터 API 통합 호출에 대한 보안을 향상시킬 수 있습니다. 이렇게 하면 모든 당사자(Microsoft, CSP 파트너 및 CPV 포함)가 보안 위험으로부터 인프라 및 고객 데이터를 보호할 수 있습니다.

CSP 프로그램을 사용하면 고객이 파트너를 통해 Microsoft 제품 및 서비스를 구매할 수 있습니다. Microsoft와의 계약에 따라 파트너는 판매하는 고객의 환경을 관리하고 지원을 제공해야 합니다. 이 채널을 통해 구매하는 고객은 파트너 비즈니스가 고객 테넌트에 대한 높은 권한의 관리자 액세스 권한을 가지고 있기 때문에 구매하는 파트너에 높은 신뢰를 부여해야 합니다.

범위

이 문서는 CSP 및 CPV 모두에 관한 것입니다.

CPV

  • CPV는 CSP 파트너에서 파트너 센터 API와 통합하는 데 사용할 앱을 개발하는 독립 소프트웨어 공급업체입니다.
  • CPV는 파트너 센터 또는 API에 직접 액세스할 수 있는 CSP 파트너가 아닙니다.

CSP

  • CSP 간접 공급자 및 CSP 직접 파트너 - 앱 ID + 사용자 인증을 사용하고 파트너 센터 API와 직접 통합합니다.

보안 요구 사항

보안 요구 사항에 대한 자세한 내용은 파트너 보안 요구 사항을 참조하세요.

보안 애플리케이션 모델

마켓플레이스 애플리케이션은 CSP 파트너 권한을 가장하여 Microsoft API를 호출해야 합니다. 이러한 중요한 애플리케이션에 대한 보안 공격으로 인해 고객 데이터가 손상될 수 있습니다.

새 인증 프레임워크에 대한 개요 및 세부 정보는 보안 손상으로부터 마켓플레이스 애플리케이션을 지속 가능하고 강력하게 만들기 위한 원칙과 모범 사례를 다루는 보안 애플리케이션 모델 프레임워크를 참조하세요.

샘플

파트너가 보안 애플리케이션 모델 프레임워크를 구현할 수 있는 방법을 설명하는 개요 문서 및 샘플 코드는 다음과 같습니다.

REST

샘플 코드를 사용하여 보안 애플리케이션 모델 프레임워크에서 REST를 호출하려면 다음 단계를 수행합니다.

  1. 웹앱 만들기

웹앱 만들기

  1. Azure Portal에 로그인합니다.

  2. Microsoft Entra 앱을 만듭니다.

  3. 애플리케이션의 요구 사항에 따라 위임된 애플리케이션 권한을 다음 리소스에 부여합니다. 필요한 경우 애플리케이션 리소스에 대해 위임된 권한을 추가할 수 있습니다.

    1. Microsoft 파트너 센터(일부 테넌트에 SampleBECApp 표시)

    2. Azure 관리 API (Azure API를 호출하려는 경우)

    3. Windows Azure Active Directory

  4. 앱의 홈 URL이 라이브 웹앱이 실행되는 엔드포인트로 설정되어 있는지 확인합니다. 이 앱은 Microsoft Entra 로그인 호출의 권한 부여 코드를 수락해야 합니다. 예를 들어 다음 섹션의 예제 코드에서는 웹앱이 https://localhost:44395/에서 실행됩니다.

  5. Microsoft Entra ID의 웹앱 설정에서 다음 정보를 확인합니다.

    • 애플리케이션 ID
    • 애플리케이션 비밀

참고 항목

인증서를 애플리케이션 비밀로 사용하는 것이 좋습니다. 그러나 Azure Portal에서 애플리케이션 키를 만들 수도 있습니다. 다음 섹션의 샘플 코드에서는 애플리케이션 키를 사용합니다.

권한 부여 코드 가져오기

Microsoft Entra 로그인 호출에서 수락하려면 웹앱에 대한 권한 부여 코드를 가져와야 합니다.

  1. Microsoft Entra ID로그인합니다.

    파트너 센터 API를 호출하는 사용자 계정(예: 관리 에이전트 또는 판매 에이전트 계정)으로 로그인해야 합니다.

  2. Application-Id를 Microsoft Entra 앱 ID(GUID)로 대체합니다.

  3. 메시지가 표시되면 MFA가 구성된 사용자 계정으로 로그인합니다.

  4. 메시지가 표시되면 더 많은 MFA 정보(전화 번호 또는 전자 메일 주소)를 입력하여 로그인을 확인합니다.

  5. 로그인하면 브라우저에서 권한 부여 코드를 사용하여 웹앱 엔드포인트로 호출을 리디렉션합니다. 예를 들어 다음 샘플 코드는 https://localhost:44395/로 리디렉션됩니다.

권한 부여 코드 호출 추적

POST https://localhost:44395/ HTTP/1.1
Origin: https://login.microsoftonline.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referrer: https://login.microsoftonline.com/kmsi
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: OpenIdConnect.nonce.hOMjjrivcxzuI4YqAw4uYC%2F%2BILFk4%2FCx3kHTHP3lBvA%3D=dHVyRXdlbk9WVUZFdlFONVdiY01nNEpUc0JRR0RiYWFLTHhQYlRGNl9VeXJqNjdLTGV3cFpIWFg1YmpnWVdQUURtN0dvMkdHS2kzTm02NGdQS09veVNEbTZJMDk1TVVNYkczYmstQmlKUzFQaTBFMEdhNVJGVHlES2d3WGlCSlVlN1c2UE9sd2kzckNrVGN2RFNULWdHY2JET3RDQUxSaXRfLXZQdG00RnlUM0E1TUo1YWNKOWxvQXRwSkhRYklQbmZUV3d3eHVfNEpMUUthMFlQUFgzS01RS2NvMXYtbnV4UVJOYkl4TTN0cw%3D%3D

code=AuthorizationCodeValue&id_token=IdTokenValue&<rest of properties for state>

새로 고침 토큰 가져오기

그런 다음, 권한 부여 코드를 사용하여 새로 고침 토큰을 받아야 합니다.

  1. 인증 코드를 사용하여 Microsoft Entra 로그인 엔드포인트 https://login.microsoftonline.com/CSPTenantID/oauth2/token 에 POST를 호출합니다. 예를 들어 다음 호출 샘플을 참조하세요.

  2. 반환되는 새로 고침 토큰을 확인합니다.

  3. 새로 고침 토큰을 Azure Key Vault에 저장합니다. 자세한 내용은 Key Vault API 설명서를 참조하세요.

Important

새로 고침 토큰은 Key Vault에서 비밀로 저장해야 합니다.

새로 고침 호출 샘플

자리 표시자 요청:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 966
Expect: 100-continue

요청 본문.:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id&client_secret=Application-Secret&grant_type=authorization_code&code=AuthorizationCodeValue

자리 표시자 응답:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

응답 본문:

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3599","ext_expires_in":"3599","expires_on":"1547579127","not_before":"1547575227","resource":"https://api.partnercenter.microsoft.com","access_token":"Access

액세스 토큰 가져오기

파트너 센터 API를 호출하려면 먼저 액세스 토큰을 가져와야 합니다. 액세스 토큰은 일반적으로 제한된 수명(예: 1시간 미만)을 가지므로 액세스 토큰을 가져오려면 새로 고침 토큰을 사용해야 합니다.

자리 표시자 요청:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 1212
Expect: 100-continue

요청 본문.:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id &client_secret= Application-Secret&grant_type=refresh_token&refresh_token=RefreshTokenVlaue&scope=openid

자리 표시자 응답:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

응답 본문:

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3600","ext_expires_in":"3600","expires_on":"1547581389","not_before":"1547577489","resource":"https://api.partnercenter.microsoft.com","access_token":"AccessTokenValue","id_token":"IDTokenValue"}

파트너 센터 API 호출

액세스 토큰을 사용하여 파트너 센터 API를 호출해야 합니다. 다음 호출 예제를 참조하세요.

파트너 센터 API 호출 예제

GET https://api.partnercenter.microsoft.com/v1/customers/CustomerTenantId/users HTTP/1.1
Authorization: Bearer AccessTokenValue
Accept: application/json
X-Locale: en-US
Host: api.partnercenter.microsoft.com

PowerShell

파트너 센터 PowerShell 모듈을 사용하여 파트너 센터 리소스를 관리할 수 있습니다. 파트너 커뮤니티에서 기본 오픈 소스 프로젝트이며 Microsoft에서 공식적으로 지원하지 않습니다. 문제가 발생한 경우 커뮤니티에서 도움을 받거나GitHub에서 문제를 열 수 있습니다.

파트너 센터 PowerShell 모듈을 사용하여 액세스 토큰에 대한 권한 부여 코드를 교환하는 데 필요한 인프라를 줄일 수 있습니다. 이 방법은 파트너 센터 REST 호출을 수행하기 위한 선택 사항입니다.

이 프로세스에 대한 자세한 내용은 보안 앱 모델 PowerShell 설명서를 참조하세요.

  1. Microsoft Entra ID 및 파트너 센터 PowerShell 모듈을 설치합니다.

    Install-Module AzureAD
    
    Install-Module PartnerCenter
    
  2. New-PartnerAccessToken 명령을 사용하여 동의 프로세스를 수행하고 필요한 새로 고침 토큰을 캡처합니다.

    $credential = Get-Credential
    
    $token = New-PartnerAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Scopes 'https://api.partnercenter.microsoft.com/user_impersonation' -ServicePrincipal -Credential $credential -Tenant 'yyyy-yyyy-yyyy-yyyy' -UseAuthorizationCode
    

    참고 항목

    ServicePrincipal 매개 변수는 Web/API 형식의 Microsoft Entra 앱이 사용되기 때문에 New-PartnerAccessToken 명령과 함께 사용됩니다. 이 유형의 앱을 사용하려면 클라이언트 식별자와 비밀이 액세스 토큰 요청에 포함되어야 합니다. Get-Credential 명령이 호출되면 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다. 사용자 이름으로 애플리케이션 식별자를 입력합니다. 암호로 애플리케이션 비밀을 입력합니다. New-PartnerAccessToken 명령이 호출되면 자격 증명을 다시 입력하라는 메시지가 표시됩니다. 사용하고 있는 서비스 계정의 자격 증명을 입력합니다. 이 서비스 계정은 적절한 권한이 있는 파트너 계정이어야 합니다.

  3. 새로 고침 토큰 값을 복사합니다.

    $token.RefreshToken | clip
    

새로 고침 토큰 값은 Azure Key Vault와 같은 보안 리포지토리에 저장해야 합니다. PowerShell에서 보안 애플리케이션 모듈을 사용하는 방법에 대한 자세한 내용은 다단계 인증 문서를 참조하세요.