PowerBi 与 Azure Key Vault 中的 Data Lake 和访问密钥

问题描述 投票:0回答:1

要求:我正在寻找一种链接我的Power BI的方法,该方法使用数据湖作为基于环境的数据源。 我们希望将 Power BI 语义模型连接到基于环境(dev/staging/prod)的数据湖。应通过脚本在 CI/CD 管道中设置动态参数。对于数据湖 URL,这已经成功完成,但我正在努力使用服务原则设置访问密钥。

我做了什么:

我尝试直接使用带有密钥的 PowerBI API,但出现错误

$dataSourceCredentialsUrl = "https://api.powerbi.com/v1.0/myorg/groups/${workspaceId}/datasets/${datasetId}/Default.UpdateDatasources"
$dataSourceCredentials = @{
    dataSourceConnections = @(
        @{
            connectionDetails = @{
                url = "https://vtsonlinetestdatalake.dfs.core.windows.net"
            }
            credentialDetails = @{
                credentialType = "Key"
                credentials = @{
                    key = $clientSecret
                }
                privacyLevel = "None"
            }
        }
    )
}
Invoke-RestMethod -Uri $dataSourceCredentialsUrl -Method Post -Body (ConvertTo-Json $dataSourceCredentials) -ContentType 'application/json' -Headers $headers

错误:“应用程序无法访问 API”。

实际上,我不想将密钥放在脚本中的某个位置,而是在带有参数的 M 查询中添加一些连接(在我的情况下也与数据湖 URL 一起使用),然后根据环境切换 Azure Key Vault。

有人有想法或更好的方法吗?

powerbi azure-keyvault azure-data-lake powerbi-datasource
1个回答
0
投票

只是将此作为答案。

由于不支持

adls gen2
,因此需要使用此处提到的更新组中参数API调用。

这里是如何进行更新参数API调用的示例。

$body = @{
    updateDetails = @(
        @{
            name = "ADLS_Connection"
            newValue = "https://<prod_account>.dfs.core.windows.net/<prod_container>"
        }
    )
}
Invoke-RestMethod -Uri $apiUrl -Method POST -Body ($body | ConvertTo-Json -Depth 10) -Headers $headers -ContentType "application/json"

您需要在

name
中提供要更改的字段名称 以及
newValue
中的更新值。

© www.soinside.com 2019 - 2024. All rights reserved.