共用方式為


設定雙重金鑰加密

適用於: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 8.0 SDK 的 SDK。 從 Download .NET 8.0 下載並安裝 SDK。

Visual Studio Code。 從 https://code.visualstudio.com/下載 Visual Studio Code。 安裝之後,請執行 Visual Studio Code 並選取 [檢視>延伸模組]。 安裝這些擴充功能。

  • 適用於 Visual Studio Code 的 C#

  • NuGet 套件管理員

Git 資源。 下載並安裝下列其中一項。

OpenSSL的。 部署 DKE 之後,您必須安裝 OpenSSL 才能 產生測試金鑰 。 請確定您從環境變數路徑正確叫用它。 例如,請參閱 “將安裝目錄新增至 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:複製]。 若要跳至清單中的選項,請開始輸入 git: clone 以篩選項目,然後從下拉式清單中選取它。 例如:

    Visual Studio Code GIT:Clone 選項。

  4. 在文字方塊中,貼上您從 Git 複製的 URL,然後選取 [從 GitHub 複製]。

  5. 在出現的 [選取資料夾 ] 對話方塊中,瀏覽並選取要儲存存放庫的位置。 選取 [開啟]

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

    Visual Studio Code 中顯示主要分支的 DKE 存放庫螢幕擷取畫面。

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

    重要事項

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

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

修改應用程式設定

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

您可以在appsettings.json檔案中修改應用程式設定。 此檔案位於您在本機複製的 DoubleKeyEncryptionService 存放庫中,位於 DoubleKeyEncryptionService\src\customer-key-store 下。 例如,在 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。 將 json 中的預留位置值 "https://dkeservice.contoso.com" 取代為您要執行 DKE 服務的機器主機名稱。

重要事項

JwtAudience 值必須與主機的名稱 完全相符。

  • TestKeys:Name. 輸入金鑰的名稱。 例如:TestKey1
  • TestKeys:Id. 建立 GUID 並將其輸入為 TestKeys:ID 值。 例如,DCE1CC21-FF9B-4424-8FF4-9914BD19A1BE。 您可以使用 線上 GUID 產生器 等網站來隨機產生 GUID。
  • JwtAuthorization. 取代 {tenant-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. 刪除 和 PublicPemPrivatePem 區段中的所有空格和換行符。

    重要事項

    複製此內容時,請勿刪除任何 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. 選擇 Create tasks.json from template (從範本建立)。

      從 DKE 的模板創建tasks.json文件。

    2. 從範本類型清單中,選取 .NET Core

      為 DKE 選取正確的範本。

    3. 在組建區段中,找出 customerkeystore.csproj 檔案的路徑。 如果不存在,請新增下列行:

      "${workspaceFolder}/src/customer-key-store/customerkeystore.csproj",
      
    4. 再次執行組建。

  3. 確認輸出視窗中沒有紅色錯誤。

    如果出現紅色錯誤,請檢查主控台輸出。 請確定您已正確完成上述所有步驟,且存在正確的建置版本。

您的設定現已完成。 在發佈金鑰儲存庫之前,請確定 hostname 的值完全符合您的App Service主機名稱,請appsettings.json JwtAudience 設定。

部署 DKE 服務並發佈金鑰存放區

對於生產部署,請在協力廠商雲端中部署服務,或 發佈至內部部署系統

您可能偏好其他方法來部署金鑰。 選取最適合您組織的方法。

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

若要建立 Azure Web 應用程式執行個體來裝載 DKE 部署

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

  1. 在瀏覽器中,登入 Microsoft Azure 入口網站,然後移至 App Services> 建立 > Web 應用程式

  2. 建立新的資源群組或選取現有的資源群組。

  3. 提供實例的名稱,例如 contosodke1。 此名稱與設定檔中的名稱不符。 您為名稱提供的值也是 WebAppInstanceName。

  4. 在定價計劃中,選擇允許自訂網域的大小,例如基本 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 入口網站,然後移至 [所有服務>身分識別>應用程式註冊]。

  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],在 [應用程式識別碼 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 用戶端識別碼,可讓 Office 取得金鑰存放區的存取權杖。

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

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

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

    5. 重複這些步驟,但這次,如果您仍使用 Azure 資訊保護用戶端,請將用戶端識別碼定義為 c00e9d32-3c8d-4a7d-832b-029040e7db99

    6. 重複這些步驟,但這次將用戶端 ID 定義為 0e25d998-b19a-4080-811c-d74d60d65e42。 此值是 Purview 資訊保護用戶端識別碼。

您的 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