次の方法で共有


方法: クラウド ベース RMS でのサービス アプリケーション使用の有効化

重要

2020 年 3 月より前にリリースされた Microsoft Rights Management Service SDK のバージョンは非推奨です。以前のバージョンを使用するアプリケーションは、2020 年 3 月のリリースを使用するように更新する必要があります。 詳細については、 非推奨の通知を参照してください。

Microsoft Rights Management Service SDK の追加の機能強化は計画されていません。 分類、ラベル付け、保護サービスにMicrosoft Information Protection SDK を導入することを強くお勧めします。

このトピックでは、Azure Rights Management を使用するようにサービス アプリケーションをセットアップする手順について説明します。 詳細については、「Azure Rights Management の概要」を参照してください。

重要
Rights Management Services SDK 2.1 サービスを Azure RMS で利用するには、独自のテナントを作成する必要があります。 詳細については、「Azure RMS の要件: Azure RMS をサポートするクラウド サブスクリプション」を参照してください。

前提条件

Azure Rights Management サービスへの接続

  • IpcInitialize を呼び出します。

  • IpcSetGlobalProperty を設定します。

    int mode = IPC_API_MODE_SERVER;
    IpcSetGlobalProperty(IPC_EI_API_MODE, &(mode));
    

    メモ詳細については、「API セキュリティ モードの設定」を参照してください。

  • 次の手順は、pcCredential (IPC_CREDENTIAL) メンバーに Azure Rights Management Service からの接続情報が設定されたIPC_PROMPT_CTX構造体のインスタンスを作成するためのセットアップです。

  • 対称キー サービス ID の作成の情報 (このトピックで前述した前提条件を参照) を使用して、IPC_CREDENTIAL_SYMMETRIC_KEY構造体のインスタンスを作成するときに wszServicePrincipalwszBposTenantIdおよび cbKey パラメーターを設定します。

- 探索サービスの既存の条件により、北米以外の地域では、対称キーの資格情報が他の地域から受け入れられないため、テナント URL を直接指定する必要があります。 これは、関数 IpcGetTemplateList または IpcGetTemplateIssuerListpConnectionInfo パラメーター (IPC_CONNECTION_INFO 型) を使用して行われます

対称キーの生成と必要な情報の収集

対称キーを生成する手順

- Powershell コマンドレットを使用するには、テナントの管理者でなければなりません。

  • Powershell を起動し、次のコマンドを実行してキーを生成します。

    Import-Module MSOnline

    Connect-MsolService (管理者の資格情報を入力します)

    New-MsolServicePrincipal (表示名を入力します)

  • 対称キーの生成後、キー自体と AppPrincipalId を含むキーに関する情報が出力されます。

    The following symmetric key was created as one was not supplied
    ZYbF/lTtwE28qplQofCpi2syWd11D83+A3DRlb2Jnv8=
    
    DisplayName : RMSTestApp
    ServicePrincipalNames : {7d9c1f38-600c-4b4d-8249-22427f016963}
    ObjectId : 0ee53770-ec86-409e-8939-6d8239880518
    AppPrincipalId : 7d9c1f38-600c-4b4d-8249-22427f016963
    

TenantBposIdURL を調べる手順

  • Azure RMS PowerShell モジュールをインストールします。

  • Powershell を起動し、次のコマンドを実行してテナントの RMS 構成を取得します。

    Import-Module AIPService

    Connect-AipService (管理者の資格情報を入力します)

    Get-AipServiceConfiguration

  • IPC_CREDENTIAL_SYMMETRIC_KEYのインスタンスを作成し、いくつかのメンバーを設定します。

    // Create a key structure.
    IPC_CREDENTIAL_SYMMETRIC_KEY symKey = {0};
    
    // Set each member with information from service creation.
    symKey.wszBase64Key = "your service principal key";
    symKey.wszAppPrincipalId = "your app principal identifier";
    symKey.wszBposTenantId = "your tenant identifier";
    

詳細については、 IPC_CREDENTIAL_SYMMETRIC_KEYを参照してください。

  • IPC_CREDENTIAL_SYMMETRIC_KEY インスタンスを含む IPC_CREDENTIAL 構造体 のインスタンスを 作成します。

    - connectionInfo メンバーには、直前に Get-AipServiceConfiguration を呼び出したときの URL が設定され、ここではそのフィールド名を示します。

    // Create a credential structure.
    IPC_CREDENTIAL cred = {0};
    
    IPC_CONNECTION_INFO connectionInfo = {0};
    connectionInfo.wszIntranetUrl = LicensingIntranetDistributionPointUrl;
    connectionInfo.wszExtranetUrl = LicensingExtranetDistributionPointUrl;
    
    // Set each member.
    cred.dwType = IPC_CREDENTIAL_TYPE_SYMMETRIC_KEY;
    cred.pcCertContext = (PCCERT_CONTEXT)&symKey;
    
    // Create your prompt control.
    IPC_PROMPT_CTX promptCtx = {0};
    
    // Set each member.
    promptCtx.cbSize = sizeof(IPC_PROMPT_CTX);
    promptCtx.hwndParent = NULL;
    promptCtx.dwflags = IPC_PROMPT_FLAG_SILENT;
    promptCtx.hCancelEvent = NULL;
    promptCtx.pcCredential = &cred;
    

テンプレートの識別と暗号化

  • 暗号化に使用するテンプレートを選択します IPC_PROMPT_CTXの同じインスタンスを渡す IpcGetTemplateList を呼び出します。

    PCIPC_TIL pTemplates = NULL;
    IPC_TEMPLATE_ISSUER templateIssuer = (pTemplateIssuerList->aTi)[0];
    
    hr = IpcGetTemplateList(&(templateIssuer.connectionInfo),
           IPC_GTL_FLAG_FORCE_DOWNLOAD,
           0,
           &promptCtx,
           NULL,
           &pTemplates);
    
  • このトピックの前半のテンプレートを使用して IpcfEncrcyptFile を呼び出し、 IPC_PROMPT_CTXの同じインスタンスを渡します。

    IpcfEncrcyptFile の使用例:

    LPCWSTR wszContentTemplateId = pTemplates->aTi[0].wszID;
    hr = IpcfEncryptFile(wszInputFilePath,
           wszContentTemplateId,
           IPCF_EF_TEMPLATE_ID,
           IPC_EF_FLAG_KEY_NO_PERSIST,
           &promptCtx,
           NULL,
           &wszOutputFilePath);
    

    IpcfDecryptFile の使用例:

    hr = IpcfDecryptFile(wszInputFilePath,
           IPCF_DF_FLAG_DEFAULT,
           &promptCtx,
           NULL,
           &wszOutputFilePath);
    

アプリケーションでの Azure Rights Management 使用の有効化に必要な手順が完了しました。