如何将私有链接用于 Synapse 工作区 SQL On-Demand?

Posted

技术标签:

【中文标题】如何将私有链接用于 Synapse 工作区 SQL On-Demand?【英文标题】:How can you use Private links for Synapse workspace SQL On-Demand? 【发布时间】:2021-02-22 04:12:17 【问题描述】:

我的工作区启用了托管 vnet。我已设法按照指南配置到默认 ADLS Gen 2 的专用链接:

https://docs.microsoft.com/en-us/azure/synapse-analytics/security/how-to-create-managed-private-endpoints

专用链接连接在复制活动(工作区中的管道)中工作。但是,从无服务器池访问存储帐户似乎不起作用。有这方面的指南吗?对于 AAD 直通、SAS 令牌或托管身份的使用是否有任何要求?目前完全支持吗?

错误:文件“”无法打开,因为它不存在或被另一个进程使用。

此错误是由 AD 直通和具有托管标识方案的数据源引起的。我可以使用“访问受信任的 Microsoft 服务”复选框(在 ADLS 中)让连接通过托管标识工作,因此应该正确配置它们。但是,当阻止对 ADLS 的访问时,连接将停止工作。

编辑:根据此链接:https://docs.microsoft.com/en-us/azure/synapse-analytics/sql/develop-storage-files-storage-access-control?tabs=user-identity ,访问受防火墙保护的存储帐户只能使用托管标识和“允许受信任的 Microsoft..”设置打开。这是否也适用于私有链接,这意味着访问防火墙后面的存储帐户的唯一方法是允许访问 Microsoft 服务,并且私有链接不能用于无服务器池?

【问题讨论】:

【参考方案1】:

是的,它也适用于私人链接。

正如您在 article 中看到的,目前您可以仅使用托管身份通过防火墙保护的存储帐户运行查询。

在接下来的时间里,您可以选择使用更方便的用户身份(AAD 传递)来运行这些查询。

更新 1

现在您可以在存储帐户防火墙设置中为 Azure Synapse 工作区配置例外。完整解释见official docs

简短的总结:

1.打开 PowerShell 或安装 PowerShell

2。安装更新的 Az。存储模块:

Install-Module -Name Az.Storage -RequiredVersion 3.0.1-preview -AllowPrerelease

确保您使用的是 3.0.1 或更高版本。您可以通过运行以下命令检查您的 Az.Storage 版本:

Get-Module -ListAvailable -Name  Az.Storage | select Version

3.连接到您的 Azure 租户:

Connect-AzAccount

4.在 PowerShell 中定义变量:

资源组名称 - 您可以在 Azure 门户的 Synapse 工作区概述中找到此名称。 帐户名称 - 受防火墙规则保护的存储帐户的名称。 租户 ID - 您可以在 Azure Active Directory 的 Azure 门户的租户信息中找到此 ID。 资源 ID - 您可以在 Azure 门户的 Synapse 工作区概述中找到此 ID。
$resourceGroupName = "<resource group name>"
$accountName = "<storage account name>"
$tenantId = "<tenant id>"
$resourceId = "<Synapse workspace resource id>"

确保资源 ID 与此模板匹配。

resourcegroups 必须小写。一个资源 id 的示例:

/subscriptions/subscription-id/resourcegroups/resource-group/providers/Microsoft.Synapse/workspaces/name-of-workspace

5.添加存储网络规则:

Add-AzStorageAccountNetworkRule -ResourceGroupName $resourceGroupName -Name $accountName -TenantId $tenantId -ResourceId $resourceId

6.验证该规则已应用于您的存储帐户:

$rule = Get-AzStorageAccountNetworkRuleSet -ResourceGroupName $resourceGroupName -Name $accountName
$rule.ResourceAccessRules

在接下来的时间里,将提供从 Azure 门户 UI 配置存储帐户防火墙的选项。


更新 2

通过 Azure 门户 UI 进行的配置是 here!

    在 Azure 门户中搜索您的存储帐户。 转到“设置”部分下的“网络”。 在“资源实例”部分中,为 Synapse 工作区添加一个例外。 选择 Microsoft.Synapse/workspaces 作为资源类型。 选择您的工作区名称作为实例名称。 点击保存。

【讨论】:

以上是关于如何将私有链接用于 Synapse 工作区 SQL On-Demand?的主要内容,如果未能解决你的问题,请参考以下文章

将 Azure Databricks 增量表迁移到 Azure Synapse SQL 池

如何通过 Synapse 的 Spark 池将数据帧数据附加到专用的 SQL 池中?

Azure Synapse 文件无法打开错误

我正在尝试在 azure synapse 中创建链接服务(休息),但我没有授权

如何写入 Synapse 专用 sql 池

将数据从 Azure SQL 数据库实时复制到 Synapse