将 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 admin 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 授予对企业策略的读者访问权限

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. 转到 Users(用户) 区域。
    2. 打开 Dynamics 365 或 Power Platform 管理员用户。
    3. 在用户的概述页面下,复制 ObjectID
  3. 获取企业策略 ID:
    1. 转到 Azure Resource Graph 浏览器
    2. 运行以下查询: resources | where type == 'microsoft.powerplatform/enterprisepolicies'从 Azure Resource Graph Explorer 运行查询
    3. 滚动到结果页面的右侧,然后选择 查看详细信息 链接。
    4. 在 Details(详细信息 页面上,复制 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. 选择 Environments(环境),然后打开您的环境。
    3. 在 Details(详细信息 )部分中,复制 环境 ID
    4. 要链接到 Dataverse 环境,请运行以下 PowerShell 脚本: ./NewIdentity.ps1
    5. 提供 Dataverse 环境 ID。
    6. 提供 ResourceId
      StatusCode = 202 表示已成功创建链接。
  2. 登录到 Power Platform 管理中心
  3. 选择 Environments(环境),然后打开您之前指定的环境。
  4. 在 Recent operations(最近的操作 区域中,选择 Full history(完整历史记录 )以验证新身份的连接。

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

重要提示

您必须具有 Azure Data Lake Storage Gen2 所有者 角色才能完成此任务。

  1. 转到 Azure 门户

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

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

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

配置对 Azure Synapse Workspace 的网络访问

重要提示

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

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

重要提示

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

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,然后选择 + New 链接。 如果该项目不在侧面板窗格中,请选择 ...更多 ,然后选择所需的项目。
  3. 根据预期的设置填写相应的字段。 选择订阅资源组存储帐户。 若要连接 Dataverse 到 Synapse 工作区,请选择 “连接到工作区 Azure Synapse ”选项。 对于 Delta Lake 数据转换,请选择 Spark 池。
  4. 选择 选择 Enterprise Policy with Managed Service Identity,然后选择 Next
  5. 添加要导出的表,然后选择 Save(保存)。

备注

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

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

故障排除

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

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

已知限制

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

另请参见

Azure Synapse Link for Dataverse什么是?