次の方法で共有


セキュリティで保護されたアプリケーション モデル フレームワークの有効化

Microsoft は、Microsoft Entra 多要素認証 (MFA) アーキテクチャを通じてクラウド ソリューション プロバイダー (CSP) パートナーとコントロール パネル ベンダー (CPV) を認証するための、セキュリティで保護されたスケーラブルなフレームワークを導入しています。

新しいモデルを使用して、パートナー センター API 統合呼び出しのセキュリティを高めることができます。 これにより、すべての関係者 (Microsoft、CSP パートナー、CPV を含む) がインフラストラクチャと顧客データをセキュリティ リスクから保護できます。

CSP プログラムを使用すると、顧客はパートナーを通じて Microsoft の製品とサービスを購入できます。 Microsoft との契約に従って、パートナーは販売先の顧客の環境を管理し、サポートを提供する必要があります。 このチャネルを通じて購入する顧客は、パートナー ビジネスが顧客テナントへの高い特権管理者アクセス権を持っているため、購入元のパートナーに高い信頼を置く必要があります。

Scope

この記事は、CSP と CPV の両方に関連します。

CPV

  • CPV は、パートナー センター API と統合するために CSP パートナーが使用するアプリを開発する独立系ソフトウェア ベンダーです。
  • CPV は、パートナー センターまたは API に直接アクセスできる CSP パートナーではありません。

CSP

  • アプリ ID + ユーザー認証を使用し、パートナー センター API と直接統合している CSP 間接プロバイダーと CSP 直接パートナー。

セキュリティ要件

セキュリティ要件の詳細については、「 パートナーのセキュリティ要件」を参照してください。

セキュリティで保護されたアプリケーション モデル

Microsoft Marketplace アプリケーションは、Microsoft API を呼び出すために CSP パートナー特権を偽装する必要があります。 これらの機密性の高いアプリケーションに対するセキュリティ攻撃は、顧客データの侵害につながる可能性があります。

新しい認証フレームワークの概要と詳細については、 セキュリティで保護されたアプリケーション モデル フレームワークを参照してください。このフレームワークでは、Marketplace アプリケーションをセキュリティ侵害から持続可能で堅牢なものにするための原則とベスト プラクティスについて説明します。

Samples

次の概要ドキュメントとサンプル コードでは、パートナーがセキュリティで保護されたアプリケーション モデル フレームワークを実装する方法について説明します。

REST

サンプル コードを使用して Secure Application Model フレームワークを使用して REST 呼び出しを行うには、次の手順に従います。

  1. Web アプリを作成する

Web アプリを作成する

  1. Azure portal にサインインします。

  2. Microsoft Entra アプリを作成します。

  3. アプリケーションの 要件に応じて、委任されたアプリケーションのアクセス許可を次のリソースに付与します。 必要に応じて、アプリケーション リソースの委任されたアクセス許可をさらに追加できます。

    1. Microsoft パートナー センター (一部のテナントでは SampleBECApp が表示されます)

    2. Azure Management API (Azure API を 呼び出す予定の場合)

    3. Windows Azure Active Directory

  4. アプリのホーム URL が、ライブ Web アプリが実行されているエンドポイントに設定されていることを確認します。 このアプリは、Microsoft Entra ログイン呼び出しからの 承認コード を受け入れる必要があります。 たとえば、次のセクションの コード例 では、Web アプリは https://localhost:44395/ で実行されています。

  5. Microsoft Entra ID の Web アプリの設定から、次の情報に注意してください。

    • アプリケーション識別子
    • アプリケーション シークレット

アプリケーション シークレットとして証明書を使用することをお勧めします。 ただし、Azure portal でアプリケーション キーを作成することもできます。 次のセクションのサンプル コードでは、アプリケーション キーを使用します。

承認コードを取得する

Web アプリが Microsoft Entra ログイン呼び出しから受け入れる認証コードを取得する必要があります。

  1. Microsoft Entra ID にサインインします。

    パートナー センター API の呼び出し元のユーザー アカウント (管理エージェントやセールス エージェント アカウントなど) を使用してログインしてください。

  2. Application-Id を Microsoft Entra アプリ ID (GUID) に置き換えます。

  3. プロンプトが表示されたら、MFA が構成されたユーザー アカウントでログインします。

  4. メッセージが表示されたら、さらに MFA 情報 (電話番号または電子メール アドレス) を入力してログインを確認します。

  5. ログインすると、ブラウザーによって、認証コードを使用して Web アプリ エンドポイントに呼び出しがリダイレクトされます。 たとえば、次のサンプル コードは 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":"3600","ext_expires_in":"3600","expires_on":"1547581389","not_before":"1547577489","resource":"https://api.partnercenter.microsoft.com","access_token":"AccessTokenValue","id_token":"IDTokenValue"}

アクセス トークンを取得する

パートナー センター 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

API 呼び出しの検証が MFA と統合されている

MFA で有効な API 呼び出しを行っていることを確認するには、要求ヘッダーに ValidateMfa を指定します。 その場合は、応答で isMfaCompliant を探します。

サンプル要求

GET https://api.partnercenter.microsoft.com/v1/customers/CustomerTenantId/users HTTP/1.1
... 
ValidateMfa: true   <-- Required header for MFA validation
... 

応答ヘッダーのサンプル

... 
isMfaCompliant: true <-- Key header indicating MFA compliance
... 

PowerShell

パートナー センター PowerShell モジュールを使用して、パートナー センター リソースを管理できます。 これは、パートナー コミュニティによって管理され、Microsoft によって正式にサポートされていないオープンソース プロジェクトです。 問題が発生した場合は 、コミュニティからヘルプを受 けたり 、GitHub で問題を開 いたりすることができます。

パートナー センター PowerShell モジュールを使用して、アクセス トークンの承認コードを交換するために必要なインフラストラクチャを減らすことができます。 このメソッドは、 パートナー センターの REST 呼び出しを行う場合は省略可能です。

このプロセスの詳細については、 Secure App Model 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 でセキュリティで保護されたアプリケーション モジュールを使用する方法の詳細については、 多要素認証 に関する記事を参照してください。