Share via


設定雙重金鑰加密

適用於:Microsoft Purview 雙重密鑰加密、Microsoft PurviewAzure 資訊保護

服務描述: Microsoft Purview

請遵循這些一般步驟來設定 DKE。 完成這些步驟之後,終端使用者就可以使用雙重密鑰加密來保護您的高度敏感數據。

  1. 部署 DKE 服務,如本文所述。 請確定您的環境符合最低系統和授權需求。 如需詳細資訊,請參閱 DKE 的系統和授權需求

  2. 建立具有雙重密鑰加密的標籤。 在 Microsoft Purview 合規性入口網站 中,流覽至 [信息保護],並使用雙重密鑰加密建立新的標籤。 請參閱 使用敏感度標籤來套用加密來限制對內容的存取

  3. 在用戶端裝置上設定登錄,讓您可以使用雙重密鑰加密標籤。 接下來,從 Microsoft Office 的 [敏感度] 功能區選取 [雙重密鑰加密] 標籤來保護您的數據。

有數種方式可讓您完成部署雙重密鑰加密的一些步驟。 本文提供詳細指示,讓經驗較差的系統管理員成功部署服務。 如果您願意這麼做,您可以選擇使用自己的方法。

部署 DKE

本文和部署影片會使用 Azure 作為 DKE 服務的部署目的地。 如果您要部署到另一個位置,則必須提供自己的值。

請遵循下列一般步驟,為您的組織設定雙重密鑰加密。

  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 資源。 下載並安裝下列其中一項。

Openssl 您必須安裝 OpenSSL ,才能在部署 DKE 之後 產生測試金鑰 。 請確定您已從環境變數路徑正確叫用它。 例如,如需詳細資訊,請參閱 將安裝目錄新增至PATH https://www.osradar.com/install-openssl-windows/

複製 DKE GitHub 存放庫

Microsoft 會在 GitHub 存放庫中提供 DKE 來源檔案。 您可以複製存放庫,在本機建置專案以供組織使用。 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: Clone]。 若要跳到清單中的選項,請開始輸入 git: clone 以篩選專案,然後從下拉式清單中選取它。 例如:

    Visual Studio Code GIT:Clone 選項。

  4. 在文本框中,貼上您從 Git 複製的 URL,然後選取 [ 從 GitHub 複製]

  5. 在出現的 [ 選取資料夾 ] 對話框中,瀏覽並選取儲存機制的位置。 選取 [開啟]

    存放庫會在 Visual Studio Code 中開啟,並在左下方顯示目前的 Git 分支。 分支應該是 main。 例如:

    顯示主要分支 Visual Studio Code 中 DKE 存放庫的螢幕快照。

  6. 如果您不在 main 分支上,請選取它。 在 Visual Studio Code 中,選取分支,然後從顯示的分支清單中選擇 main

    重要事項

    選取main分支可確保您擁有正確的檔案來建置專案。 如果您未選擇正確的分支,您的部署將會失敗。

您現在已在本機設定 DKE 來源存放庫。 接下來, 修改 組織的應用程式設定。

修改應用程式設定

若要部署 DKE 服務,您必須修改下列類型的應用程式設定:

您可以修改appsettings.json檔案中的應用程式設定。 此檔案位於您在 DoubleKeyEncryptionService\src\customer-key-store 下本機複製的 DoubleKeyEncryptionService 存放庫中。 例如,在 Visual Studio Code 中,您可以瀏覽至檔案,如下圖所示。

尋找 DKE 的appsettings.json檔案。

金鑰存取設定

選擇要使用電子郵件或角色授權。 DKE 一次只支援其中一種驗證方法。

  • Email 授權。 允許您的組織僅根據電子郵件地址授權金鑰的存取權。

  • 角色授權。 允許您的組織根據 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 並以您的租使用者識別碼取代 <tenantid> 。 您可以移至 Azure 入口網站 並檢視租用戶屬性,以找出您的租用戶標識碼。 例如:

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

注意事項

如果您想要啟用金鑰存放區的外部 B2B 存取,您也必須將這些外部租用戶納入為有效簽發者清單的一部分。

JwtAudience找出 。 將取代 <yourhostname> 為您要執行 DKE 服務之電腦的主機名。 例如:"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 檔案中的所有內容,除了第一行和最後一行,複製到PublicPemappsettings.json檔案的 區段中。

  7. 在文本編輯器中,開啟 privkeynopass.pem。 將 privkeynopass.pem 檔案中的所有內容,除了第一行和最後一行之外,複製到PrivatePemappsettings.json檔案的 區段中。

  8. 拿掉和區段中PublicPemPrivatePem的所有空白和換行符。

    重要事項

    當您複製此內容時,請勿刪除任何 PEM 資料。

  9. 在 Visual Studio Code 中,流覽至Startup.cs檔案。 此檔案位於您在 DoubleKeyEncryptionService\src\customer-key-store 下本機複製的 DoubleKeyEncryptionService 存放庫中。

  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 服務併發佈金鑰存放區

