将 Azure 托管标识与 Azure data lake storage 一起使用

Azure Data Lake Storage 提供了一个分层安全模型。 此模型让您能够根据所使用的网络或资源的类型和子集,保护和控制应用程序和企业环境所需的存储帐户的访问级别。 配置网络规则后,只有通过指定的网络集或通过指定 Azure 资源集请求数据的应用程序可以访问存储帐户。 您可以将对存储帐户的访问限制为来自指定 IP 地址、IP 范围、Azure 虚拟网络 (VNet) 中的子网或某些 Azure 服务的资源实例的请求。

Azure 托管标识(以前称为托管服务标识 (MSI))可帮助管理机密。 使用 Azure 功能的 Microsoft Dataverse 客户创建可用于一个或多个 Dataverse 环境的托管标识(企业策略创建的一部分)。 此托管标识将在您的租户中预配,随后将由 Dataverse 用于访问您的 Azure 数据湖。

使用托管标识,对存储帐户的访问仅限于来自与租户关联的 Dataverse 环境的请求。 当 Dataverse 代表您连接到存储时,它会包含额外的上下文信息,以证明请求源自安全、可信的环境。 这将允许存储授予您的存储帐户 Dataverse 访问权限。 托管标识用于对上下文信息进行签名,以建立信任。 除了 Azure 为 Azure 服务之间的连接提供的网络和基础结构安全之外,这还将增加应用程序级别的安全性。

开始之前

  • 本地计算机上需要 Azure CLI。 下载和安装
  • 您需要这两个 PowerShell 模块。 如果没有,打开 PowerShell 并运行以下命令:
    • Azure Az PowerShell 模块:Install-Module -Name Az
    • Azure Az.Resources PowerShell 模块:Install-Module -Name Az.Resources
    • Power Platform 管理员 PowerShell 模块:Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
  • 转到 GitHub 上的此压缩文件夹文件。 然后选择下载进行下载。 将此压缩文件夹文件提取到可以运行 PowerShell 命令的计算机。 从压缩文件夹提取的所有文件和文件夹都应保留在原始位置。
  • 我们建议您在同一 Azure 资源组下创建一个新的存储容器,用于加入此功能。

为选定的 Azure 订阅启用企业策略

重要

必须拥有 Azure 订阅负责人角色访问权限才能完成此任务。 从 Azure 资源组的概述页面中获取 Azure 订阅 ID

  1. 通过以管理员身份运行打开 Azure CLI,并使用以下命令登录 Azure 订阅:az login 详细信息:使用 Azure CLI 登录
  2. (可选)如果您有多个 Azure 订阅,请确保运行 Update-AzConfig -DefaultSubscriptionForLogin { Azure subscription id } 来更新您的默认订阅。
  3. 将在此功能的开始之前阶段下载的压缩文件夹解压到可运行 PowerShell 的位置。
  4. 要为所选 Azure 订阅启用企业策略,运行 PowerShell 脚本 ./SetupSubscriptionForPowerPlatform.ps1
    • 提供 Azure 订阅 ID。

创建企业策略

重要

必须拥有 Azure 资源组负责人角色访问权限才能完成此任务。 从 Azure 资源组的概览页面获取您的 Azure 订阅 ID位置资源组名称。

  1. 创建企业策略。 运行 PowerShell 脚本 ./CreateIdentityEnterprisePolicy.ps1

    • 提供 Azure 订阅 ID。
    • 提供 Azure 资源组名称。
    • 提供首选的企业策略名称。
    • 提供 Azure 资源组位置。
  2. 创建策略后保存 ResourceId 的副本。

备注

以下是策略创建所支持的有效位置输入。 选择最适合您的位置。

企业策略的可用位置

美国 EUAP

美国

南非

英国

澳大利亚

韩国

日本

印度

法国

欧洲

亚洲

挪威

德国

瑞士

加拿大

巴西

UAE

新加坡

通过 Azure 授予对企业策略的读者访问权限

Azure 全局管理员、Dynamics 365 管理员和 Power Platform 管理员可以访问 Power Platform 管理中心,为企业策略分配环境。 要访问企业策略,全局或 Azure Key vault 管理员需要向 Dynamics 365 或 Power Platform 管理员授予读者角色。授予读者角色后,Dynamics 365 或 Power Platform 管理员将在 Power Platform 管理中心看到企业策略。

只有被授予企业策略读者角色的 Dynamics 365 和 Power Platform 管理员可以向策略“添加环境”。 其他 Dynamics 365 和 PowerPlatform 管理员可能能够查看企业策略,但当他们尝试添加环境时会收到错误。

重要

必须拥有 Microsoft.Authorization/roleAssignments/write 权限(如用户访问管理员负责人)才能完成此任务。

  1. 登录 Azure 门户
  2. 获取 Dynamics 365 Power Platform 管理员用户的 ObjectID
    1. 转到用户区域。
    2. 打开 Dynamics 365 或 Power Platform 管理员用户。
    3. 在用户的概览页面下,复制 ObjectID
  3. 获取企业策略 ID:
    1. 转到 Azure 资源图形资源管理器
    2. 运行此查询: resources | where type == 'microsoft.powerplatform/enterprisepolicies' 从 Azure 资源图形资源管理器运行查询
    3. 滚动到结果页面的右侧,选择查看详细信息链接。
    4. 详细信息页上,复制 ID。
  4. 打开 Azure CLI,运行以下命令,将 <objId> 替换为用户的 ObjectID,将 <EP Resource Id> 替换为企业策略 ID。
    • New-AzRoleAssignment -ObjectId <objId> -RoleDefinitionName Reader -Scope <EP Resource Id>

