【问题标题】:Using Azure managed Identities to access Azure SQL DB使用 Azure 托管标识访问 Azure SQL DB
【发布时间】:2020-05-25 13:08:25
【问题描述】:

有没有办法通过 Linux VM 使用 Azure 托管标识来访问 Azure SQL DB?我能找到的只是这个文档https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-sql,它专门针对 Windows 虚拟机。是否有用于 Linux 机器的文档化分步方法?

【问题讨论】:

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


    【解决方案1】:

    支持使用 Linux webapp 中的托管标识进行 SQL 访问。 Use a Windows VM system-assigned managed identity to access Azure SQL tutorial 非常适用于 Linux,只需关闭代码示例并使用以下内容:

    var azureServiceTokenProvider = new AzureServiceTokenProvider();
    var accessToken = await azureServiceTokenProvider.GetAccessTokenAsync("https://database.windows.net/");
    
    using
    var sqlConnection = new SqlConnection(configuration.GetConnectionString("Default")) {
     AccessToken = accessToken
    };
    using
    var sqlCommand = new SqlCommand("SELECT @@VERSION", sqlConnection);
    await sqlConnection.OpenAsync();
    var version = (string) await sqlCommand.ExecuteScalarAsync();
    

    完整代码可用here,只需将连接字符串替换为您的。

    【讨论】:

    • 感谢阿尔弗雷多的回复。将您的代码与 Windows VM docs.microsoft.com/en-us/azure/active-directory/… 的访问数据步骤进行比较,其中指定了 Azure SQL 服务器名称。还是在您的代码中不需要?
    • @Nana 是。在我的代码中,所有连接字符串都是从配置中检索并在 SqlConnection 构造函数中设置的:new SqlConnection(configuration.GetConnectionString("Default"))。检查appsettings.json 文件中的“默认”命名连接字符串。
    【解决方案2】:

    托管标识似乎不支持 Linux VM 访问 Azure SQL DB。

    有一个类似的问题here。还有一个使用跨平台.NET核心库的解决方法,你可以参考it

    【讨论】:

    • 感谢帕梅拉的回复
    • 嗨帕梅拉。请看我的回答。
    • @Alfredo-MSFTIdentity 也许我误解了它,因为我找不到关于它的官方文档。谢谢你的回答。
    猜你喜欢
    • 2022-08-02
    • 2022-11-10
    • 2022-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2021-04-07
    • 1970-01-01
    • 2020-04-12
    相关资源
    最近更新 更多