为 Power BI 创建自己的加密密钥

默认情况下,Power BI 使用Microsoft管理的密钥来加密数据。 在 Power BI Premium 中,还可以将自己的密钥用于导入到语义模型中的静态数据。 此方法通常描述为 自带密钥 (BYOK)。 有关详细信息,请参阅 数据源和存储注意事项。 Power BI BYOK 支持双重加密,确保分层安全性和符合企业加密标准。 这包括使用 Server-Side 加密(SSE)和客户端加密的存储级别加密,以及使用Microsoft托管的数据加密密钥(DEK)进行客户端加密。 在静态存储数据之前,此 DEK 使用 CMK 进行包装。

为什么使用 BYOK?

BYOK 可以更轻松地满足与云服务提供商指定关键安排的符合性要求,在本例中Microsoft。 通过 BYOK,可以在应用程序级别提供和控制 Power BI 静态数据的加密密钥。 因此,如果决定退出服务,可以行使控制权并撤销组织的密钥。 通过撤销密钥,数据在 30 分钟内变得不可读。

数据源和存储注意事项

若要使用 BYOK,必须从 Power BI Desktop (PBIX) 文件将数据上传到 Power BI 服务。 在以下方案中无法使用 BYOK:

BYOK 仅适用于语义模型。 推送语义模型、Excel 文件和 CSV 文件,用户可上传到该服务的文件不会使用自己的密钥进行加密。 若要确定哪些项存储在工作区中,请使用以下 PowerShell 命令:

PS C:\> Get-PowerBIWorkspace -Scope Organization -Include All

注释

此 cmdlet 需要 Power BI 管理模块 v1.0.840。 可以通过运行 Get-InstalledModule -Name MicrosoftPowerBIMgmt来查看你拥有的版本。 通过运行 Install-Module -Name MicrosoftPowerBIMgmt安装最新版本。 可以在 Power BI PowerShell cmdlet 模块中获取有关 Power BI cmdlet 及其参数的详细信息。

配置 Azure 密钥保管库

本部分介绍如何配置 Azure Key Vault,这是一种安全存储和访问机密的工具,例如加密密钥。 可以使用现有的密钥保管库来存储加密密钥,也可以创建一个新密钥,专门用于 Power BI。

以下说明假定对 Azure Key Vault 有基本的了解。 有关详细信息,请参阅 什么是 Azure Key Vault?

按以下方式配置密钥保管库:

  1. 使用包装和解包权限将 Power BI 服务添加为密钥保管库的服务主体

  2. 创建长度为 4096 位的 RSA 密钥,或使用此类型的现有密钥,并具有包装和解包权限。

    重要

    Power BI BYOK 支持具有 4096 位长度的 RSA 和 RSA-HSM 密钥。

  3. 建议:检查密钥保管库是否已启用软删除选项

添加服务主体

  1. 登录到 Azure 门户 并搜索 Key Vault

  2. 在密钥保管库中,选择 “访问策略”,然后选择“ 创建”。

    Azure 门户中用于访问策略的“创建”按钮的屏幕截图。

  3. “权限” 屏幕上的 “密钥权限”下,选择“ 解包密钥 ”和“ 包装密钥”,然后选择“ 下一步”。

    用于创建新访问策略的权限屏幕的屏幕截图。

  4. “主体 ”屏幕上,搜索并选择 Microsoft.Azure.AnalysisServices

    注释

    如果找不到 Microsoft.Azure.AnalysisServices,则与 Azure Key Vault 关联的 Azure 订阅可能从未关联过 Power BI 资源。 请尝试改为搜索以下字符串:00000009-0000-0000-c000-0000000000000。

    用于为访问策略选择新主体的主体屏幕的屏幕截图。

  5. 选择“下一步”,然后选择“查看 + 创建>”。

Azure 基于角色的访问控制 还可用于通过选择包括 解包密钥包装密钥 权限的角色来授予权限。

注释

若要撤销对数据的 Power BI 访问权限,请从 Azure Key Vault 中删除对此服务主体的访问权限。

创建 RSA 密钥

  1. 在密钥保管库的 “密钥”下,选择“ 生成/导入”。

  2. 选择 RSA密钥类型RSA 密钥大小4096

    RSA 密钥类型和大小选择的屏幕截图。

  3. 选择 创建

  4. “密钥”下,选择创建的密钥。

  5. 选择密钥的 当前版本的 GUID。

  6. 检查是否已选中 “包装密钥 ”和“ 解包密钥 ”。 复制 密钥标识符 ,以便在 Power BI 中启用 BYOK 时使用。

    包含标识符和允许作的密钥属性的屏幕截图。

软删除选项

应在密钥保管库上启用 软删除 ,以防意外密钥或密钥保管库删除时数据丢失。 若要启用 软删除 属性,必须使用 PowerShell ,因为此选项在 Azure 门户中尚不可用。

正确配置 Azure Key Vault 后,即可在租户上启用 BYOK。

配置 Azure Key Vault 防火墙

本部分介绍如何使用受信任的Microsoft服务防火墙绕过,在 Azure Key Vault 周围配置防火墙。

注释

可以选择在密钥保管库上启用防火墙规则。 还可以选择根据默认设置在密钥保管库上禁用防火墙。

