二重キー暗号化を設定する

Microsoft Purview サービスの説明

サービスの説明: Microsoft Purview

DKE を設定するには、次の一般的な手順に従います。 これらの手順を完了すると、エンド ユーザーは二重キー暗号化を使用して機密性の高いデータを保護できます。

  1. この記事の説明に従って DKE サービスをデプロイします。 環境が最小システム要件とライセンス要件を満たしていることを確認します。 詳細については、「 DKE のシステム要件とライセンス要件」を参照してください。

  2. 二重キー暗号化を使用してラベルを作成します。 Microsoft Purview ポータルで、[ 情報保護 ] に移動し、二重キー暗号化を使用して新しいラベルを作成します。 「 秘密度ラベルを使用してコンテンツへのアクセスを制限し、暗号化を適用する」を参照してください。

  3. 二重キー暗号化ラベルを使用できるように、クライアント デバイス上のレジストリを構成します。 次に、Microsoft Office の [秘密度] リボンから [暗号化された二重キー] ラベルを選択して、データを保護します。

二重キー暗号化を展開する手順の一部を完了する方法はいくつかあります。 この記事では、経験の浅い管理者がサービスを正常にデプロイするための詳細な手順を説明します。 これを行うことに抵抗がない場合は、独自の方法を使用することを選択できます。

DKE のデプロイ

この記事と展開ビデオでは、DKE サービスの展開先として Azure を使用します。 別の場所に展開する場合は、独自の値を指定する必要があります。

次の一般的な手順に従って、organization の二重キー暗号化を設定します。

  1. DKE サービスのソフトウェアの前提条件をインストールする
  2. Double Key Encryption GitHub リポジトリを複製する
  3. アプリケーション設定の変更
  4. テスト キーを生成する
  5. プロジェクトをビルドする
  6. DKE サービスをデプロイし、キー ストアを発行する
  7. 展開を検証する
  8. キー ストアを登録する
  9. DKE を使用して秘密度ラベルを作成する
  10. 保護されたファイルを HYOK ラベルから DKE ラベルに移行する

完了したら、DKE を使用してドキュメントとファイルを暗号化できます。 詳細については、「 Office のファイルとメールに機密ラベルを適用する」を参照してください。

DKE サービスのソフトウェアの前提条件をインストールする

これらの前提条件を DKE サービスをインストールするコンピューターにインストールします。

.NET 8.0 SDK。 . NET 8.0 をダウンロードするときに SDK をダウンロードしてインストールします。

Visual Studio Code。 https://code.visualstudio.com/ から Visual Studio Code をダウンロードします。 インストールしたら、Visual Studio Code を実行し、[ 表示>拡張機能] を選択します。 これらの拡張機能をインストールします。

  • C# for Visual Studio Code

  • NuGet パッケージ マネージャー

Git リソース。 次のいずれかをダウンロードしてインストールします。

OpenSSL。 DKE をデプロイした後にテスト キーを生成するには、OpenSSL がインストールされている必要があります。 環境変数のパスから正しく呼び出していることを確認してください。 詳細については、 https://www.osradar.com/install-openssl-windows/ の「インストール ディレクトリを PATH に追加する」を参照してください。

DKE GitHub リポジトリを複製する

Microsoft は GitHub リポジトリ内の DKE ソース ファイルを提供します。 リポジトリを複製して、organization で使用できるようにプロジェクトをローカルにビルドします。 DKE GitHub リポジトリは、 https://github.com/Azure-Samples/DoubleKeyEncryptionService にあります。

以下の手順は、経験の浅い git または Visual Studio Code ユーザーを対象としています。

  1. ブラウザーで、 https://github.com/Azure-Samples/DoubleKeyEncryptionService に移動します。

  2. 画面の右側にある [ コード] を選択します。 お使いのバージョンの UI では、[ クローン] ボタンまたは [ダウンロード ] ボタンが表示される場合があります。 次に、表示されるドロップダウンでコピー アイコンを選択して、クリップボードに URL をコピーします。

    例:

    GitHub から二重キー暗号化サービス リポジトリを複製します。

  3. Visual Studio Code で、[表示]>コマンド パレットを選択し、[Git: 複製] を選択します。 リスト内のオプションにジャンプするには、「 git: clone 」を入力してエントリをフィルター処理し、ドロップダウンから選択します。 例:

    Visual Studio Code GIT:Clone オプション。

  4. テキスト ボックスに、Git からコピーした URL を貼り付け、[ GitHub から複製] を選択します。

  5. 表示される [フォルダーの選択 ] ダイアログで、リポジトリを格納する場所を参照して選択します。 [開く]を選択します。

    リポジトリが Visual Studio Code で開き、左下に現在の Git ブランチが表示されます。 ブランチは main である必要があります。 例:

    main ブランチが表示されている Visual Studio Code の DKE リポジトリのスクリーンショット。

  6. main ブランチにいない場合は、それを選択します。 Visual Studio Code でブランチを選択し、表示されるブランチの一覧から [main ] を選択します。

    重要

    main ブランチを選択すると、プロジェクトをビルドするための正しいファイルが確保されます。 正しいブランチを選択しないと、デプロイが失敗します。

