结合使用服务标记和 Power BI

可以将 Azure 服务标记与 Power BI 结合使用来启用 Azure SQL 托管实例 (MI),以允许来自 Power BI 服务的传入连接。 在 Azure 中,服务标记是定义的一组 IP 地址,可以将其配置为一个组进行自动管理,以最大程度地降低更新或更改网络安全规则的复杂性。 将服务标记与 Power BI 结合使用,可以启用 SQL 托管实例以允许来自 Power BI 服务的传入连接。

若要成功启用终结点供在 Power BI 服中使用,需要以下配置:

  1. 在 SQL 托管实例中启用公共终结点。
  2. 创建用于允许入站流量的网络安全组规则。
  3. 在 Power BI 中输入凭据。

下面的几个部分将依次介绍这些步骤。

启用公共终结点

此过程的第一个部分是在 SQL 托管实例中启用公共终结点。 执行以下步骤:

  1. 登录到 Azure 门户,然后导航到你的 SQL 托管实例。

  2. 在页面左侧,选择“网络”。

  3. 将“公共终结点(数据)”滑动为“启用”,然后将“最低 TLS 版本”设置为“1.2”。 下图显示了 Azure 门户中的屏幕。

    Screenshot of Azure portal to enable public endpoints.

  4. 选择“保存”以保存设置。

创建网络安全组规则

接下来的几个步骤要求创建用于允许 Power BI 服务入站流量的网络安全组 (NSG) 规则。 可使用 Power BI 的“源服务标记”或使用命令行接口 (CLI) 或 PowerShell 在 Azure 门户中完成此操作。

注意

设置的规则优先级必须高于 4096 deny_all_inbound 规则,这意味着优先级值必须低于 4096。 在下面的示例中,使用的优先级值为 400。

以下 CLI 脚本作为参考示例提供。 有关详细信息,请参阅 az network nsg 规则。 你可能需要根据自己的情况更改多个值,才能使该示例正常工作。 PowerShell 脚本在之后提供。

#login to azure
az login

#set subscription that contains SQL MI instance
$subname = "mysubscriptionname"
az account set --subscription $subname

#set NSG rule for inbound PowerBI traffic

#update $RG to your resource group name
$rg = 'myresourcegroup'
#update $nsg to your Network Security Group name
$nsg = 'nsgresourcename'
# Name the NSG rule
$rule = 'allow_inbound_PowerBI'
#set the priority - this must be higher priority (lower number) than the deny_all_inbound rule
$priority = 400
#specifiy the service tag to use
$servicetag = 'PowerBI'
#specify the public endpoint port defined in step 1
$port = 3342
#set the rule to inbound direction
$direction = 'Inbound'
#set the access type to "Allow"
$access = 'Allow'
#Set the protocol as TCP
$protocol = 'tcp'
#Provide a description for the rule
$desc = 'Allow PowerBI Access to SQL MI for Direct Query or Data Refresh.'
 
#create the NSG rule
az network nsg rule create -g $rg \
--nsg-name $nsg -n $rule --priority $priority \
--source-address-prefixes $servicetag --destination-address-prefixes '*' \
--destination-port-ranges $port --direction $direction --access $access \
--protocol $protocol --description $desc

以下 PowerShell 脚本作为 NSG 规则的另一参考提供。 有关详细信息,请参阅在 PowerShell 中添加网络安全组规则。 你可能需要根据自己的情况更改多个值,才能使该示例正常工作。

#login to azure
Login-AzAccount

#get your subscription ID
Get-AzSubscription

####
#Script to create Network Security Group Rule
###

#enter your subscription ID
Set-AzContext -SubscriptionId "yoursubscriptionID" 

#Provide the resource group for your Network Security Group
$RGname="yourRG"
#Enter the port for the SQL Managed Instance Public Endpoint
$port=3342
#name the NSG rule
$rulename="allow_inbound_PowerBI"
#provide the name of the Network Security Group to add the rule to
$nsgname="yourNSG"
#set direction to inbound to allow PowerBI to access SQL MI
$direction ="Inbound"
#set the priority of the rule. Priority must be higher (ie. lower number) than the deny_all_inbound (4096)
$priority=400
#set the service tags for the source to \u201cPowerBI\u201d
$serviceTag = "PowerBI"

# Get the NSG resource
$nsg = Get-AzNetworkSecurityGroup -Name $nsgname -ResourceGroupName $RGname

# Add the inbound security rule.
$nsg | Add-AzNetworkSecurityRuleConfig -Name $rulename -Description "Allow app port" -Access Allow `
    -Protocol * -Direction $direction -Priority $priority -SourceAddressPrefix $serviceTag -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange $port

# Update the NSG.
$nsg | Set-AzNetworkSecurityGroup 

在 Power BI 中输入凭据

该过程的最后一部分是在 Power BI 服务中输入凭据。

  1. 登录到 Power BI 服务,然后导航到包含使用 SQL 托管实例的数据集的工作区。 在下面的示例中,该工作区称为 ASAdataset,数据集称为“Contoso SQL MI 演示”。

  2. 从右上角选择“设置”,然后从下拉菜单中选择“设置”。

    Screenshot of the settings dropdown menu.

  3. 在“数据集”下,展开“数据源凭据”部分。

    Screenshot of the edit credentials option in the Datasets tab.

  4. 选择“编辑凭据”链接。 在出现的对话框中,输入有效的凭据。

保存设置再退出。 SQL 托管实例现在已配置为允许来自 Power BI 服务的传入连接。