Power BI 是受信任的Microsoft服务。 可以指示密钥保管库防火墙允许访问所有受信任的Microsoft服务,该设置允许 Power BI 在不指定终结点连接的情况下访问密钥保管库。

若要配置 Azure Key Vault 以允许访问受信任的Microsoft服务,请执行以下步骤:

  1. 在 Azure 门户中搜索 Key Vault ,然后选择想要允许从 Power BI 访问的密钥保管库以及所有其他受信任的Microsoft服务。

  2. 从左侧导航面板中选择 “网络 ”。

  3. “公共访问 - 允许访问:”下,选择 “所选网络”。

    Azure Key Vault 网络选项的屏幕截图,其中选择了防火墙和虚拟网络选项。

  4. 向下滚动到 “例外 ”部分,然后选择“ 允许受信任的Microsoft服务绕过此防火墙

    允许受信任的Microsoft服务绕过此防火墙的选项的屏幕截图。

  5. 选择应用

在租户上启用 BYOK

使用 PowerShell 在租户级别启用 BYOK。 首先,安装 适用于 PowerShell 的 Power BI 管理包 ,并将创建的加密密钥和存储在 Azure Key Vault 中引入到 Power BI 租户。 然后,为每个高级容量分配这些加密密钥,以加密容量中的内容。

重要注意事项

启用 BYOK 之前,请记住以下注意事项:

  • 目前,启用 BYOK 后无法禁用 BYOK。 根据指定参数 Add-PowerBIEncryptionKey的方式,可以控制如何对一个或多个容量使用 BYOK。 但是,无法撤消租户密钥的引入。 有关详细信息,请参阅 “启用 BYOK”。
  • 不能 直接 将使用 BYOK 的工作区从 Power BI Premium 中的容量移动到共享容量。 必须先将工作区移动到未启用 BYOK 的容量。
  • 如果将使用 BYOK 的工作区从 Power BI Premium 中的容量移动到共享容量,则报表和语义模型将变得不可访问,因为它们使用密钥进行加密。 为了避免这种情况,必须先将工作区移动到未启用 BYOK 的容量™。

启用 BYOK

若要启用 BYOK,必须使用 cmdlet 登录 Connect-PowerBIServiceAccount Power BI 管理员。 然后使用 Add-PowerBIEncryptionKey 启用 BYOK,如以下示例所示:

Add-PowerBIEncryptionKey -Name'Contoso Sales' -KeyVaultKeyUri'https://contoso-vault2.vault.azure.net/keys/ContosoKeyVault/b2ab4ba1c7b341eea5ecaaa2wb54c4d2'

若要添加多个键,请使用不同的值-NameAdd-PowerBIEncryptionKey-KeyVaultKeyUri

该 cmdlet 接受两个影响当前容量和未来容量加密的交换机参数。 默认情况下,两个开关均未设置:

  • -Activate:指示此密钥用于租户中尚未加密的所有现有容量。
  • -Default:指示此密钥现在是整个租户的默认值。 创建新容量时,容量将继承此密钥。

重要

如果指定 -Default,则从此点开始在租户上创建的所有容量都使用指定的密钥或更新的默认密钥进行加密。 无法撤消默认作,因此无法在不使用 BYOK 的租户中创建高级容量。

在租户上启用 BYOK 后,为一个或多个 Power BI 容量设置加密密钥:

  1. 使用 Get-PowerBICapacity 获取下一步所需的容量 ID。

    Get-PowerBICapacity -Scope Individual
    

    该 cmdlet 返回类似于以下输出的输出:

    Id              : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    DisplayName     : Test Capacity
    Admins          : adam@sometestdomain.com
    Sku             : P1
    State           : Active
    UserAccessRight : Admin
    Region          : North Central US
    
  2. 使用 Set-PowerBICapacityEncryptionKey 设置加密密钥:

    Set-PowerBICapacityEncryptionKey -CapacityId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -KeyName 'Contoso Sales'
    

可以控制如何在租户中使用 BYOK。 例如,若要加密单个容量,请调用不带或-Default-Activate调用Add-PowerBIEncryptionKey。 然后,调用 Set-PowerBICapacityEncryptionKey 要在其中启用 BYOK 的容量。

管理 BYOK

Power BI 提供其他 cmdlet 来帮助管理租户中的 BYOK:

  • 使用 Get-PowerBICapacity 获取容量当前使用的密钥:

    Get-PowerBICapacity -Scope Organization -ShowEncryptionKey
    
  • 使用 Get-PowerBIEncryptionKey 获取租户当前使用的密钥:

    Get-PowerBIEncryptionKey
    
  • 使用 Get-PowerBIWorkspaceEncryptionStatus 查看工作区中的语义模型是否已加密,以及其加密状态是否与工作区同步:

    Get-PowerBIWorkspaceEncryptionStatus -Name'Contoso Sales'
    

    请注意,加密在容量级别启用,但在指定工作区的语义模型级别获得加密状态。

  • 使用 Switch-PowerBIEncryptionKey 切换(或 轮换)用于加密的密钥版本。 该 cmdlet 只是更新 -KeyVaultKeyUri 密钥 -Name的项:

    Switch-PowerBIEncryptionKey -Name'Contoso Sales' -KeyVaultKeyUri'https://contoso-vault2.vault.azure.net/keys/ContosoKeyVault/b2ab4ba1c7b341eea5ecaaa2wb54c4d2'
    

    请注意,应启用当前密钥。