これで、DKE ソース リポジトリがローカルに設定されました。 次に、organizationのアプリケーション設定を変更します。

アプリケーション設定の変更

DKE サービスをデプロイするには、次の種類のアプリケーション設定を変更する必要があります。

appsettings.json ファイル内のアプリケーション設定を変更する。 このファイルは、ローカルで複製した DoubleKeyEncryptionService リポジトリの DoubleKeyEncryptionService\src\customer-key-store にあります。 たとえば、Visual Studio Code では、次の図に示すようにファイルを参照できます。

DKE のappsettings.json ファイルの検索。

キー アクセス設定

メールまたはロールの承認のどちらを使用するかを選択します。 DKE は、これらの認証方法を一度に 1 つだけサポートします。

  • Email authorization. organization が電子メール アドレスのみに基づいてキーへのアクセスを承認できるようにします。

  • ロールの承認。 organization が Active Directory グループに基づいてキーへのアクセスを承認できることを許可し、Web サービスが LDAP を照会できることが必要です。

メール認証を使用して DKE のキー アクセス設定を設定するには
  1. appsettings.json ファイルを開き、AuthorizedEmailAddress設定を見つけます。

  2. 承認する 1 つまたは複数のメール アドレスを追加します。 複数のメール アドレスは、二重引用符とコンマで区切ります。 例:

    "AuthorizedEmailAddress": ["email1@company.com", "email2@company.com ", "email3@company.com"]
    
  3. LDAPPath設定を見つけて、二重引用符の間のテキスト If you use role authorization (AuthorizedRoles) then this is the LDAP path.を削除します。 二重引用符はそのままにしておきます。 完了すると、設定は次のようになります。

    "LDAPPath": ""
    
  4. AuthorizedRoles設定を見つけて、行全体を削除します。

この画像は、メール認証用に正しくフォーマットされた appsettings.json ファイルを示しています。

メールの認証方法を示すappsettings.jsonファイル。

ロール承認を使用して DKE のキー アクセス設定を設定するには
  1. appsettings.json ファイルを開き、AuthorizedRoles設定を見つけます。

  2. 承認する Active Directory グループ名を追加します。 複数のグループ名は、二重引用符とコンマで区切ります。 例:

    "AuthorizedRoles": ["group1", "group2", "group3"]
    
  3. LDAPPath設定を見つけて、Active Directory ドメインを追加します。 例:

    "LDAPPath": "contoso.com"
    
  4. AuthorizedEmailAddress設定を見つけて、行全体を削除します。

この画像は、ロール承認用に正しくフォーマットされた appsettings.json ファイルを示しています。

ロールの承認方法を示す appsettings.json ファイル。

テナントとキーの設定

DKE テナントとキーの設定は、 appsettings.json ファイルにあります。

DKE のテナントとキー設定を構成するには
  1. appsettings.json ファイルを開きます。

  2. ValidIssuers設定を見つけて、<tenantid>テナント ID に置き換えます。テナント ID の末尾にあるスラッシュを忘れないようにしてください。 テナント ID を見つけるには、Azure portal にアクセスしてテナントのプロパティを表示します。 例:

    "ValidIssuers": [
    "https://sts.windows.net/9c99431e-b513-44be-a7d9-e7b500002d4b/"
    ]
    
    

注:

キー ストアへの外部 B2B アクセスを有効にする場合は、これらの外部テナントを有効な発行者のリストの一部として含める必要もあります。

JwtAudienceを見つけます。 json 内のプレースホルダー値 ( "https://dkeservice.contoso.com" ) を、DKE サービスを実行するマシンのホスト名に置き換えます。

重要

JwtAudience の値は、ホストの名前と正確に一致する必要があります。

  • TestKeys:Name. キーの名前を入力します。 例: TestKey1
  • TestKeys:Id. GUID を作成し、それを TestKeys:ID 値として入力します。 たとえば、「 DCE1CC21-FF9B-4424-8FF4-9914BD19A1BE 」のように入力します。 Online GUID Generator などのサイトを使用して、GUID をランダムに生成できます。
  • JwtAuthorization. {tenant-id}テナント ID に置き換えます。

