【发布时间】: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 的指导都将不胜感激。
【问题讨论】:
-
一位同事将我链接到docs.microsoft.com/en-us/sql/connect/php/…,将根据发生的情况更新此问题。
标签: php azure pdo azure-sql-database azure-managed-identity