我有一个管道,用于构建 Web 工件并尝试使用 Azure Pipelines 中提供的 Azure 文件复制任务将它们复制到我的 Azure 存储。过去 2 天我一直在尝试修复此 403 响应,指出存在权限错误。
我正在寻找一种方法来针对 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