次の json は、 appsettings.json のテナントとキーの設定の正しい形式を示しています。 LDAPPath は、ロールの承認用に構成されています。

{
  "TokenValidationParameters": {
    "ValidIssuers": [
      "https://sts.windows.net/9c99431e-b513-44be-a7d9-e7b50002d4b/"
    ]
  },
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  "JwtAudience": "https://dkeservice.contoso.com/",
  "JwtAuthorization": "https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize",
  "RoleAuthorizer": {
    "LDAPPath": ""
  },
  "TestKeys": [
    {
      "Name": "TestKey1",
      "Id": "DCE1CC21-FF98-4424-8FF4-9914BD19A1BE"
    }
  ]
}

テスト キーを生成する

アプリケーション設定を定義したら、公開テスト キーと秘密テスト キーを生成する準備が整います。

キーを生成するには:

  1. Windows の [スタート] メニューから、OpenSSL コマンド プロンプトを実行します。

  2. テスト キーを保存するフォルダーに移動します。 このタスクの手順を完了して作成するファイルは、同じフォルダーに保存されます。

  3. 新しいテスト キーを生成します。

    openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
    
  4. 秘密キーを生成します。

    OpenSSL バージョン 3 以降をインストールした場合は、次のコマンドを実行します。

    openssl rsa -in key.pem -out privkeynopass.pem -outform PEM -traditional
    

    それ以外の場合は、次のコマンドを実行します。

    openssl rsa -in key.pem -out privkeynopass.pem -outform PEM
    
  5. 公開キーを生成します。

    openssl rsa -in key.pem -pubout > pubkeyonly.pem
    
  6. テキスト エディターで、 pubkeyonly.pem を開きます。 pubkeyonly.pem ファイル内のすべての内容 (最初と最後の行を除く) を、appsettings.json ファイルの PublicPem セクションにコピーします。

  7. テキスト エディターで、 privkeynopass.pem を開きます。 privkeynopass.pem ファイル内のすべての内容 (最初と最後の行を除く) を、appsettings.json ファイルの PrivatePem セクションにコピーします。

  8. PublicPem セクションと PrivatePem セクションの両方の空白と改行をすべて削除します。

    重要

    このコンテンツをコピーするときは、PEM データを削除しないでください。

  9. Visual Studio Code で、 Startup.cs ファイルを参照します。 このファイルは、ローカルで複製した DoubleKeyEncryptionService リポジトリの DoubleKeyEncryptionService\src\customer-key-store にあります。

  10. 次の行を見つけます:

    #if USE_TEST_KEYS
    #error !!!!!!!!!!!!!!!!!!!!!! Use of test keys is only supported for testing,
    DO NOT USE FOR PRODUCTION !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    services.AddSingleton<ippw.IKeyStore, ippw.TestKeyStore>();
    #endif
    
  11. これらの行を次のテキストに置き換えます。

    services.AddSingleton<ippw.IKeyStore, ippw.TestKeyStore>();
    

    最終結果は次のようになります。

    パブリック プレビュー用のファイルをstartup.csします。

これで、 DKE プロジェクトをビルドする準備ができました。

プロジェクトをビルドする

DKE プロジェクトをローカルでビルドするには、次の手順に従います。

  1. Visual Studio Code の DKE サービス リポジトリで、[ 表示>コマンド パレット ] を選択し、プロンプトで 「build 」と入力します。

  2. リストから、[ Tasks: Run build task] を選択します。

    ビルド タスクが見つからない場合は、[ ビルド タスクの構成 ] を選択し、次のように .NET Core 用に作成します。

    不足している .NET のビルド タスクを構成します。

    1. [ Create tasks.json from template] (テンプレートから作成) を選択します。

      テンプレートから DKE のtasks.jsonファイルを作成します。

    2. テンプレートの種類の一覧から、[ .NET Core] を選択します。

      DKE の正しいテンプレートを選択します。

    3. ビルド セクションで、 customerkeystore.csproj ファイルへのパスを見つけます。 削除されない場合は、次の行を追加します。

      "${workspaceFolder}/src/customer-key-store/customerkeystore.csproj",
      
    4. ビルドを再度実行してください。

  3. 出力ウィンドウに赤いエラーがないことを確認します。

    赤いエラーがある場合は、コンソール出力をチェックします。 前のすべての手順を正しく完了していること、および正しいビルド バージョンが存在することを確認してください。

