Share via


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

適用対象: Microsoft Purview Double Key Encryption、Microsoft PurviewAzure Information Protection

サービスの説明: Microsoft Purview

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

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

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

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

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

DKE のデプロイ

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

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

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

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

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

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

.NET Core 7.0 SDK.NET Core 7.0 のダウンロードから SDK をダウンロードしてインストールします。

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

  • Visual Studio Code の C#

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

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

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

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 から Double Key Encryption サービス リポジトリを複製します。

  3. Visual Studio Code で、[コマンド パレットの表示>] を選択し、[Git: Clone] を選択します。 一覧のオプションに移動するには、入力 git: clone を開始してエントリをフィルター処理し、ドロップダウンから選択します。 以下に例を示します。

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

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

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

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

    visual Studio Code の DKE リポジトリのスクリーンショット。メイン ブランチが表示されています。

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

    重要

    メイン ブランチを選択すると、プロジェクトをビルドするための適切なファイルが確実に作成されます。 正しいブランチを選択しないと、デプロイは失敗します。

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

アプリケーション設定を変更する

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

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

DKE のappsettings.json ファイルを見つける。

キー アクセス設定

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

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

  • ロールの承認。 organizationが Active Directory グループに基づいてキーへのアクセスを承認できるようにすると、Web サービスが LDAP に対してクエリを実行できる必要があります。

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

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

    "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 見つけて、テナント ID に置き換えます <tenantid> 。 テナント ID を見つけるには、Azure portalに移動し、テナントのプロパティを表示します。 例:

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

注:

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

JwtAudience見つけます。 を、DKE サービスを実行するマシンのホスト名に置き換えます <yourhostname> 。 例: "https://dkeservice.contoso.com"

重要

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

  • TestKeys:Name. キーの名前を入力します。 例: TestKey1
  • TestKeys:Id. GUID を作成し、値として入力します TestKeys:ID 。 たとえば、「 DCE1CC21-FF9B-4424-8FF4-9914BD19A1BE 」のように入力します。 オンライン GUID ジェネレーターのようなサイトを使用して、GUID をランダムに生成できます。

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

appsettings.json ファイルに DKE の正しいテナントとキーの設定を表示します。

テスト キーを生成する

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

キーを生成するには:

  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. セクションと PrivatePem セクションの両方のすべての空白と改行をPublicPem削除します。

    重要

    このコンテンツをコピーするときは、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. 一覧から [ タスク: ビルド タスクの実行] を選択します。

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

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

    1. [ テンプレートからtasks.jsonを作成する] を選択します。

      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>の追加] に移動します。

  2. サブスクリプションとリソース グループを選択し、インスタンスの詳細を定義します。

    • DKE サービスをインストールするコンピューターのホスト名を入力します。 appsettings.json ファイルの JwtAudience 設定に定義されている名前と同じ名前であることを確認します。 名前に指定する値は、WebAppInstanceName でもあります。

    • [ 発行]コードを選択し、[ ランタイム スタック] で [.NET Core 3.1] を選択します。

    以下に例を示します。

    App Serviceを追加します。

  3. ページの下部にある [ 確認と作成] を選択し、[ 追加] を選択します。

  4. 生成されたキーを発行するには、次のいずれかの操作を行います。

ZipDeployUI 経由で発行する

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

    例: https://dkeservice.contoso.scm.azurewebsites.net/ZipDeployUI

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

  3. 実行: dotnet publish

    出力ウィンドウには、発行がデプロイされたディレクトリが表示されます。

    例: customer-key-store\src\customer-key-store\bin\Debug\netcoreapp3.1\publish\

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

  5. 作成した .zip ファイルを、前に開いた ZipDeployUI サイトにドラッグ アンド ドロップします。 例: https://dkeservice.scm.azurewebsites.net/ZipDeployUI

DKE がデプロイされ、作成したテスト キーを参照できます。 この記事の 「デプロイの検証」 に進みます。

FTP 経由で発行する

  1. 前に作成したApp Service接続します。

    ブラウザーで、[Azure portal>App Service>Deployment Center>手動デプロイFTP>ダッシュボード] > に移動します。

  2. 表示されている接続文字列をローカル ファイルにコピーします。 これらの文字列を使用して Web App Serviceに接続し、FTP 経由でファイルをアップロードします。

    以下に例を示します。

    FTP ダッシュボードから接続文字列をコピーします。

  3. キー ストレージのコードベースで、 customer-key-store\src\customer-key-store ディレクトリに移動します。

  4. このディレクトリに customerkeystore.csproj ファイルが含まれていることを確認します。

  5. 実行: dotnet publish

    出力には、発行がデプロイされたディレクトリが含まれます。

    例: customer-key-store\src\customer-key-store\bin\Debug\netcoreapp3.1\publish\

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

  7. FTP クライアントから、コピーした接続情報を使用してApp Serviceに接続します。 前の手順で作成した .zip ファイルを Web アプリのルート ディレクトリにアップロードします。

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を開き、[すべてのサービス>ID>アプリの登録] に移動します。

  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 を として c00e9d32-3c8d-4a7d-832b-029040e7db99定義します。 この値は、情報保護クライアント ID です。

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

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

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

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

Microsoft Purview コンプライアンス ポータルで [二重キー暗号化を使用する] を選択します。

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

注:

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

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

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

コンテンツを移行しない場合、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