将企业策略连接到 Dataverse 环境

重要

必须拥有 Power Platform 管理员Dynamics 365 管理员角色才能完成此任务。 必须拥有企业策略的读者角色才能完成此任务。

  1. 获取 Dataverse 环境 ID。
    1. 登录到 Power Platform 管理中心
    2. 选择环境,然后打开您的环境。
    3. 详细信息部分,复制环境 ID
    4. 要链接到 Dataverse 环境,运行此 PowerShell 脚本:./NewIdentity.ps1
    5. 提供 Dataverse 环境 ID。
    6. 提供 ResourceId
      StatusCode = 202 指示已成功创建链接。
  2. 登录到 Power Platform 管理中心
  3. 选择环境,然后打开您之前指定的环境。
  4. 最近操作区域中,选择完整历史记录验证新标识的连接。

配置对 Azure Data Lake Storage Gen2 的网络访问

重要

必须拥有 Azure Data Lake Storage Gen2 负责人角色才能完成此任务。

  1. 转到 Azure 门户

  2. 打开连接到您的 Azure Synapse Link for Dataverse 配置文件的存储帐户。

  3. 在左侧导航窗格中,选择网络。 然后,在防火墙和虚拟网络选项卡上,选择以下设置:

    1. 从选定的虚拟网络和 IP 地址启用。
    2. 资源实例下,选择允许受信任服务列表中的 Azure 服务访问此存储帐户
  4. 选择保存

配置对 Azure Synapse Workspace 的网络访问

重要

必须拥有 Azure Synapse 管理员角色才能完成此任务。

  1. 转到 Azure 门户
  2. 打开连接到您的 Azure Synapse Link for Dataverse 配置文件的 Azure Synapse Workspace。
  3. 在左侧导航窗格中,选择网络
  4. 选择允许 Azure 服务和资源访问此工作区
  5. 如果创建了适用于所有 IP 范围的 IP 防火墙规则,请将其删除以限制访问公用网络。 Azure Synapse workspace 网络设置
  6. 基于客户端 IP 地址添加一个新 的 IP 防火墙规则
  7. 完成后选择保存。 详细信息:Azure Synapse Analytics IP 防火墙规则

重要

Dataverse:您必须具有 Dataverse 系统管理员安全角色。 此外,要通过 Azure Synapse Link 导出的表必须启用跟踪更改属性。 详细信息:高级选项

Azure Data Lake Storage Gen2:您必须有 Azure Data Lake Storage Gen2 帐户以及所有者存储 Blob 数据参与者角色访问权限。 您的存储帐户必须为初始设置和增量同步启用分层命名空间。仅在初始设置时才需要允许存储帐户密钥访问

Synapse 工作区:您必须在 Synapse Studio 中有 Synapse 工作区和 Synapse 管理员角色访问权限。 Synapse 工作区必须与 Azure Data Lake Storage Gen2 帐户位于同一区域。 存储帐户必须添加为 Synapse Studio 中的链接服务。 要创建 Synapse 工作区,请转到创建 Synapse 工作区

当您创建链接时,Azure Synapse Link for Dataverse 会获取有关 Dataverse 环境下当前链接的企业策略的详细信息,然后缓存标识客户端密码 URL 以连接到 Azure。

  1. 登录 Power Apps,然后选择您的环境。
  2. 在左侧导航窗格中,选择 Azure Synapse Link,然后选择 + 新建链接。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
  3. 选择选择具有托管服务标识的企业策略,然后选择下一步
  4. 添加要导出的表,然后选择保存

备注

若要使使用托管标识命令在 Power Apps 中可用,您需要完成上述设置以将企业策略连接到您的 Dataverse 环境。 详细信息:将企业策略连接到 Dataverse 环境

  1. 从 Power Apps (make.powerapps.com) 转到现有 Synapse Link 配置文件。
  2. 选择使用托管标识,然后确认。 Power Apps 中的使用托管标识命令

故障排除

如果在创建链接期间收到 403 错误:

  • 托管标识在初始同步期间需要额外的时间来授予临时权限。请给它留一些时间,之后重试此操作。
  • 确保链接存储没有来自同一环境的现有 Dataverse 容器 (dataverse-environmentName-organizationUniqueName)。
  • 您可以通过运行带有 Azure 订阅 ID资源组名称的 PowerShell 脚本 ./GetIdentityEnterprisePolicyforEnvironment.ps1 来识别链接的企业策略和 policyArmId
  • 您可以通过运行带有 Dataverse 环境 ID 和 policyArmId 的 PowerShell 脚本 ./RevertIdentity.ps1 来取消企业策略的链接。
  • 您可以通过运行带有 policyArmId 的 PowerShell 脚本 .\RemoveIdentityEnterprisePolicy.ps1 来删除企业策略。

已知限制

只有一个企业政策可以同时连接到 Dataverse 环境。 如果需要创建启用了托管标识的多个 Azure Synapse Link 链接,请确保所有链接的 Azure 资源均在同一资源组下。

另请参见

什么是 Azure Synapse Link for Dataverse?