これでセットアップが完了しました。 キーストアを公開する前に、appsettings.json で、JwtAudience 設定のホスト名の値がApp Serviceホスト名と完全に一致することを確認してください。

DKE サービスをデプロイし、キー ストアを発行する

運用環境のデプロイの場合は、サードパーティのクラウドにサービスをデプロイするか、 オンプレミス システムに公開します。

キーをデプロイするには、他の方法をお勧めします。 あなたの organization に最適な方法を選択します。

パイロット デプロイの場合は、Azure にデプロイしてすぐに使用を開始できます。

DKE デプロイをホストする Azure Web App インスタンスを作成するには

キー ストアを発行するには、DKE デプロイをホストする Azure App Service インスタンスを作成します。 次に、生成されたキーを Azure に発行します。

  1. ブラウザーで Microsoft Azure portal にサインインし、[App Services]、[Create > Web App] の順に移動します>

  2. 新しいリソース グループを作成するか、既存のリソース グループを選択します。

  3. インスタンスの名前を指定します (例: contosodke1)。 この名前は構成ファイル内の名前と一致しません。 名前に指定する値は、WebAppInstanceName でもあります。

  4. 価格プランで、カスタム ドメインを許可するサイズを選択します (例: Basic B1)。

  5. [ 発行] で コードを選択し、[ ランタイム スタック] で [.NET 8 (LTS)] を選択します。

  6. [確認 + 作成] を選択します

例:

Web アプリを作成する

  1. 新しく作成した Web アプリで、[設定]、[カスタム ドメイン] の順に移動し、[カスタム ドメインの追加] を選択します

  2. [ドメイン プロバイダー] で、[その他のすべてのドメイン サービス] を選択します

  3. [ ドメイン] に、DKE サービスをインストールするコンピューターのホスト名を入力します。

重要

ホスト名が、appsettings.json ファイルの JwtAudience 設定に定義されているものと同じであることを確認します。

  1. パブリック DNS で、[ドメインの検証] セクションに示されている変更案を実行し、[ 検証] を選択します。

例:

カスタム ドメインの追加.

  1. 生成されたキーを公開するには、次の操作を行います。

(例: FTP)

ZipDeployUI を使用した発行

  1. https://<WebAppInstanceName>.scm.<location>.azurewebsites.net/ZipDeployUIに移動します。

    例: https://dkeservice-ctaugtfwh7d3c3c.scm.westcentralus-01.azurewebsites.net/ZipDeployUI

  2. PowerShell プロンプトを起動します。

  3. キー ストアのコードベースで、 customer-key-store\src\customer-key-store フォルダーに移動し、このフォルダーに customerkeystore.csproj ファイルが含まれていることを確認します。

  4. 実行: dotnet publish

    出力ウィンドウには、公開が配置されたディレクトリが表示されます。

    例: customer-key-store\src\customer-key-store\bin\Debug\net8.0\publish\

  5. 発行ディレクトリ内のすべてのファイルを .zip ファイルに送信します。 .zip ファイルを作成するときは、ディレクトリ内のすべてのファイルが .zip ファイルのルート レベルにあることを確認してください。

  6. 作成した .zip ファイルを、前に開いた ZipDeployUI サイトにドラッグ アンド ドロップします。

DKE がデプロイされ、作成したテスト キーを参照できます。 引き続き、この記事の 展開を検証 します。

展開を検証する

この記事で説明する方法のいずれかを使用して DKE をデプロイした後、デプロイとキー ストアの設定を検証します。

実行:

src\customer-key-store\scripts\key_store_tester.ps1 dkeserviceurl/mykey

例:

key_store_tester.ps1 https://dkeservice.contoso.com/TestKey1

出力にエラーが表示されないことを確認します。 準備ができたら、 キー ストアを登録します。

キー名は大文字と小文字が区別されます。 appsettings.json ファイルに表示されるキー名を入力します。

キー ストアを登録する

次の手順により、DKE サービスを登録できます。 DKE サービスの登録は、ラベルの作成を開始する前の DKE デプロイの最後のステップです。

