使用 Python 在 Azure 函数中使用 DefaultAzureCredential()

时间:2021-04-27 08:55:18

标签: python azure-functions azure-sql-database azure-managed-identity

我正在尝试在 Azure 函数中使用 DefaultAzureCredential() 和 python 连接到 Azure SQL。

到目前为止我发现的是:https://github.com/felipefandrade/azuresqlspn。我正在尝试使用托管身份进行身份验证。

有没有办法在 python 代码中将 DefaultAzureCredential() 与 SQLAlchemy 一起使用,并让它在 Visual Studio 代码中工作以进行本地开发?而不是使用 CLIENT_ID、TENANT_ID 和 CLIENT_SECRET?

1 个答案:

答案 0 :(得分:0)

我无法谈论与 SQLAlchemy 的集成或 Azure SQL 对 Azure Active Directory 访问令牌的要求(您可能会发现 sqlalchemy/6031 有帮助)。但我可以说是的,DefaultAzureCredential 可以在令牌获取方面做你想做的事,前提是满足一些先决条件:你的 Functions 应用程序必须配置为托管标识,你必须在 VS Code 中登录到 Azure,以及环境您提到的变量不得在任一环境中设置(它们用于配置服务主体,即不是您想要的)。

DefaultAzureCredential 迭代一系列凭据,直到提供令牌(package readme 记录这些凭据的顺序)。鉴于上述先决条件,托管标识将在您的 Azure 函数中成功,但在本地失败,从而导致凭据尝试 VS Code。请注意,您将验证不同的身份,因此您需要确保托管身份和登录到 VS Code 的用户都有权访问 Azure SQL。