相关疑难解决方法(0)

Azure DevOps 管道无法复制到 Azure 存储

我有一个管道,用于构建 Web 工件并尝试使用 Azure Pipelines 中提供的 Azure 文件复制任务将它们复制到我的 Azure 存储。过去 2 天我一直在尝试修复此 403 响应,指出存在权限错误。

  • 我有该管道的服务连接。
  • 服务连接应用程序注册在 API 权限中具有 Azure 存储的 user_impersonation
  • 服务连接应用程序注册具有目标存储帐户、资源组和订阅的“存储 Blob 数据贡献者”和“存储 Blob 数据所有者”。

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

azure azure-active-directory azure-devops azure-pipelines

2
推荐指数
1
解决办法
5552
查看次数

如何针对 Python 中的 Azure 存储 blob 对用户进行身份验证?

我正在寻找一种方法来针对 Azure blob 容器对用户进行身份验证。示例代码(是的,新手警报)工作得很好,使用存储帐户的访问密钥,但这感觉不舒服,就像将整个存储帐户的完全控制权交给任何窃取凭据的人一样。

身份验证示例(来自https://azure.microsoft.com/en-us/resources/samples/storage-python-getting-started/)如下所示:

block_blob_service = BlockBlobService(account_name='<acc>', account_key='<key>')
Run Code Online (Sandbox Code Playgroud)

我在 Active Directory 中设置了一个服务用户,该用户在存储帐户中具有限制其使用 blob 容器的角色;它的目的是将新项目写入一个特定的容器中。

我想在 python 脚本中使用该用户的凭据,以便如果它泄漏,则无法访问其他存储资源。有没有办法根据资源/ID 组合生成访问密钥,或者类似的方法来实现?我一直在浏览 Azure Python API 文档,但没有取得任何进展。

编辑:我取得了一些进展。我已经创建了一个具有适当 IAM 限制的服务主体。当我调用它时,这似乎登录成功:

credentials = ServicePrincipalCredentials( client_id=<>, secret=<>, tenant=<>)
print(credentials)
Run Code Online (Sandbox Code Playgroud)

这给了我一个对象:

<msrestazure.azure_active_directory.ServicePrincipalCredentials object at 0x7f34f52668d0>
Run Code Online (Sandbox Code Playgroud)

如果我给它不正确的凭据,则会出现错误。所以,太好了,我有一个凭证对象。怎么办?我找不到将其输入 BlockBlobService 的方法。

python azure azure-storage azure-storage-blobs azure-active-directory

1
推荐指数
1
解决办法
2628
查看次数