通过 AAD SSO 和 MFA 将 Power BI 转换为 Snowflake

时间:2021-02-02 04:24:11

标签: azure-active-directory powerbi single-sign-on snowflake-cloud-data-platform multi-factor-authentication

我们正在尝试使用 Azure Active Directory (AAD) 单点登录 (SSO) 将 Power BI Desktop 连接到我们的 Snowflake 实例,但遇到了问题。目前我们最好的猜测是,这是因为我们在 AAD 中使用了多因素身份验证 (MFA)。

序言

  1. 我们按照 Microsoft 在此链接中的说明进行操作:https://docs.microsoft.com/en-us/power-bi/connect-data/desktop-connect-snowflake
  2. 并通过此链接在 Snowflake 中执行准备工作:https://docs.snowflake.com/en/user-guide/oauth-powerbi.html
  3. 我们指定了雪花服务器 contoso_dw.canada-central.azure.snowflakecomputing.com 和仓库 DEV_WH
  4. 我们指定了直接查询,因为不支持导入(每个 https://docs.microsoft.com/en-us/power-bi/connect-data/desktop-connect-snowflake
  5. 我们验证了用户可以使用 SSO 直接登录雪花界面
  6. 我们使用的是 Power BI 桌面版 2.88.1385.0 64 位(2020 年 12 月)<-- 撰写本文时的最新版本。

问题

我们验证了用户能够使用 AAD SSO 和 MFA 直接连接到雪花。我们验证了雪花 UI 和 Power BI Desktop 中指定的服务器和仓库是否相同。我们在 Power BI 中提示输入凭据时指定 Microsoft 帐户,它确实提示通过 Microsoft 登录,这似乎成功了。 尽管如此,我们还是收到了以下错误:

<块引用>

ODBC: ERROR [28000] 指定的用户名或密码不正确。

Incorrect username or password was specified.

我们注意到 https://docs.snowflake.com/en/user-guide/oauth-powerbi.html#error-messages 此处列出了此特定错误,但我们已将其视为不负责任,因为用户可以使用相同的 AAD SSO 凭据直接登录到 Snowflake 网络用户界面。

我们怀疑这是因为我们的 AAD 有 MFA 要求。有没有其他人经历过同样的行为?任何人都可以验证这是否是 MFA 副作用?

1 个答案:

答案 0 :(得分:1)

Snowflake 门户的 SSO 登录与 PowerBI 中的 SSO 不同。

您需要在 Azure 门户中配置两个 OAuth 应用注册,如 https://docs.snowflake.com/en/user-guide/oauth-azure.html 中所述。仔细阅读说明,您确实需要按照该文章中的说明创建两个应用注册。

当您完成“第 4 步:在 Snowflake 中创建 OAuth 授权服务器”时,请使用以下命令创建与 Snowflake 的安全集成。它来自 https://docs.snowflake.com/en/user-guide/oauth-powerbi.html 。如果您遵循上一篇文章,则需要 信息。

create security integration powerbi
    type = external_oauth
    enabled = true
    external_oauth_type = azure
    external_oauth_issuer = '<AZURE_AD_ISSUER>'
    external_oauth_jws_keys_url = 'https://login.windows.net/common/discovery/keys'
    external_oauth_audience_list = ('https://analysis.windows.net/powerbi/connector/Snowflake')
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'login_name'
    external_oauth_any_role_mode = 'ENABLE';

PowerBI 用户无法更改他们的角色,因此请确保他们在 Snowflake 中的默认角色与您在第 1 步中配置的相同,以显示或配置您的 OAuth AppRole 允许任何如下角色:

{
            "allowedMemberTypes": [
                "Application"
            ],
            "description": "PowerBI users",
            "displayName": "PowerBI Users",
            "id": "<your unique id here>",
            "isEnabled": true,
            "lang": null,
            "origin": "Application",
            "value": "session:ROLE:ANY"
        }

我的最后一条错误消息是用户没有授予角色(他们确实这样做了),但是当我在 Snowflake 上重新授予用户角色时,它终于起作用了。

让 PowerBI + Snowflake + Azure AD SSO 一起工作很痛苦,但这是可能的。 MFA 也能正常工作。

您可能需要将 AAD 用户添加到您在 Azure 门户企业应用程序的第 2 步中创建的应用程序。不过我还没有测试过,我自己的帐户可以使用,因为我是我刚刚创建的应用程序的所有者。

相关问题