服務描述: Microsoft Purview
請依照下列一般步驟設定 DKE。 完成這些步驟後,您的使用者可以使用雙金鑰加密來保護您的高度敏感資料。
如本文所述部署 DKE 服務。 請確定您的環境符合最低系統和授權需求。 如需詳細資訊,請參閱 DKE 的系統和授權需求。
使用雙金鑰加密建立標籤。 在 Microsoft Purview 入口網站中,瀏覽至 [資訊保護 ],然後使用雙重金鑰加密建立新標籤。 請參閱 使用敏感度標籤來套用加密來限制內容存取權。
在用戶端裝置上設定登錄,以便您可以使用雙金鑰加密標籤。 接下來,從 Microsoft Office 的 [敏感度] 功能區選取 [雙金鑰加密] 標籤,以保護您的資料。
有幾種方法可以完成部署雙金鑰加密的一些步驟。 本文提供詳細指示,以便經驗較少的系統管理員也能成功部署服務。 如果您願意這樣做,您可以選擇使用自己的方法。
部署 DKE
本文和部署影片使用 Azure 做為 DKE 服務的部署目的地。 如果您要部署到其他位置,則需要提供自己的值。
請依照下列一般步驟為您的組織設定雙金鑰加密。
- 安裝 DKE 服務的軟體必要條件
- 複製雙金鑰加密 GitHub 存放庫
- 修改應用程式設定
- 產生測試金鑰
- 建置專案
- 部署 DKE 服務並發佈金鑰存放區
- 驗證您的部署
- 註冊您的金鑰存放區
- 使用 DKE 建立敏感度標籤
- 將受保護的檔案從 HYOK 標籤移轉至 DKE 標籤
完成後,您可以使用 DKE 加密文件和檔案。 如需詳細資訊,請參閱 在 Office 中將敏感度標籤套用至您的檔案和電子郵件。
安裝 DKE 服務的軟體必要條件
在您要安裝 DKE 服務的電腦上安裝這些必要軟體。
.NET 8.0 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。 您必須安裝 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 使用者:
在您的瀏覽器中,移至: https://github.com/Azure-Samples/DoubleKeyEncryptionService。
在畫面右側,選取 [代碼]。 您的 UI 版本可能會顯示 [複製] 或 [下載 ] 按鈕。 接著,在出現的下拉式清單中,選取複製圖示,將 URL 複製到剪貼簿。
例如:
在 Visual Studio Code 中,選取 [檢視>命令面板],然後選取 [Git:複製]。 若要跳至清單中的選項,請開始輸入
git: clone以篩選項目,然後從下拉式清單中選取它。 例如:
在文字方塊中,貼上您從 Git 複製的 URL,然後選取 [從 GitHub 複製]。
在出現的 [選取資料夾 ] 對話方塊中,瀏覽至並選取儲存存放庫的位置。 選取 [開啟]。
存放庫隨即在 Visual Studio Code 中開啟,並在左下角顯示目前的 Git 分支。 分支應該是 主要分支。 例如:
如果您不在主要分支上,請加以選取。 在 Visual Studio Code 中,選取分支,然後從顯示的分支清單中選擇 [主要]。
重要事項
選取主要分支可確保您擁有正確的檔案來建置專案。 如果您未選擇正確的分支,部署將會失敗。
您現在已在本機設定 DKE 來源存放庫。 接下來,修改貴組織的 應用程式設定 。
修改應用程式設定
若要部署 DKE 服務,您必須修改下列類型的應用程式設定:
您可以修改 appsettings.json 檔案中的應用程式設定。 此檔案位於您在本機複製的 DoubleKeyEncryptionService 存放庫中,位於 DoubleKeyEncryptionService\src\customer-key-store 底下。 例如,在 Visual Studio Code 中,您可以瀏覽至檔案,如下圖所示。
金鑰存取設定
選擇使用電子郵件或角色授權。 DKE 一次只支援其中一種驗證方法。
Email authorization。 允許貴組織僅根據電子郵件地址來授權金鑰存取權。
角色授權。 允許貴組織根據 Active Directory 群組授權存取金鑰,並要求 Web 服務可以查詢 LDAP。
使用電子郵件授權設定 DKE 的金鑰存取設定
開啟 appsettings.json 檔案並找到
AuthorizedEmailAddress設定。新增您要授權的電子郵件地址。 使用雙引號和逗號分隔多個電子郵件地址。 例如:
"AuthorizedEmailAddress": ["email1@company.com", "email2@company.com ", "email3@company.com"]找出
LDAPPath設定,並移除雙引號之間的文字If you use role authorization (AuthorizedRoles) then this is the LDAP path.。 將雙引號保留在原處。 完成後,設定看起來應該像這樣。"LDAPPath": ""找出
AuthorizedRoles設定並刪除整行。
此影像顯示已正確格式化用於電子郵件授權的 appsettings.json 檔案。
使用角色授權設定 DKE 的金鑰存取設定
開啟 appsettings.json 檔案並找到
AuthorizedRoles設定。新增您想要授權的 Active Directory 群組名稱。 以雙引號和逗號分隔多個群組名稱。 例如:
"AuthorizedRoles": ["group1", "group2", "group3"]尋找設定
LDAPPath並新增 Active Directory 網域。 例如:"LDAPPath": "contoso.com"找出
AuthorizedEmailAddress設定並刪除整行。
此影像顯示已正確格式化以用於角色授權的 appsettings.json 檔案。
租用戶和金鑰設定
DKE 租用戶和金鑰設定位於 appsettings.json 檔案中。
設定 DKE 的租用戶和金鑰設定
開啟 appsettings.json 檔案。
找出
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"
}
]
}
產生測試金鑰
定義應用程式設定之後,您就可以產生公開和私有測試金鑰。
若要產生金鑰:
從 Windows 開始功能表,執行 OpenSSL 命令提示字元。
變更至您要儲存測試金鑰的資料夾。 完成此工作中的步驟所建立的檔案會儲存在同一個資料夾中。
產生新的測試金鑰。
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365產生私密金鑰。
如果您安裝了 OpenSSL 第 3 版或更新版本,請執行以下命令:
openssl rsa -in key.pem -out privkeynopass.pem -outform PEM -traditional否則,請執行下列命令:
openssl rsa -in key.pem -out privkeynopass.pem -outform PEM產生公開金鑰。
openssl rsa -in key.pem -pubout > pubkeyonly.pem在文字編輯器中,開啟 pubkeyonly.pem。 將 pubkeyonly.pem 檔案中的所有內容,除了第一行和最後一行,複製到
PublicPemappsettings.json 檔案的區段中。在文字編輯器中,開啟 privkeynopass.pem。 將 privkeynopass.pem 檔案中的所有內容,除了第一行和最後一行,複製到
PrivatePemappsettings.json 檔案的區段中。移除 和
PrivatePem區段中的所有PublicPem空格和換行符。重要事項
複製此內容時,請勿刪除任何 PEM 資料。
在 Visual Studio Code 中,瀏覽至Startup.cs檔案。 此檔案位於您在本機複製的 DoubleKeyEncryptionService 存放庫中,位於 DoubleKeyEncryptionService\src\customer-key-store 底下。
找出下列行:
#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使用下列文字取代這些行:
services.AddSingleton<ippw.IKeyStore, ippw.TestKeyStore>();最終結果應如下所示。
現在您已準備好 建立 DKE 專案。
建置專案
使用下列指示在本機建置 DKE 專案:
在 Visual Studio Code 的 DKE 服務存放庫中,選取 [檢視>命令面板],然後在提示中輸入 build。
從清單中,選擇 [工作:執行組建工作]。
如果找不到任何建置工作,請選取 [設定建置工作] ,然後為 .NET Core 建立一個建置工作,如下所示。
選擇 [從範本建立tasks.json]。
從範本類型清單中,選取 .NET Core。
在組建區段中,找到 customerkeystore.csproj 檔案的路徑。 如果不存在,請新增以下行:
"${workspaceFolder}/src/customer-key-store/customerkeystore.csproj",再次執行組建。
確認輸出視窗中沒有紅色錯誤。
如果有紅色錯誤,請檢查主機輸出。 請確定您已正確完成上述所有步驟,且存在正確的組建版本。
您的設定現在已完成。 在發佈金鑰存放區之前,請appsettings.json針對 JwtAudience 設定,請確定 hostname 的值完全符合您的 App Service 主機名稱。
部署 DKE 服務並發佈金鑰存放區
針對生產環境部署,請在協力廠商雲端中部署服務,或 發佈到內部部署系統。
您可能偏好其他方法來部署金鑰。 選取最適合貴組織的方法。
針對試驗部署,您可以在 Azure 中部署並立即開始使用。
建立 Azure Web 應用程式執行個體來裝載 DKE 部署
若要發佈金鑰存放區,請建立Azure App 服務執行個體來裝載 DKE 部署。 接下來,將產生的金鑰發佈到 Azure。
在瀏覽器中,登入 Microsoft Azure 入口網站,然後移至 [App Services> 建立 > Web 應用程式]。
建立新的或選取現有的資源群組。
提供執行個體的名稱,例如 contosodke1。 此名稱與組態檔中的名稱不符。 您為名稱提供的值也是 WebAppInstanceName。
在定價計劃中,選擇允許自訂網域的大小,例如基本 B1。
針對 [發佈],選取 [程式碼],而針對 [ 執行階段堆疊],選取 [.NET 8 (LTS) ]。
選取 [檢閱 + 建立]
例如:
在新建立的 Web 應用程式中,移至 [設定],[自訂網域],選取 [新增自訂網域]
在 [網域提供者] 中, 選取 [ 所有其他網域服務]
在 [網域] 中,輸入您要安裝 DKE 服務之電腦的主機名稱。
重要事項
請確定主機名稱與appsettings.json檔案中為 JwtAudience 設定定義的名稱相同。
- 在公用 DNS 中,依照 [網域驗證] 區段所示執行建議的變更,然後選取 [驗證]。
例如:
請執行下列動作來發佈您產生的金鑰:
- 透過 ZipDeployUI 發佈
- 您可以使用其他方法將二進位檔上傳到該應用程式,例如 FTP。
例如,FTP
透過 ZipDeployUI 發佈
移至
https://<WebAppInstanceName>.scm.<location>.azurewebsites.net/ZipDeployUI。例如:
https://dkeservice-ctaugtfwh7d3c3c.scm.westcentralus-01.azurewebsites.net/ZipDeployUI啟動 PowerShell 提示字元。
在金鑰存放區的程式碼基底中,前往 customer-key-store\src\customer-key-store 資料夾,並確認此資料夾包含 customerkeystore.csproj 檔案。
執行: dotnet publish
輸出視窗會顯示部署發佈的目錄。
例如:
customer-key-store\src\customer-key-store\bin\Debug\net8.0\publish\將發佈目錄中的所有檔案傳送至 .zip 檔案。 建立 .zip 檔案時,請確定目錄中的所有檔案都位於 .zip 檔案的根層級。
將您建立的 .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 服務:
在瀏覽器中,開啟 Microsoft Azure 入口網站,然後前往 [所有服務>身分識別>應用程式註冊]。
選取 新增註冊,然後輸入有意義的名稱。
從顯示的選項中選取帳戶類型。
例如:
在頁面底部,選取 註冊以 建立新的應用程式註冊。
在新的應用程式註冊中,在左側窗格中的 [管理] 底下,選取 [驗證]。
選取 [新增平台]。
在 [設定平台] 快顯視窗中,選取 [Web]。
在 [重新導向 URI] 底下,輸入雙金鑰加密服務的 URI。 輸入 App Service URL,包括主機名稱和網域。
例如:
https://mydkeservicetest.com- 您輸入的 URL 必須與部署 DKE 服務的主機名稱相符。
- 網域必須是 已驗證的網域。
- 在所有案例中,配置都必須是 https。
確定主機名稱完全符合您的 App Service 主機名稱。
在 [隱含授與] 底下,選取 [識別碼權杖] 核取方塊。
選取 [儲存] 以儲存變更。
在左側窗格中,選取 [公開 API],在 [應用程式識別碼 URI] 旁邊,輸入您的 App Service URL,包括主機名稱和網域,然後選取 [設定]。
仍在 [ 公開 API ] 頁面上,於 [此 API 定義的範圍] 區域中選取 [ 新增範圍]。 在新的範圍中:
將範圍名稱定義為 user_impersonation。
選取可以同意的系統管理員和使用者。
定義任何必要的剩餘值。
選取 新增範圍。
選取頂端的 [儲存] 以儲存您的變更。
仍在 [ 公開 API ] 頁面上的 [ 授權的用戶端應用程式 ] 區域中,選取 [新增用戶端應用程式]。
在新的用戶端應用程式中:
將用戶端識別碼定義為
d3590ed6-52b3-4102-aeff-aad2292ab01c。 這個值是 Microsoft Office 用戶端識別碼,可讓 Office 取得金鑰存放區的存取權杖。在 [授權範圍] 底下,選取 user_impersonation 範圍。
選取 [新增應用程式]。
選取頂端的 [儲存] 以儲存您的變更。
重複這些步驟,但這次將用戶端識別碼定義為
00001111-aaaa-2222-bbbb-3333cccc4444。 此值即為 Purview 資訊保護用戶端識別碼。
您的 DKE 服務現已註冊。 繼續 使用 DKE 建立標籤。
使用 DKE 建立敏感度標籤
在 Microsoft Purview 入口網站中,建立新的敏感度標籤,並像其他方式一樣套用加密。 選取 [ 使用雙重金鑰加密 ],然後輸入金鑰的端點 URL。 您必須在 URL 中包含您在 appsettings.json 檔案的 “TestKeys” 區段中所提供的金鑰名稱。
例如:https://testingdke1.azurewebsites.net/KEYNAME
您新增的任何 DKE 標籤都會在最新版本的 Microsoft 365 Apps 企業版中對使用者顯示。
注意事項
用戶端最多可能需要 24 小時才能重新整理新的標籤。
將受保護的檔案從 HYOK 標籤移轉至 DKE 標籤
如有需要,在完成 DKE 設定之後,您可以將使用 HYOK 標籤保護的內容移轉至 DKE 標籤。 若要移轉,請使用 Microsoft Purview 資訊保護掃描器。 若要開始使用掃描器,請參閱 了解資訊保護掃描器。
如果您不移轉內容,受 HYOK 保護的內容不會受到影響。
其他部署選項
我們瞭解,對於受到高度監管產業的某些客戶來說,使用軟體型金鑰的這個標準參考實作可能不足以滿足他們增強的合規義務和需求。 我們與協力廠商硬體安全性模組 (HSM) 廠商合作,以支援 DKE 服務中增強的金鑰管理選項,包括:
直接聯繫這些供應商,以獲取有關其市場內 DKE HSM 解決方案的更多資訊和指導。
設定用戶端以套用 DKE 敏感度標籤
在每個用戶端裝置上完成此工作。
確定在每個用戶端上定義下列登錄值。 建立不存在的登錄機碼:
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSIPC\flighting] "DoubleKeyProtection"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSIPC\flighting] "DoubleKeyProtection"=dword:00000001