自带加密密钥使用 Power BI

默认情况下,Power BI 使用 Microsoft 托管密钥来加密数据。 在 Power BI Premium 中,你还可以将自己的密钥用于导入到语义模型中的静态数据。 这种方法通常被称为创建自己的密钥 (BYOK)。 有关详细信息,请参阅数据源和存储注意事项

为何使用 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 Key Vault

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

以下说明假定具有 Azure 密钥保管库基本知识。 有关详细信息,请参阅什么是 Azure 密钥保管库?

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

  1. 将 Power BI 服务作为密钥保管库的服务主体添加,并提供包装和解包权限。

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

    重要

    Power BI BYOK 仅支持 4096 位长度的 RSA 密钥。

  3. 建议:检查并确保密钥保管库已启用“软删除”选项

添加服务主体

  1. 登录到 Azure 门户,然后搜索“密钥保管库”。

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

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

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

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

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

    注意

    如果找不到“Microsoft.Azure.AnalysisServices”,则可能是与 Azure Key Vault 关联的 Azure 订阅没有与之关联的 Power BI 资源。 请尝试改为搜索以下字符串:00000009-0000-0000-c000-000000000000。

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

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

注意

若要撤销 Power BI 对你的数据的访问权限,请从 Azure 密钥保管库中删除对此服务主体的访问权限。

创建 RSA 密钥

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

  2. 选择 RSA 的“密钥类型”和 4096 的“RSA 密钥大小”。

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

  3. 选择“创建”。

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

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

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

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

“软删除”选项

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

正确配置 Azure 密钥保管库后,即可在租户上启用 BYOK。

配置 Azure 密钥保管库防火墙

本节介绍如何利用受信任的 Microsoft 服务防火墙绕过来配置围绕 Azure 密钥保管库的防火墙。

注意

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

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

若要将 Azure 密钥保管库配置为允许对受信任的 Microsoft 服务的访问,请执行以下步骤:

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

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

  3. 在“防火墙和虚拟网络”下,选择“允许来自特定虚拟网络和 IP 地址的公共访问”。

    Azure 密钥保管库网络选项的屏幕截图,其中选择了“防火墙和虚拟网络”选项。

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

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

  5. 选择“应用”。

在租户上启用 BYOK

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

重要注意事项

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

  • 目前,无法在启用 BYOK 后再将其禁用。 根据为 Add-PowerBIEncryptionKey 指定参数的方式,可以控制将 BYOK 用于一个或多个容量的方式。 但是,无法撤消向租户引入密钥的操作。 有关详细信息,请参阅启用 BYOK

  • 不能直接将使用 BYOK 的工作区从 Power BI Premium 中的容量移至共享容量。 必须先将工作区移至未启用 BYOK 的容量。

  • 如果将使用 BYOK 的工作区从 Power BI Premium 中的容量移动到共享容量,则报表和语义模型将变得不可访问,因为它们是使用密钥进行加密的。 为了避免该情况,必须先将工作区移至未启用 BYOK 的容量。

启用 BYOK

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

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

要添加多个密钥,请为 -Name-KeyVaultKeyUri 运行具有不同值的 Add-PowerBIEncryptionKey

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 的方式。 例如,若要加密单个容量,请在不调用 -Activate-Default 的情况下调用 Add-PowerBIEncryptionKey。 然后,为想要在其中启用 BYOK 的容量调用 Set-PowerBICapacityEncryptionKey

管理 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 只更新密钥 -Name-KeyVaultKeyUri

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

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