【问题标题】:Azure SQL MSI with PHP (PDO)Azure SQL MSI 与 PHP (PDO)
【发布时间】:2020-07-27 21:04:32
【问题描述】:

问题:

我正在构建一个 RESTful API。我正在使用的 DBA 设置了一个 MSI 来访问生产数据库,该数据库位于 Azure SQL 实例上。我知道 MSI 是基于令牌的,并且在 https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-sql 上,它有一个用 C# 编写的示例。这不能很好地转换为 PHP,主要是因为我不熟悉 C#。

此外,我正在使用 Lumen 开发 API,它使用 PDO 来处理连接。据我所知,PDO 没有内置必要的功能来处理 Azure SQL 使用 MSI 所需的专用连接字符串。 Azure Sql Db connection string when using MSI

以往的研究:

我几乎阅读了 Microsoft 发布的有关托管标识的每篇文章,并在 Internet 上搜索了使用 PHP 托管标识的任何人。不用说,选择很少,对于这个特定的用例来说更是如此。

我知道可以使用 Key Vault 并将连接字符串存储为便笺,但我 99% 确定系统管理员不希望发生这种情况。 如果我们仍然要将凭据存储在其他地方,那么拥有 MSI 有什么意义?

最坏的情况,我想我可以提出我需要使用传统的用户/密码身份验证流程的建议,尽管希望所有新项目都使用 MSI 的权力(我们主要是微软商店,只有一小部分PHP 工作)。

发布这是我在提出使用 Key Vault 至少存储生产凭据的提议之前的最后一次努力;在我看来,存储连接字符串的想法是一种反模式。

从根本上说,如果有人可以使用 MSI 提供示例 PDO 连接字符串(sqlsrv 驱动程序),它可能会让我朝着正确的方向前进。任何其他可以提供的示例,甚至是我如何在这种情况下使用 MSI 的指导都将不胜感激。

【问题讨论】:

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


【解决方案1】:

根据https://docs.microsoft.com/en-us/sql/connect/php/azure-active-directory?view=sql-server-ver15,PDO 确实具有所需的功能。回答这个问题是因为原始问题的范围已偏离其最初的重点。

我现在在 https://github.com/laravel/framework/discussions/33678 处打开了一个支持问题,以确定在 Laravel 中使用 MSI 的最佳方法,因为根据代码/文档没有明显的方法。

【讨论】:

    猜你喜欢
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2014-02-04
    相关资源
    最近更新 更多