PHP 访问私有 Azure 存储容器
PHP Access to Private Azure Storage Container
我的 PHP 应用程序托管在 Azure VM 中,需要访问存储在私有 Azure 存储容器中的图像。
有人实施过成功的方法吗?我有 3 个想法(如下)。
选项 1 - 使用 Azure 托管身份
- 为应用程序提供托管身份
- 授予容器的 RBAC 读取权限
- 在 PHP 中向 VM 实例元数据端点发出 curl 请求以获取访问令牌
- 在所有图像请求中使用此令牌(我将如何在我的应用程序中保留令牌?)
选项 2 - 使用 Azure BLOB 存储 SDK PHP
- 使用 Azure Blob 存储 SDK 检索图像
- 这需要将存储密钥从我的保管库返回到应用程序
选项 3 - 使用 Azure 共享访问签名
- 在 PHP 中为每个图像生成一个新的 SAS
- 需要存储帐户密钥
谢谢!
根据您的需求和描述,我认为使用Azure Managed Identity访问Azure存储比其他方式更好。因为,根据你的描述,如果我们使用第二种或第三种方式,我们需要从Azure key vault中获取存储密钥。它还需要我们使用 MSI 来访问它。另外,对于第三种方式,我们需要考虑sas token的生命周期。所以我建议你使用 MSI 访问 Azure 存储。
关于如何使用MSI访问Azure存储,请参考document。
获取令牌
Method: GET
URL: http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://storage.azure.com/
Headers: Metadata : true
- 测试。比如我把剩下的api调用成get blob
Method: GET
URL: https://myaccount.blob.core.windows.net/mycontainer/myblob
Headers:
x-ms-version: 2019-02-02
Authorization : Bearer <access_token>
我的 PHP 应用程序托管在 Azure VM 中,需要访问存储在私有 Azure 存储容器中的图像。
有人实施过成功的方法吗?我有 3 个想法(如下)。
选项 1 - 使用 Azure 托管身份
- 为应用程序提供托管身份
- 授予容器的 RBAC 读取权限
- 在 PHP 中向 VM 实例元数据端点发出 curl 请求以获取访问令牌
- 在所有图像请求中使用此令牌(我将如何在我的应用程序中保留令牌?)
选项 2 - 使用 Azure BLOB 存储 SDK PHP
- 使用 Azure Blob 存储 SDK 检索图像
- 这需要将存储密钥从我的保管库返回到应用程序
选项 3 - 使用 Azure 共享访问签名
- 在 PHP 中为每个图像生成一个新的 SAS
- 需要存储帐户密钥
谢谢!
根据您的需求和描述,我认为使用Azure Managed Identity访问Azure存储比其他方式更好。因为,根据你的描述,如果我们使用第二种或第三种方式,我们需要从Azure key vault中获取存储密钥。它还需要我们使用 MSI 来访问它。另外,对于第三种方式,我们需要考虑sas token的生命周期。所以我建议你使用 MSI 访问 Azure 存储。
关于如何使用MSI访问Azure存储,请参考document。
获取令牌
Method: GET
URL: http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://storage.azure.com/
Headers: Metadata : true
- 测试。比如我把剩下的api调用成get blob
Method: GET
URL: https://myaccount.blob.core.windows.net/mycontainer/myblob
Headers:
x-ms-version: 2019-02-02
Authorization : Bearer <access_token>