針對生產環境部署,請在第三方雲端中部署服務,或 發佈至內部部署系統

建議您使用其他方法來部署密鑰。 選取最適合您組織的方法。

針對試驗部署,您可以在 Azure 中部署並立即開始使用。

若要建立 Azure Web 應用程式實例來裝載 DKE 部署

若要發佈金鑰存放區,請建立 Azure App 服務 實例來裝載您的 DKE 部署。 接下來,將產生的金鑰發佈至 Azure。

  1. 在瀏覽器中,登入 Microsoft Azure 入口網站,然後移至 [應用程式服務>新增]

  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 入口網站>App Service>部署中心>手動部署>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 入口網站,然後移至 [所有服務>身分識別>應用程式註冊]

  2. 取 [新增註冊],然後輸入有意義的名稱。

  3. 從顯示的選項中選取帳戶類型。

    例如:

    新增應用程式註冊。

  4. 在頁面底部,選取 [ 註冊 ] 以建立新的應用程式註冊。

  5. 在新的應用程式註冊中,於左窗格的 [ 管理] 下方,選取 [ 驗證]

  6. 取 [新增平臺]

  7. 在 [ 設定平臺 ] 彈出視窗上,選取 [ Web]

  8. [重新導向 URI] 下,輸入雙重密鑰加密服務的 URI。 輸入 App Service URL,包括主機名和網域。

    例如:https://mydkeservicetest.com

    • 您輸入的 URL 必須符合 DKE 服務部署所在的主機名。
    • 網域必須是 已驗證的網域
    • 在所有情況下,配置必須是 HTTPs

    請確定主機名完全符合您的 App Service 主機名。

  9. [隱含授與] 下,選取 [ 標識符令牌] 複選框。

  10. 選取 [儲存] 以儲存變更。

  11. 在左窗格中,選取 [公開 API],在 [應用程式標識碼 URI] 旁輸入您的 App Service URL,包括主機名和網域,然後選取 [設定]

  12. 仍在 [ 公開 API] 頁面的 [ 此 API 定義的範圍 ] 區域中,選取 [ 新增範圍]。 在新的範圍中:

    1. 將範圍名稱定義為 user_impersonation

    2. 選取可同意的系統管理員和使用者。

    3. 定義所需的任何剩餘值。

    4. 選取 新增範圍

    5. 選取頂端的 [ 儲存 ] 以儲存您的變更。

  13. 仍在 [ 公開 API] 頁面的 [ 授權的用戶端應用程式 ] 區域中,選取 [ 新增用戶端應用程式]

    在新的用戶端應用程式中:

    1. 將用戶端識別碼定義為 d3590ed6-52b3-4102-aeff-aad2292ab01c。 此值為 Microsoft Office 用戶端識別碼,可讓 Office 取得密鑰存放區的存取令牌。

    2. 在 [ 授權範圍] 底下,選 取 [user_impersonation 範圍]。

    3. 選取 [新增應用程式]

    4. 選取頂端的 [ 儲存 ] 以儲存您的變更。

    5. 重複這些步驟,但這次將用戶端識別碼定義為 c00e9d32-3c8d-4a7d-832b-029040e7db99。 此值為資訊保護用戶端識別碼。

您的 DKE 服務現在已註冊。 繼續 使用 DKE 建立標籤

使用 DKE 建立敏感度標籤

在 Microsoft Purview 合規性入口網站 中,建立新的敏感度標籤並套用加密,如同您一樣。 選 取 [使用雙重密鑰加密 ],然後輸入金鑰的端點 URL。 您必須在 URL 中包含您在appsettings.json檔案的 「TestKeys」 區段中提供的金鑰名稱。

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

在 Microsoft Purview 合規性入口網站 中選取 [使用雙重密鑰加密]。

您新增的任何 DKE 標籤都會出現在最新版本的 Microsoft 365 Apps 企業版 中。

注意事項

用戶端可能需要 24 小時的時間,才能使用新的標籤重新整理。

將受保護的檔案從 HYOK 標籤移轉至 DKE 標籤

如果您想要,一旦完成 DKE 的設定,就可以將使用 HYOK 標籤保護的內容移轉至 DKE 標籤。 若要移轉,請使用 Microsoft Purview 資訊保護 掃描器。 若要開始使用掃描器,請參閱 瞭解資訊保護掃描器

如果您未移轉內容,則 HYOK 保護的內容不會受到影響。

其他部署選項

我們了解,對於高度管制產業的某些客戶而言,使用軟體型密鑰的這個標準參考實作可能不足以滿足其增強的合規性義務和需求。 我們與第三方硬體安全性模組 (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