服务说明: 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。 从 下载.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 分支。 分支应为 main。 例如:
如果不在主分支上,请选择它。 在 Visual Studio Code 中,选择分支,然后从显示的分支列表中选择 main。
重要
选择主分支可确保你拥有生成项目所需的正确文件。 如果未选择正确的分支,部署将失败。
现在已在本地设置了 DKE 源存储库。 接下来,修改组织的 应用程序设置 。
修改应用程序设置
要部署 DKE 服务,必须修改以下类型的应用程序设置:
修改 appsettings.json 文件中的应用程序设置。 此文件位于您在本地克隆的 DoubleKeyEncryptionService 存储库中的 DoubleKeyEncryptionService\src\customer-key-store。 例如,在 Visual Studio Code 中,您可以浏览到文件,如下图所示。
密钥访问设置
选择是使用电子邮件授权还是使用角色授权。 DKE 一次仅支持其中一种身份验证方法。
Email 授权。 允许组织仅根据电子邮件地址授权访问密钥。
角色授权。 允许组织基于 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>为租户 ID,确保将斜杠保留在租户 ID 的末尾。 可以通过转到 Azure 门户并查看租户属性来找到租户 ID。 例如:"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}为租户 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 文件中的所有内容(第一行和最后一行除外)复制到 appsettings.json 文件的部分中
PublicPem。在文本编辑器中,打开 privkeynopass.pem。 将 privkeynopass.pem 文件中的所有内容(除了第一行和最后几行)复制到 appsettings.json 文件的部分中
PrivatePem。删除 and
PublicPemPrivatePem部分中的所有空格和换行符。重要
复制此内容时,请勿删除任何 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 设置,请确保主机名的值与App 服务主机名完全匹配。
部署 DKE 服务并发布密钥存储
对于生产部署,请在第三方云中部署服务或 发布到本地系统。
你可能更喜欢使用其他方法来部署密钥。 选择最适合组织的方法。
对于试点部署,可以在 Azure 中部署并立即开始使用。
创建 Azure Web 应用实例来托管 DKE 部署
若要发布密钥存储,请创建一个 Azure 应用服务实例来托管 DKE 部署。 接下来,将生成的密钥发布到 Azure。
在浏览器中,登录到 Microsoft Azure 门户,然后转到“应用服务>创建 > 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 服务 URL,包括主机名和域。
例如:
https://mydkeservicetest.com- 输入的 URL 必须与部署 DKE 服务的主机名匹配。
- 域必须是 已验证的域。
- 在所有情况下,方案都必须是 https。
确保主机名与App 服务的主机名完全匹配。
在 “隐式授权”下,选中 ID 令牌复 选框。
选择保存以保存所做的更改。
在左窗格中,选择“公开 API”,在“应用程序 ID URI”旁边,输入App 服务 URL,包括主机名和域,然后选择“设置”。
仍在“ 公开 API ”页上的 “此 API 定义的作用域 ”区域中,选择“ 添加作用域”。 在新作用域中:
将作用域名称定义为 user_impersonation。
选择可以同意的管理员和用户。
定义所需的任何剩余值。
选择“添加作用域”。
选择顶部的 “保存” 以保存更改。
仍在“ 公开 API ”页上的 “授权的客户端应用程序” 区域中,选择 “添加客户端应用程序”。
在新的客户端应用程序中:
将客户端 ID 定义为
d3590ed6-52b3-4102-aeff-aad2292ab01c. 此值是 Microsoft Office 客户端 ID,可使 Office 获取密钥存储的访问令牌。在 “授权范围”下,选择 user_impersonation 范围。
选择“添加应用程序”。
选择顶部的 “保存” 以保存更改。
重复这些步骤,但这次将客户端 ID 定义为
00001111-aaaa-2222-bbbb-3333cccc4444。 此值是 Purview 信息保护客户端 ID。
你的 DKE 服务现已注册。 继续 使用 DKE 创建标签。
使用 DKE 创建敏感度标签
在 Microsoft Purview 门户中,创建新的敏感度标签并像其他方式一样应用加密。 选择“ 使用双密钥加密 ”并输入密钥的终结点 URL。 需要在 URL 的 appsettings.json 文件的“TestKeys”部分中提供的密钥名称。
例如:https://testingdke1.azurewebsites.net/KEYNAME
添加的任何 DKE 标签都会在最新版本的 Microsoft 365 企业应用版中向用户显示。
注意
客户端最多可能需要 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