DKE サービスを登録するには:

  1. ブラウザーで Microsoft Azure portalを開き、[すべてのサービス>Identity>App の登録] に移動します。

  2. [ 新規登録] を選択し、わかりやすい名前を入力します。

  3. 表示されたオプションからアカウントの種類を選択します。

    例:

    新しいアプリの登録。

  4. ページの下部にある [登録 ] を選択して、新しいアプリ登録を作成します。

  5. 新しいアプリの登録で、左側のウィンドウの [管理] で、[ 認証] を選択します。

  6. [プラットフォームの追加] を選択します。

  7. [ プラットフォームの構成] ポップアップで、[ Web] を選択します。

  8. [ リダイレクト URI] で、二重キー暗号化サービスの URI を入力します。 ホスト名とドメインの両方を含む App Service URL を入力します。

    例: https://mydkeservicetest.com

    • 入力する URL は、DKE サービスが展開されているホスト名と一致する必要があります。
    • ドメインは 検証済みドメインである必要があります。
    • すべての場合において、スキームは https である必要があります。

    ホスト名が App Service のホスト名と完全に一致していることを確認します。

  9. [ 暗黙的な許可] で、[ ID トークン] チェック ボックスをオンにします 。

  10. [保存] を選択し、変更内容を保存します。

  11. 左側のウィンドウで [API の公開] を選択し、 [アプリケーション ID URI] の横にある App Service URL (ホスト名とドメインの両方を含む) を入力して、[設定] を選択します。

  12. 引き続き、[ API の公開 ] ページの [この API で定義されるスコープ ] 領域で、 [ スコープの追加] を選択します。 新しいスコープでは、以下のようになります。

    1. スコープ名を user_impersonation として定義します。

    2. 同意できる管理者とユーザーを選択します。

    3. 必要な残りの値を定義します。

    4. [スコープの追加] を選択します。

    5. 上部にある [保存 ] を選択して、変更を保存します。

  13. 引き続き、[ API の公開 ] ページの [承認されたクライアント アプリケーション ] 領域で、[ クライアント アプリケーションの追加] を選択します。

    新しいクライアント アプリケーションの場合:

    1. クライアント ID を d3590ed6-52b3-4102-aeff-aad2292ab01c として定義します。 この値は Microsoft Office クライアント ID であり、Office がキー ストアのアクセス トークンを取得できるようにします。

    2. [ 承認済みスコープ] で、 user_impersonation スコープを選択します。

    3. [アプリケーションの追加] を選択します。

    4. 上部にある [保存 ] を選択して、変更を保存します。

    5. これらの手順を繰り返しますが、今回はクライアント ID を 00001111-aaaa-2222-bbbb-3333cccc4444 として定義します。 この値は Purview Information Protection クライアント ID です。

DKE サービスが登録されました。 DKE を使用してラベルを作成して続行します。

DKE を使用して秘密度ラベルを作成する

Microsoft Purview ポータルで、新しい秘密度ラベルを作成し、他の方法と同様に暗号化を適用します。 [ 二重キー暗号化を使用する ] を選択し、キーのエンドポイント URL を入力します。 URL のappsettings.jsonファイルの "TestKeys" セクションに指定したキー名を含める必要があります。

例: https://testingdke1.azurewebsites.net/KEYNAME

Microsoft Purview ポータルで [二重キー暗号化を使用する] を選択します。

追加した DKE ラベルは、最新バージョンの Microsoft 365 Apps for enterprise のユーザーに表示されます。

注:

クライアントが新しいラベルで更新されるまでに最大 24 時間かかる場合があります。

保護されたファイルを HYOK ラベルから DKE ラベルに移行する

必要に応じて、DKE の設定が完了したら、HYOK ラベルを使用して保護したコンテンツを DKE ラベルに移行できます。 移行するには、Microsoft Purview Information Protection スキャナーを使用します。 スキャナーの使用を開始するには、「 Information Protection スキャナーについて」を参照してください。

コンテンツを移行しない場合、HYOK で保護されたコンテンツは影響を受けません。

その他の展開のオプション

Microsoft は、規制の厳しい業界の一部のお客様にとっては、ソフトウェア ベースのキーを使用したこの標準的な参照実装では、強化されたコンプライアンス義務とニーズを満たすのに十分ではない可能性があることを認識しています。 サード パーティのハードウェア セキュリティ モジュール (HSM) ベンダーと提携して、次のような DKE サービスの拡張キー管理オプションをサポートしています。

これらのベンダーの市場における DKE HSM ソリューションの詳細とガイダンスについては、これらのベンダーに直接お問い合わせください。

DKE 秘密度ラベルを適用するようにクライアントを設定する

各クライアント デバイスで、このタスクを完了します。

  1. 次のレジストリ値が各クライアントで定義されていることを確認します。 まだ存在しないレジストリ キーを作成します。

    [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSIPC\flighting]
    "DoubleKeyProtection"=dword:00000001
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSIPC\flighting]
    "DoubleKeyProtection"=dword:00000001